2017-09-22 4 views
0

Ich habe 4 Kontrollkästchen mit verschiedenen Werten in einer While-Schleife & benannt als ein Array. Der ausgewählte Wert von nur dem letzten Loop-Set von Checkboxen wird aktualisiert, aber ich brauche alle ausgewählten Werte (1 pro Set von 4), die unabhängig von ihren entsprechenden Zeilen aktualisiert werden sollen.Looped Checkbox Array Wert wiederholt

HTML

<input type="checkbox" name="size[]" value="S" /> 
<input type="checkbox" name="size[]" value="M" /> 
<input type="checkbox" name="size[]" value="L" /> 
<input type="checkbox" name="size[]" value="XL" /> 

PHP

<?php 
if(isset($_POST['update'])){ 
$select_id = "select * from customer where ip='$ip'"; 
$get_id = mysqli_query($db, $select_id); 

while ($row = mysqli_fetch_array($get_id)){ 
foreach($_POST['size'] as $size){ 

$product_id = $row['product_id']; 

$update_size = "update customer set size='$size' where product_id='$product_id'"; 
$run_size = mysqli_query($db, $update_size); 
} 
} 
} 
?> 

UPDATE - Fast da!

AUS LOOP WHILE

$i = 1; 

IN LOOP WHILE

$i++; 
<input type="checkbox" name="size[].$i." value="S" /> 
<input type="checkbox" name="size[].$i." value="M" /> 
<input type="checkbox" name="size[].$i." value="L" /> 
<input type="checkbox" name="size[].$i." value="XL" /> 

in der Verarbeitung

<?php 
if(isset($_POST['update'])){ 
$select_id = "select * from customer where ip='$ip'"; 
$get_id = mysqli_query($db, $select_id); 


while ($row = mysqli_fetch_array($get_id)){ 

$size = $_POST['size']; 
$product_id = $row['product_id']; 

foreach ($size as $_POST['size']); 
{ 

$update_size = "update customer set size='$size' where product_id='$product_id'"; 
$run_size = mysqli_query($db, $update_size); 
} 
} 
} 
?> 

Es ist nun verschiedene Sets von Variablen pro Zeile, aber jetzt eine ist die Aktualisierung ist ein korrekter Wert Das andere ist nur Array, aber warum?

Antwort

0

Alles, was ich tun musste, war;

$size = array_shift($_POST['size']); 
0

Gemäß dem Code führt die foreach-Schleife das Größenfeld aus und aktualisiert es, aber jedes Mal, wenn die update-Anweisung ausgeführt wird, überschreibt es den alten Wert. Daher wird der Wert des letzten Loop-Kontrollkästchens gespeichert. Sie müssen Ihre Datenbankstruktur überprüfen, denke ich. Wenn Sie 4 verschiedene Werte für die gleiche product_id speichern, müssen Sie eine andere Tabelle erstellen (One to many relation). Hoffe, das wird helfen.

+0

Entschuldigung, ich hätte erwähnen sollen, nur ein Kontrollkästchen ausgewählt werden, so nur 1 von 4 Werte pro Zeile gespeichert wird. – Steven

+0

Sie können '' ODER ein Javascript hinzufügen, um das Kontrollkästchen zu deaktivieren, wenn ein Kontrollkästchen angeklickt wird. Hier ist eine Referenz: http://jsfiddle.net/MQM8k/ –

+0

Ich muss den Namen des Kontrollkästchens erhöhen, so dass die nächste Schleife von Boxen eindeutig sein wird. – Steven