为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕村9548890 2022-07-16 10:51:26
我正在尝试重新编写此代码,以便下拉菜单按字母顺序排列:$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";}在此代码中,查询从数据库中返回一些行,其中 customer 是不按任何字母顺序排列的数字代码。在代码的更下方,调用了一个函数,该函数从表的pdo_getName列和 id 中获取并查询数据库,返回客户的字符串化名称。因为直到后来循环之后才检索到名称,所以我无法找出一种可以按字母顺序排列. 我尝试将and 下拉代码放入关联数组中,然后按namecustomer$row['customer']$activeProjectDropdown$customerName$customerName并将所有内容连接成一个字符串,但这不起作用,因为有重复的键。在同一条路径上,我可能有一个嵌套数组,但我认为必须有一个更简单的解决方案我错过了。谢谢您的帮助!
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

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


这将提高性能并简化代码。


$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";

}


查看完整回答
反对 回复 2022-07-16
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

尝试这个:

SELECT ... ORDER BY customer ASC, job_name

这首先按客户(升序)对所有内容进行排序,然后在两行或更多行的客户字段相等时按作业名称(升序,这是默认值)对所有内容进行排序。

更多信息在这里


查看完整回答
反对 回复 2022-07-16
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信