2012-08-07 3 views
0

두 개의 드롭 다운 메뉴 폼 '카테고리'와 '하위 카테고리'가 있습니다. '카테고리'에는 음악과 영화 옵션이 있고 하위 카테고리에는 '팝'과 '록'(f1), '코미디'와 '드라마'(f2) 옵션이 있습니다. 문제는 코드로 하위 카테고리를 다음과 같이 등록해야합니다 (cat, subcat) : film-drama = 2,5 및 film-comedy = 2,6 그러나이 두 카테고리는 모두에 등록 할 때 2,0으로 등록됩니다. mysql 테이블. 여기에 코드입니다 :mysql 테이블에 여러 옵션을 잘못 삽입했을 때

<form action='submitsite.php' method='POST'> 
<table> 
<tr> 
<td>category(optional)</td> 
<td><select name='cat' id = "opts" onchange = "showForm()"> 
<option value = "0">Select</option> 
<option value = "1">music </option> 
<option value = "2">film </option> 
</select> 

<div id = "f1" style="display:none"> 
<form name= "subcat"> 
<select name='subcat' id = "opts" onchange = "showForm()"> 
<option value = "0">Select</option> 
<option value = "3">pop</option> 
<option value = "4">rock </option> 
</select> 
</form> 
</div> 

<div id = "f2" style="display:none"> 
<form name= "subcat"> 
<select name='subcat' id = "opts" onchange = "showForm()"> 
<option value = "0">Select</option> 
<option value = "5">comedy</option> 
<option value = "6">drama</option> 
</select> 
</form> 
</div> 

<script type = "text/javascript"> 
function showForm() 
{ 
var selopt = document.getElementById("opts").value; 
if (selopt == 1) 
{ 
    document.getElementById("f1").style.display="block"; 
    document.getElementById("f2").style.display="none"; 
} 
if (selopt == 2) 
{ 
    document.getElementById("f2").style.display="block"; 
    document.getElementById("f1").style.display="none"; 
} 

}

는 여기에 변수 선언과 MySQL의 쿼리입니다 :

$cat=$_POST['cat']; 
$subcat=$_POST['subcat']; 

$sql="INSERT INTO favorites VALUES('$cat','$subcat')"; 

가 난 그냥 부분은주고 있다고 덧붙였다 MySQL의 문제가 아니다 더 나은 전반적인 그림.

+0

'var_dump (array ($ cat, $ subcat))'는 무엇을 만드나요? – Matt

+0

양식에 다른 이름을 사용하고 선택하십시오. 두 경우 모두 이름이 'subcat'인 것으로 확인되어 기본값 0을 취할 수 있습니다. – sundar

+0

두 개 이상의 양식을 사용하여 하나의 스크립트에 제출하지 마십시오. (읽기 : 여기에 하나의 양식 만 필요합니다.) – Matt

답변

0

HTML에 중첩 된 양식을 사용할 수 없습니다. 마크 업은 유효하지 않으므로 제출할 때 예기치 않은 동작이 발생합니다. 이에 대한 해결책은 단일 양식을 사용하는 것입니다. 이이 작업을 수행하는 하나 이상의 방법은,하지만 여기에 하나의 예입니다 :

HTML 코드 :

<form action='submitsite.php' method='POST'> 
<table> 
<tr> 
<td>category(optional)</td> 
<td><select name='cat' id = "opts" onchange = "showForm()"> 
<option value = "0">Select</option> 
<option value = "1">music </option> 
<option value = "2">film </option> 
</select> 

<div id = "f1" style="display:none"> 
<select name='subcat1' id = "opts" onchange = "showForm()"> 
<option value = "0">Select</option> 
<option value = "3">pop</option> 
<option value = "4">rock </option> 
</select> 
</div> 

<div id = "f2" style="display:none"> 
<select name='subcat2' id = "opts" onchange = "showForm()"> 
<option value = "0">Select</option> 
<option value = "5">comedy</option> 
<option value = "6">drama</option> 
</select> 
</div> 
</form> 
.... 

PHP 코드 :

$cat = $_POST['cat']; 
$subcat = $_POST['subcat' . $cat]; 

모든 사용자가 제출 한 값을 검증해야한다는 것을 명심하십시오 더 사용하기 전에. 이 경우 is_numeric()을 확인하고 허용되는 값의 범위에 있는지 확인하고 int으로 전송할 수 있습니다.