2012-03-04 4 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 –

+0

@TomS 그래,하지만 그게 내가 동적으로 확인란을 생성하지 않는 문제입니다. 양식은 정적입니다. –

답변

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/forach와 같이 훨씬 쉽게 작업을 수행 할 수있는 루프를 실행하십시오.

3, 데이터베이스가 '확인'값만 복원했지만 선택하지 않은 것은 아닙니다. 모든 확인란 옵션을 사용하여 목록에서 전체 목록을 생성하는 것은 불가능합니다. 따라서 여기에 2 가지 해결책이 있습니다 :

3.1 brand1=0, brand2=1, brand3=1 등 모든 옵션을 테이블 구조에 저장하십시오. 따라서 brandX != 1 일 때 'checked=checked'을 인쇄하십시오.

3.2 또는 가능한 모든 옵션의 배열을 만들고 반복하고 데이터가 존재하면 확인 된 값을 넣으십시오.

관련 문제