我有一个问题要解决,我不确定它是否能以我想到的方式解决。它是一个带有复选框的表单。此表单的目的是允许用户通过选中/取消选中表单复选框从数据库中添加或删除他们喜欢的品牌。我现在面临的挑战是,过去可能已经有用户选择了品牌。我希望页面加载时检查数据库并自动检查数据库中找到的形式的品牌。我查看是否有可能使用jquery,但我卡住了。这是我的代码:
/* == SQL CODE == */
CREATE TABLE IF NOT EXISTS `favoriteBrands` (
`pkFavoriteBrand` int(5) NOT NULL AUTO_INCREMENT,
`fkCompanyID` int(5) NOT NULL,
`Brands` varchar(30) NOT NULL,
PRIMARY KEY (`pkFavorietemerken`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=81 ;
INSERT INTO `favoriteBrands` (`pkFavoriteBrand`, `fkCompanyID`, `Brands`) VALUES
(80, 7, 'Replay'),
(79, 7, 'Pepe Jeans'),
(71, 12, 'Nike'),
(70, 12, 'Le Coq Sportif'),
/* == SQL CODE == */
/* == PHP CODE == */
<?php
$find_fav_brands = " SELECT Brands FROM favoriteBrands WHERE fkCompanyID=$company_id";
$get_brand = mysql_query($find_fav_brands) or die ("No brand found");
while($row = mysql_fetch_assoc($get_brand )){
$show_brand = $row["Brands"];
echo"<p>$show_brand</p>";
}?>
<form name="form" method="post" action="ready.php" >
<ul>
<li><input type="checkbox" name="merk[]" value="Adidas"/>Adidas</li>
<li><input type="checkbox" name="merk[]" value="Airforce"/>Airforce</li>
<li><input type="checkbox" name="merk[]" value="Armani"/>Armani</li>
<li><input type="checkbox" name="merk[]" value="Asics"/>Asics</li>
</ul>
</form>
/* == PHP CODE == */
答案 0 :(得分:4)
<?php
$find_fav_brands = " SELECT Brands FROM favoriteBrands WHERE fkCompanyID=$company_id";
$get_brand = mysql_query($find_fav_brands) or die ("No brand found");
$brands = array();
while($row = mysql_fetch_assoc($get_brand )){
$brands[]=$row["Brands"];
$show_brand = $row["Brands"];
echo"<p>$show_brand</p>";
}
?>
<form name="form" method="post" action="ready.php">
<ul>
<li><input type="checkbox" name="merk[]" value="Adidas"<?php echo in_array("Adidas",$brands)?" checked="checked"":""; ?> />Adidas</li>
<li><input type="checkbox" name="merk[]" value="Airforce"<?php echo in_array("Airforce",$brands)?" checked="checked"":""; ?> />Airforce</li>
<li><input type="checkbox" name="merk[]" value="Armani"<?php echo in_array("Armani",$brands)?" checked="checked"":""; ?> />Armani</li>
<li><input type="checkbox" name="merk[]" value="Asics"<?php echo in_array("Asics",$brands)?" checked="checked"":""; ?> />Asics</li>
</ul>
</form>
答案 1 :(得分:1)
1,我强烈建议您不要使用'string'作为复选框值。尝试使用ID。维护代码更安全,更容易。
2,由于您使用<li>
作为输入容器,因此使用PHP运行循环使其更容易,例如while或for / foreach。
3,您的数据库仅恢复了“已检查”值,但未取消选中。使用所有复选框选项无法从中生成完整列表。所以,这里有两个解决方案:
3.1保存表格结构中的所有选项,例如:brand1=0, brand2=1, brand3=1
等。因此,您可以预先取出所有结果,并在'checked=checked'
时打印brandX != 1
;
3.2或者,创建一个包含所有可能选项的数组,然后循环它们,并在数据存在时放入选中的值。