2012-04-06 81 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> 

,這裏是更新 的excution在文件manage_item_action.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"); 
} 

$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" 

?> 

我不知道如何解決這個問題! 但我認爲我的主要問題是所有的文本框都有相同的名稱。 所以當我把它發送到另一個文件ecution它只是把它,因爲它是最後一個。

幫我請:$

* 修訂 *

* 解決方案 *

所以我解決我的代碼的問題,其唯一需要的文本框在簽入複選框之前被禁用,因此數組沒有任何空索引。只有輸入的值沒有任何空值 :))

+0

代替執行查詢,使用'回聲「更新項目設定數量=」 「。$ qun [i]。」'其中Id ='「。$ options [$ i]。」'「;'並且將輸出也放在問題中。 – hjpotter92 2012-04-10 08:09:05

回答

0

你需要給「數量」字段中輸入一個唯一的名稱或將它轉換爲列出的每個複選框,提交接收的形式將採取的最後一個值「數量」爲福音否則當一個數組。

0

,在輸入表單框是因爲,你有:

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

所以,每個插入的數量,正在更新轉發值。插入到Quantity框中的最後一個值將被更新。取而代之的是,這種輸入形式改成這樣:

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

,然後在你的更新用的查詢,更改爲:

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

我感謝你的回答,但我之前試過了,它沒有工作:「」「(..你可以請考慮另一個解決方案 – proR 2012-04-07 03:48:14

+0

再次嗨:P可以ü重新讀取我的帖子我對我的問題做了一些改變.. – proR 2012-04-09 23:03:46