使用数据库值填充下拉列表并拆分字母排序

时间:2013-02-26 10:39:51

标签: php sql postgresql

我将组织列表填入我网站的下拉列表中。这个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>";
   }

5 个答案:

答案 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
");