我有 2 个 mysql 查询,每个查询列出了一系列公司。 1 个完整列表,1 个较短列表。
我在项目符号列表中显示它们,如果同一家公司在两个查询中,我想选中它旁边的相关复选框。
目前,我可以毫无问题地显示完整列表,然后检查两个列表中的第一个列表,但它不会再检查两个列表中重复的列表。
我尝试过 while 语句,foreach 语句和 in_array,但我认为我一定错过了什么。希望有人能告诉我我的方式错误。
$companysolicitors = mysql_query("SELECT * FROM companyselected WHERE companyid='$companyid'");
$companysolicitor = mysql_fetch_array( $companysolicitors );
$mainquery = mysql_query("SELECT * FROM company”);
while($listcompanies = mysql_fetch_array($mainquery)) {
echo "<input name=‘companies[]' type='checkbox' id='".$listcompanies['companyid']."' data-role='none' value='".$listcompanies['companyid']."’";
foreach ($companysolicitor as $i) { if ($i == $listcompanies['companyid']) { echo ' checked'; } }
echo "><label for='".$listcompanies['companyid']."'><span></span>".$listcompanies['companyname']."</label>”;
}
从
第一个查询只需返回例如cmp_id
喜欢
$companysolicitors = mysql_query("SELECT cmp_id FROM companyselected WHERE companyid='$companyid'");
$companysolicitor = mysql_fetch_array( $companysolicitors );
现在它应该返回数组(1,3,8,...)//这只是一个例子
现在您的第二个查询是正确的
$mainquery = mysql_query("SELECT * FROM company");
while($listcompanies = mysql_fetch_array($mainquery)) {
if(in_array($listcompanies['companyid'], $companysolicitor)){
$checked = 'checked="checked"';
}else{
$checked = null;
}
echo "<input name=‘companies[]' type='checkbox' id='".$listcompanies['companyid']."' data-role='none' value='".$listcompanies['companyid']."' $checked/><label for='".$listcompanies['companyid']."'><span></span>".$listcompanies['companyname']."</label>";
}