我有一段时间遇到这个问题,上次可能没有正确地提出这个问题。再次涉足我,我仍然非常困惑和困惑。
我有一个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语句以相反的顺序工作以免检查它然后取消选中它。
我在上周被另一位用户从头开始指出,虽然我已经开始阅读一些教程了,但我还是需要将这个项目的最后一部分钉入... ...
答案 0 :(得分:1)
我建议更改您的查询策略 - 只使用一个而不是两个。您可以从下面的查询结果中检查选择列表的第二个成员 - lists
。car
的值,以获取空值。如果它为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");