Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中创建按字母顺序排列的下拉菜单_Php_Sorting - Fatal编程技术网

如何在PHP中创建按字母顺序排列的下拉菜单

如何在PHP中创建按字母顺序排列的下拉菜单,php,sorting,Php,Sorting,我正在尝试重新编写此代码,以便按字母顺序排列下拉菜单: $activeProjectDropdown.="<option value=''>Select Project</option>"; $getInfo = "SELECT id, customer, job_name, haul_info FROM dispatch_jobs WHERE (:mydate BETWEEN delivery_date AND del

我正在尝试重新编写此代码,以便按字母顺序排列下拉菜单:

$activeProjectDropdown.="<option value=''>Select Project</option>";
$getInfo = "SELECT id, customer, job_name, haul_info 
            FROM dispatch_jobs 
            WHERE (:mydate BETWEEN delivery_date AND delivery_date_end) 
            ORDER BY customer, job_name";

$result=DB::run($getInfo, ['mydate' => $myDate]);
while($row=$result->fetch(PDO::FETCH_BOTH)) {
    if(!empty($row['haul_info'])) {
        $haulinfo = "($row[haul_info])";
    }else{
        $haulinfo = "";
    }

    if($checkit == $row['id']){
        $woot = 'selected=selected';
    }else{
        $woot = '';
    }

    $customerName = pdo_getName('name', 'customer', "$row[customer]");
    $activeProjectDropdown.="<option value='$row[customer]|$row[id]' $woot>$customerName $haulinfo</option>\n";
}
$activeProjectDropdown.=“选择项目”;
$getInfo=“选择id、客户、作业名称、运输信息
从分派工作
式中(:我的交货日期和交货日期之间的日期)
按客户、作业名称订购”;
$result=DB::run($getInfo,['mydate'=>$mydate]);
而($row=$result->fetch(PDO::fetch_两者)){
如果(!空($row['haul\u info'])){
$HALLINFO=“($row[HALL_info])”;
}否则{
$taulinfo=“”;
}
如果($checkit==$row['id'])){
$woot='selected=selected';
}否则{
$woot='';
}
$customerName=pdo_getName('name','customer',“$row[customer]”);
$activeProjectDropdown.=“$customerName$haulinfo\n”;
}

在这段代码中,查询从数据库返回一些行,其中customer是一个数字代码,没有任何字母顺序。在代码的下面,调用了一个名为
pdo_getName
的函数,该函数从
customer
name
表中获取一列,并从
$row['customer']
获取id,然后查询数据库,返回客户的字符串化名称。因为名称直到稍后在循环中才被检索到,所以我很难找到一种方法来按字母顺序排列
$activeProjectDropdown
。我尝试将
$customerName
和下拉代码放入关联数组,然后按
$customerName
对其进行排序,并将所有内容合并到一个字符串中,但由于存在重复的键,因此没有起作用。在同一条路径上,我可能会有一个嵌套数组,但我想一定有一个更简单的解决方案我错过了。谢谢你的帮助

编写一个连接查询并在一个查询中获取所有数据,然后您可以按照我认为您要求的方式对客户名称进行排序

这将提高性能并简化代码

$getInfo = "SELECT dj.id, dj.customer, dj.job_name, dj.haul_info 
                    c.name
            FROM dispatch_jobs dj
                LEFT JOIN customer c ON c.id = dj.customer
            WHERE (:mydate BETWEEN dj.delivery_date AND dj.delivery_date_end) 
            ORDER BY c.name, dj.job_name";
$result=DB::run($getInfo, ['mydate' => $myDate]);

while($row=$result->fetch(PDO::FETCH_BOTH)) {
    if(!empty($row['haul_info'])) {
        $haulinfo = "($row[haul_info])";
    }else{
        $haulinfo = "";
    }

    if($checkit == $row['id']){
        $woot = 'selected=selected';
    }else{
        $woot = '';
    }

    $activeProjectDropdown.="<option value='$row[customer]|$row[id]' $woot>$row[name] $haulinfo</option>\n";
}
$getInfo=“选择dj.id、dj.customer、dj.job\u name、dj.haul\u info
c、 名字
来自dispatch_jobs dj
在c.id=dj.customer上左连接客户c
其中(:dj.delivery_date和dj.delivery_date_end之间的mydate)
按c.name、dj.job_name”排序;
$result=DB::run($getInfo,['mydate'=>$mydate]);
而($row=$result->fetch(PDO::fetch_两者)){
如果(!空($row['haul\u info'])){
$HALLINFO=“($row[HALL_info])”;
}否则{
$taulinfo=“”;
}
如果($checkit==$row['id'])){
$woot='selected=selected';
}否则{
$woot='';
}
$activeProjectDropdown.=“$row[name]$haulinfo\n”;
}
试试这个:

SELECT ... ORDER BY customer ASC, job_name
当两行或更多行的客户字段相等时,将首先按客户(升序)排序,然后按作业名称(升序,这是默认值)排序


更多信息

我们编写一个连接查询并在一个查询中获取所有数据,因为
pdo_getName()
不是普通的PHP,我们大多数人都不知道它在做什么,如果
pdo_getName()
返回到
中的数据库,而
循环,那么我肯定会按照里格斯的建议去做。在同一个查询中查询所有内容。在循环中运行SQL很少是个好主意。请分享该函数的代码,我们可以提供更多帮助。