【问题标题】:Checkbox if in 2 mysql queries using php复选框是否在 2 个使用 php 的 mysql 查询中
【发布时间】:2014-12-08 20:50:33
【问题描述】:

我有 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>”;

}

【问题讨论】:

  • 您可以使用array_intersect 来捕捉它们,两者都有什么。
  • 两者中的每个公司都有一个“id”,$listcompanies 还包含公司名称。不熟悉array_intersect,我怎么能用它来检查一个复选框?
  • 我认为你在 comaprision 中有一个错误 // if ($i == $listcompanies['companyid']),这里 $i 有一个值数组而不是公司 ID....
  • 谢谢 V Arun,是的,我认为你是对的,我认为这就是 Rana 在他的解决方案下面的回答中所显示的内容,但我仍然无法选中超过 1 个复选框。就像数组不包含所有数据一样。

标签: php mysql checkbox


【解决方案1】:

从第一个查询只返回例如 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>";

        }

【讨论】:

  • 嗨拉娜。我刚刚尝试了你的代码,它给了我同样的问题。它“勾选”了它应该勾选的第一个复选框,但没有其他任何内容。
  • 如果我自己制作数组,即 $companysolicitor = array("Smith", "John", "Doe");那么这似乎工作正常,那么这是否表明mysql查询错误?但对我来说看起来不错,并且在检查数据库时选择了超过 1 个项目,有什么想法吗?
  • 所以看来我的代码和你的代码几乎是正确的,我缺少的是我需要将第一个查询转换为数组,以便“in_array”语句可以遍历整个数组和不仅仅是由 mysql_fetch_array 语句创建的第一项。因此,以下解决了我的问题:code $companysolicitor = array(); while ($row = mysql_fetch_array($companysolicitors)) { $companysolicitor[] = $row ['cmp_id']; } code
  • 抱歉回复晚了,您需要更多帮助还是您找出问题所在?
  • 嗨拉娜。对不起,我现在没事。你的解决方案给了我同样的问题,我已经遇到了,但经过进一步的试验和错误,我发现第一个 mysql 查询需要变成所有结果的数组,但事实并非如此(我没有意识到) ,一旦我这样做了,一切都好。
猜你喜欢
  • 2013-01-29
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 2013-02-21
  • 1970-01-01
相关资源
最近更新 更多