请查看此代码:
$current_sql = mysql_query("SELECT * FROM `product_categories` WHERE `product`='{$_GET['id']}'");
$all_sql = mysql_query("SELECT * FROM `categories`");
$in = mysql_fetch_array($current_sql);
while($ca = mysql_fetch_array($all_sql)){
echo("<label><input type=\"checkbox\" name=\"categories[]\" value=\"".$ca['ID']."\" class=\"cat_check\"");
if($edit){
if(in_array($ca['ID'], $in)){
echo(" checked=\"checked\"");
}
}
echo("> " . $ca['category'] . "</label><br/>\n");
}
这是输出:
<label><input type="checkbox" name="categories[]" value="1" class="cat_check" checked="checked"> PS3 Games</label><br/>
<label><input type="checkbox" name="categories[]" value="16" class="cat_check"> Category 2</label><br/>
<label><input type="checkbox" name="categories[]" value="17" class="cat_check" checked="checked"> Category 3</label><br/>
<label><input type="checkbox" name="categories[]" value="18" class="cat_check"> Category 4</label><br/>
<label><input type="checkbox" name="categories[]" value="19" class="cat_check"> Category 5</label><br/>
问题是只有 checkbox value="17"应该被选中,这里有 2 个 MySQL 数据库是结构:
categories:
ID | name
1 PS3 Games
16 Category 3
17 Category 4
18 Category 5
19 Category 6
product_categories
category | product
1 20
17 1
请帮忙!!
更新:
抱歉忘了补充:
$_GET['id'] = 1
最佳答案
代替
$in = mysql_fetch_array($current_sql);
做
while ($prod_cat = mysql_fetch_array($current_sql)) {
$in[] = $prod_cat['cat_id']; // where cat_id is the category ID in product_categories table
}
基本上问题是mysql_fetch_array返回 2 个数组,我猜你有类似 array([0] = 1, [1] =17, etc ...)
的东西。这导致要检查两个类别。如果您在代码中 print_r $in,您就会明白我的意思。
关于PHP 单循环遍历 2 个 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6505742/