2012-04-06 4 views
0

**에 기반하여 업데이트합니다. 안녕 나는이 PHP 코드를 작업하고 있습니다.데이터베이스를 업데이트 상자의

체크 박스에 속한 수량을 업데이트하고 싶습니다. 하지만 내 코드의 정확한 문제는 다음과 같습니다. 예를 들어 3 개의 체크 박스가있는 경우와 동시에 수량을 모두 입력하면 업데이트가 올바르게 완료되고 나머지 2 개만 업데이트됩니다 올바르게 수행됩니다. 그러나 두 번째 또는 세 번째 항목을 동시에 업데이트하지 않을 경우 첫 번째 항목의 이전 값의 양을 가져옵니다. "( 그래서 코드를 변경하여 모든 항목을 업데이트 할 수 있습니까? . 또는만을 선택한 항목 여기

체크 박스의가 양으로 표시하는 내 코드 파일 manage_items.php에서

:. **

<?php 
$DB_HOST ='localhost'; 
$DB_USER ='root'; 
$DB_PASSWORD=''; 
$DB_DATABASE='dks'; 

$con= mysql_connect($DB_HOST ,$DB_USER , $DB_PASSWORD); 
if(!$con){ 
die('Failed to connect to server :'.mysql_error()); 
} 

$db=mysql_select_db($DB_DATABASE); 
if(!$db){ 
die("unable to select database"); 
}?> 

$qry="SELECT * FROM catalog"; 
$result= mysql_query($qry); 
if($result){ 
while($info = mysql_fetch_array($result)) 
{ 

print "<h3><a href=\"\#\"> cat:".$info['name']."</a></h3><div>"; 


$qryitem="SELECT * FROM item WHERE Id=". $info['Cid']; 
$resultitem=mysql_query($qryitem); 
if($resultitem){ 

?> 

<form method="post" action="manage_item_action.php"> 
<?php 
while($info=mysql_fetch_array($resultitem)) 
{ 
?> 
<input type="checkbox" name="op[]" value="<?php echo $info['Id'];?>"/><?php echo $info['name'];?> 
<label> Quantity <input type="text" name="Quantity[]" value="<?php echo $info['Quantity'];?>"/></label> 
<br/> 

     <?php 
     } 
    } 


    else echo "There are no items."; 


    print "</div>"; 

} 
} 

?> 

</div> 

<input type="submit" value="update" name="submit"/> 
</form> 

여기가

<?php 
$DB_HOST ='localhost'; 
$DB_USER ='root'; 
$DB_PASSWORD=''; 
$DB_DATABASE='dks'; 

$con= mysql_connect($DB_HOST ,$DB_USER , $DB_PASSWORD); 
if(!$con){ 
die('Failed to connect to server :'.mysql_error()); 
} 

$db=mysql_select_db($DB_DATABASE); 
if(!$db){ 
die("unable to select database"); 
} 

$options=$_POST['op']; 
$qun=$_POST['Quantity']; 
$size =count($options); 
for($i =0; $i<$size; $i++) 
{ 

//$qryop="UPDATE item SET Quantity =".$qun."WHERE Id =".$options[$i]."';"; 
$resultop=mysql_query("update item set Quantity='".$qun[i]."'where Id='".$options[$i]."'"); 


} 
if($resultop){ 
header("location: manage_items.php");} 
else echo "there was an error" 

?> 

내가 문제를 해결하는 방법을 몰라 파일 manage_item_action.php에 갱신 의 큐션입니다! 하지만 내 주요 문제는 모든 텍스트 상자의 이름이 같다고 생각합니다. 그래서 내가 다른 파일로 보내면 그냥 마지막으로 사용하게됩니다.

도움 제발 : 솔루션을 *

* 업데이트 $

* *이

그래서 난 내 코드의 문제를 해결하고 만 텍스트 상자를 필요 배열에 null 인덱스가 없도록 체크 박스를 선택하기 전에 비활성화해야합니다. 입력 된 값은 null없이 만 입력하십시오. :))

+0

대신에 쿼리를 실행의 : 다음

<!-- This will forward an array to php script --> Quantity <input type="text" name="Quantity[]"... 

과, 당신의 그 갱신 쿼리로 변경 ". $ qun [i]." 'Id =' ". $ options [$ i]." ' ";'그리고 결과를 질문에 넣으십시오. – hjpotter92

답변

0

'수량'입력란에 고유 한 이름을 지정하거나 열거 된 모든 확인란의 배열로 전송해야합니다. 그렇지 않으면 수신 양식이 '수량'의 마지막 값을 복음으로 사용합니다. 사용자의 입력 양식 상자에 있기 때문이다

0

, 당신은이 :

Quantity <input type="text" name="Quantity" ... 

그래서, 삽입 된 수량의 각각 전달 된 값이 업데이트됩니다. Quantity 상자에 마지막으로 삽입 된 값이 업데이트됩니다. 대신이이 양식 입력을 변경 : '= A'에코 '업데이트 항목을 설정 수량을 사용

$resultop=mysql_query("UPDATE item SET Quantity='" . $qun[$i] . "'where Id='".$options[$i]."'"); 
+0

답장을 보내 주셔서 감사합니다.하지만 이전에 시도해 보았지만 작동하지 않았습니다. ""(.. 다른 해결책을 생각해 주시겠습니까? – proR

+0

안녕하세요 : P는 내 게시물을 다시 읽을 수 있습니다. 내 질문에 약간의 수정을가했습니다. .. – proR

관련 문제