<select multiple =“”>选项未从SQL查询中突出显示

时间:2018-11-15 09:56:58

标签: php html sql

我正在尝试将内爆字段的内容显示为多选,但只有第一个必需选项被标记为选中。 我已经使用复选框对它进行了测试,它可以正常工作,但是我无法使其与多选功能一起使用。 我有2个表格-第一个是国家/地区列表(国家/地区代码和国家/地区),第二个是产品的所有信息,其中“国家/地区”内嵌到一个名为COO的字段中。 如果我打印阵列,则会显示需要突出显示的国家/地区,但未选中它们。所附的图像是当前正在生成的结果。应该突出显示前5个国家,但只有第一个是。 请放轻松-我仍在设法解决所有这些问题! 谢谢    <?php include('../ config.php'); $ Baseid = $ _ REQUEST ['id']; ?> <?php //尝试选择查询执行 $ sql =“ SELECT * FROM ProductBaseList WHERE Baseid ='$ Baseid'”; $ supname = $ row [“ SupplierName”]; if($ result = mysqli_query($ link,$ sql)){     if(mysqli_num_rows($ result)> 0){         回声“ <表单方法=后动作= opt3amend2.php> <输入类型=隐藏名称=基序值= $基序> <表宽度= 700边框= 0单元格间隔= 10单元格填充= 10>“;             回声“ ”;                     while($ row = mysqli_fetch_array($ result)){                                             $ Country_array = explode(',',$ row ['COO']);                  ?>                                     <选择多个名称= COO []大小= 10>         <?                 $ query2 =“ SELECT * FROM Countrys ORDER BY Country”;                 $ result2 = mysqli_query($ link,$ query2);              $ num = mysqli_num_rows($ result2);              while($ row = mysqli_fetch_array($ result2,MYSQLI_ASSOC)){                  // echo $ row ['Country'];             ?>                                                                                                       <?php}                                         }         回声“ <输入类型='重置'名称='重置'> <输入类型='提交'名称='修改'值='修改'> < / tr> “;         //免费结果集         mysqli_free_result($ result);     }其他{         echo“
$ sql 1.未找到与您的查询匹配的记录。”;     } }其他{     echo“错误:无法执行$ sql。” mysqli_error($ link); } //关闭连接 // mysqli_close($ link); ?>

1 个答案:

答案 0 :(得分:0)

有几个问题。

  1. $row用作两个查询的结果。

    while($row = mysqli_fetch_array($result)){ ...
    
    while($row = mysqli_fetch_array($result2 ,MYSQLI_ASSOC ) ){ ... }
    

    使结果变量唯一。

  2. in_array执行区分大小写的搜索。另外,如果国家/地区名称前后有空格,则不会匹配。添加清洁方法如下

    $Country_array = explode(',',$row['COO']);
    // make it lower case and trim values of array
    $Country_array = array_map('trim', array_map('strtolower', $Country_array));
    

    然后在第二个while循环中,对单个国家/地区执行相同的操作,

    $countryCompare = trim(strtolower($row['Country']));
    
    <?php if(in_array($countryCompare, $Country_array)) echo 'selected';?>