PHP循环时循环

时间:2014-05-20 13:07:58

标签: php mysql sql

我有一段时间遇到这个问题,上次可能没有正确地提出这个问题。再次涉足我,我仍然非常困惑和困惑。

我有一个MySQL表,我根据这个值(大约200)列出了一系列复选框。

我有另一个MySQL表,其中用户将存储他们的首选项,当列表加载时我希望用户先前在第二个MySQL表中选择的项目是已经分配了指示先前选择的复选标记的复选框。如果你能看到以下内容并指出我正确的方向,我将不胜感激。

$result = mysql_query("SELECT `car` FROM `carlist` ORDER BY variety ASC");
$result2 = mysql_query("SELECT `car` FROM `lists` WHERE `username` = 'Palendrone' ORDER BY variety ASC");

if (!$result) {
    die("Query to show fields from table failed");
}

if (!$result2) {
    die("Query to show fields from table failed");
}

$fields_num = mysql_num_fields($result);
for($i=0; $i<$fields_num; $i++)
{
    $field = mysql_fetch_field($result);
}


$fields_num2 = mysql_num_fields($result2);
for($j=0; $j<$fields_num2; $j++)
{
    $field2 = mysql_fetch_field($result2);
}

while($row = mysql_fetch_row($result))
{

    while($row2 = mysql_fetch_row($result2))
    {

        if("$row2[0]" <> "$row[0]")
        {?><input type="checkbox" value="<?php echo "$row[0]"?>" name="<?php echo "$row[0]"?>" id="<?php echo "$row[0]"?>">
            <label for="<?php echo "$row[0]"?>"><?php echo "$row[0]"?></label>
            <?php
        } else
        {?><input type="checkbox" value="<?php echo "$row[0]"?>" name="<?php echo "$row[0]"?>" checked="yes" id="<?php echo "$row[0]"?>">
            <label for="<?php echo "$row[0]"?>"><?php echo "$row[0]"?></label>
            <?php
        }

    } /* end while */

} /* end while */

我想到了第一个加载主要200个项目的While循环,然后对于该表中的每个输入,它在第二个while循环中交叉检查用户选择表,在该循环中我有if语句以相反的顺序工作以免检查它然后取消选中它。

我在上周被另一位用户从头开始指出,虽然我已经开始阅读一些教程了,但我还是需要将这个项目的最后一部分钉入... ...

1 个答案:

答案 0 :(得分:1)

我建议更改您的查询策略 - 只使用一个而不是两个。您可以从下面的查询结果中检查选择列表的第二个成员 - listscar的值,以获取空值。如果它为null,则不选中复选框,否则为(它存在于第二个表中)。

$result = mysql_query("SELECT `carlist`.`car`, `lists`.`car`  FROM `carlist` left join `lists` on (`carlist`.`car` = `lists`.`car` and `lists`.`username` = 'Palendrone') ORDER BY `carlist`.variety ASC");