我有 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 );
现在它应该返回 array(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>";
}
关于php - 如果在使用 php 的 2 个 mysql 查询中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357714/