我将组织列表填入我网站的下拉列表中。这个PHP很简单,我没有遇到任何问题。
但是,该列表可能会变得非常庞大,我想将列表拆分为三个字母部分。 (例如,A-G,H-S,T-Z)。如何修改下面的代码以适应用A-G对第一个下拉列表进行排序(然后我可以将相同的逻辑应用于其他两个)。
$sql = pg_query("SELECT name FROM institution ORDER BY name ASC");
while($row = pg_fetch_array($sql)){
echo "<option value=\"organisation1\">" .$row ['name'] . "</option>";
}
答案 0 :(得分:1)
如果最终用户可能知道组织的名称,那么您最好使用搜索框,并根据键入的字母填充一些JS。
否则,您可能希望有一个额外的初始下拉列表,以按逻辑分类而不是按字母顺序(例如国家,城市,部门)拆分列表
答案 1 :(得分:0)
这应该是A-G和H-S的诀窍
$AG = $HS = '';
$sql = pg_query("SELECT name FROM institution ORDER BY name ASC");
while($row = pg_fetch_array($sql)){
$char =chr(strtoupper(substr($row ['name'],0,1)));
if($char<=71){
$AG .= "<option value=\"organisation1\">" .$row ['name'] . "</option>";
}
if(($char>71) && ($char <= 83)){
$HS .= "<option value=\"organisation1\">" .$row ['name'] . "</option>";
}
}
echo $AG.$HS;
使用chr获取第一个字符的ascii值。创建条件以向子部分添加字符串。您可以在这里查看ASCII值:
http://www.asciitable.com/
答案 2 :(得分:0)
$cityarray = array('axx', 'bxx','txx');
$group1 = array('a','b','c','d','e','f');
$group2 = 'construct array with the require alphapet';
$group3 = 'construct array with the require alphapet';
foreach (cityarray as $city) {
if (in_array($city[0], group1)) {
$group1[] = $city
} else if (in_array($city[0], group2) {
$group2[] = $city
} else if (in_array($city[0], group3) {
$group3[] = $city
}
}
//使用以上三个数组构建下拉列表
答案 3 :(得分:0)
我不是php或postgresql的人,但你需要的是一个简单的编程逻辑。而简单的算法应该足够了。
step1. run a loop through the array to fill dropdowns.
step2. place appropriate conditions inside the loop to fill all the three dropdowns appropriately.
看到这段代码。支持算法。你可能需要为你的语言修剪一下
$sql = pg_query("SELECT name FROM institution ORDER BY name ASC");
$ddlClass='.dropdown1';
while($row = pg_fetch_array($sql)){
$char = chr(strtoupper(substr($row ['name'],0,1)));
if($char>=65 && $char<=71);
$ddlClass= '.dropdown1';
else if($char>=72 && $char<=83);
$ddlClass= '.dropdown2';
else if ($char>=83 && $char <=90)
$ddlClass= '.dropdown3';
$($ddlClass).append("<option value=\"organisation1\">" .$row ['name'] . "</option>");
}
我已经使用jquery来创建你的下拉列表,你可以使用其他任何东西,例如javascript,php来做到这一点。
答案 4 :(得分:0)
$sql = pg_query("
select name
from institution
where name < 'H'
order by name asc
");
$sql = pg_query("
select name
from institution
where name >= 'H' and name < 'T'
order by name asc
");
$sql = pg_query("
select name
from institution
where name >= 'T'
order by name asc
");