2012-03-04 125 views
3

我有一個問題,以解決哪些即時通訊不知道如果它可以解決我的想法。這是關於帶複選框的表單。此表格的目的是允許用戶通過選中/取消選中表單複選框來從數據庫中添加或刪除他們最喜歡的品牌。我現在面臨的挑戰是,用戶可能已經選擇了過去的品牌。我希望頁面在加載時檢查數據庫,並自動檢查數據庫中找到的形式的品牌。我查看了是否可以用jquery,但我被卡住了。這裏是我的代碼:如何自動檢查mysql數據庫中的複選框

/* == 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

如果您動態生成複選框,則不需要jQuery,只需在代表用戶喜愛的品牌的複選框中添加checked =「checked」屬性即可。資料來源:http://www.w3schools.com/tags/att_input_checked.asp – 2012-03-04 03:44:05

+0

@TomS是的,我知道,但這是問題,我不是動態生成複選框。該表格是靜態的。 – 2012-03-04 05:27:43

回答

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,我強烈不建議你使用「串」爲複選框值。嘗試使用ID。維護你的代碼更安全更容易。

2,由於您使用<li>作爲您的輸入容器,因此使用PHP運行循環可以更輕鬆地執行此操作,例如while或for/foreach。

3,您的數據庫只恢復'checked'值,但不是未選中。使用所有複選框選項無法生成完整列表。因此,這裏有2個解決方案:

3.1要麼保存在您的表結構的所有選項,例如:brand1=0, brand2=1, brand3=1等,所以,你可以的foreach所有結果和打印'checked=checked'brandX != 1;

3.2或者,製作所有可能選項的數組,並循環它們,如果數據存在,則將檢查值。

相關問題