我正在尝试将内爆字段的内容显示为多选,但只有第一个必需选项被标记为选中。
我已经使用复选框对它进行了测试,它可以正常工作,但是我无法使其与多选功能一起使用。
我有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 if(in_array($ row ['Country'],$ Country_array))echo'selected';?>> <?php echo $ row ['Country']; ?>
<?php}
}
回声“ <输入类型='重置'名称='重置'> <输入类型='提交'名称='修改'值='修改'> < / tr> “;
//免费结果集
mysqli_free_result($ result);
}其他{
echo“ $ sql 1.未找到与您的查询匹配的记录。”;
}
}其他{
echo“错误:无法执行$ sql。” mysqli_error($ link);
}
//关闭连接
// mysqli_close($ link);
?>
1 个答案:
答案 0 :(得分:0)
有几个问题。
$row
用作两个查询的结果。
while($row = mysqli_fetch_array($result)){ ...
while($row = mysqli_fetch_array($result2 ,MYSQLI_ASSOC ) ){ ... }
使结果变量唯一。
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';?>