2012-04-06 5 views
0

** Hallo Ich habe an diesem PHP-Code gearbeitet.Update-Datenbank von Textfeld basierend auf der Checkbox

Ich möchte die Menge aktualisieren, die zu der aktivierten Box gehört. aber das genaue Problem mit meinem Code ist: wenn ich zum Beispiel 3 Kontrollkästchen habe und wenn ich die Menge für sie alle in der gleichen Zeit die Updates sind korrekt durchgeführt und wenn ich nur die erste Menge ohne die anderen 2 das Update aktualisieren ist auch richtig gemacht, aber wenn ich die zweite oder die dritte allein nicht in der gleichen Zeit aktualisiere, nimmt es die Menge des alten Wertes der ersten: "" ( so wie kann ich meinen Code ändern, damit ich alle Elemente aktualisieren kann . oder nur die markierten Elemente

hier ist mein Code die Checkbox der mit der Menge anzuzeigen

in der Datei 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> 

und hier ist die Ausfürung der update in der Datei 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" 

?> 

i weiß nicht, wie das Problem zu beheben! aber ich denke, mein Hauptproblem ist, dass alle Textfelder den gleichen Namen haben. also, wenn ich es an die andere Datei für die Durchführung senden, nehmen Sie es einfach so, wie es das letzte ist.

mir bitte helfen: $

* AKTUALISIERT *

* Die Lösung *

so löste ich das Problem meines Codes und seine brauchte nur die Textbox deaktiviert werden, bevor das Kontrollkästchen aktiviert wird, damit das Array keinen Nullindex hat..Nur die eingegebenen Werte ohne Nullwerte haben :))

+0

stattdessen die Abfrage auszuführen, verwenden Sie einen 'echo„Update Rüstungsset Anzahl =‘:

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

und dann in Ihre Aktualisierungs-Abfrage ändern ". $ qun [i]." 'wo Id =' ". $ options [$ i]." '";' und die Ausgabe auch in die Frage stellen. – hjpotter92

Antwort

0

Sie müssen dem Eingabefeld 'Menge' einen eindeutigen Namen geben oder es als ein Array für jedes angekreuzte Kontrollkästchen umwandeln, andernfalls wird das empfangene Formular den letzten Wert für 'Menge' als Evangelium annehmen.

0

das, weil ist in Ihrem Eingabeformular Feld Sie haben:

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

also mit jedem der Menge eingeführt wird, werden die übermittelten Werte aktualisiert. Und der letzte Wert, der in die Box eingefügt wird, wird in das Update übernommen. Stattdessen dieses Formular eingegeben dies ändern:

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

Ich danke Ihnen für Ihre Antwort, aber ich habe es vorher versucht und es hat nicht funktioniert: "" "(.. können Sie bitte für eine andere Lösung denken – proR

+0

Hallo nochmal: P kann meinen Beitrag neu lesen Ich habe einige Änderungen an meiner Frage vorgenommen .. – proR

Verwandte Themen