簡體   English   中英

如何自動檢查mysql數據庫中的復選框

[英]How to automatically check checkboxes from mysql database

我有一個問題需要解決,我不確定它是否能以我想到的方式解決。 它是一個帶有復選框的表單。 此表單的目的是允許用戶通過選中/取消選中表單復選框從數據庫中添加或刪除他們喜歡的品牌。 我現在面臨的挑戰是,過去可能已經有用戶選擇了品牌。 我希望頁面加載時檢查數據庫並自動檢查數據庫中找到的形式的品牌。 我查看是否有可能使用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 == */
<?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,我強烈建議你不要使用'string'作為復選框值。 嘗試使用ID。 維護代碼更安全,更容易。

2,由於您使用<li>作為輸入容器,因此使用PHP運行循環會使其更容易,例如while或for / foreach。

3,您的數據庫僅恢復了“已檢查”值,但未取消選中。 使用所有復選框選項無法從中生成完整列表。 那么,這里有兩個解決方案:

3.1保存表格結構中的所有選項,例如: brand1=0, brand2=1, brand3=1等。因此,當brandX != 1時,您可以brand1=0, brand2=1, brand3=1所有結果並打印'checked=checked' ;

3.2或者,創建所有可能選項的數組,然后循環它們,並在數據存在時放置檢查值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM