mehrere Datensätze gleicheitig speichern

Luzie

Erfahrenes Mitglied
Hallo

ich möchte gerne aus einem Formular mehrere Datensätze gleichzeitig einfügen, aber nur diejenige, wo die Checkbox geklickt ist und eine Mengenangabe einfügt wird.

Wie müsste ich das Scirpt umbauen, damit es funktioniert?
Wenn ich oben anfange und klicke die ersten Zeilen ein, funktioniert es noch. Soll die Eingabe aber erst ab Zeile 3 anfangen, werden schon keine Mengenangabe mehr ausgegeben.

Ich hoffe, es kann mir jemand helfen.

PHP:
<?php
$ausgabe = "";
if(isset($_POST['print'])&& isset($_POST['menge']))
	{
	 for ($a = 0; $a < count($_POST['print']); $a++){
	 $print = $_POST['print'];
	 $menge = $_POST['menge'];
	 $ausgabe .= "(".$print[$a].",".$menge[$a].")";
	
	}
 }
 // testweise Ausgabe über echo
 echo "insert into tabelle (a,b) values $ausgabe";
?>

<form name="form1" method="post" action="">
  <input type="checkbox" name="print[]" value="1">1   <input type="text" name="menge[]"><br><br>
  <input type="checkbox" name="print[]" value="2">2   <input type="text" name="menge[]"><br><br>
   <input type="checkbox" name="print[]" value="3">3   <input type="text" name="menge[]"><br><br>
    <input type="checkbox" name="print[]" value="4">4   <input type="text" name="menge[]"><br><br>
  <input type="submit" name="Submit" value="Senden">
</form>
 
Das liegt daran, dass Checkboxen nur übertragen werden, wenn sie angehakt wurden. In deinem Beispiel hast du 4 Checkboxes, du hakst die dritte an und gibst dazu eine Menge an. Jetzt hast du ein Problem, die Anzahl der übertragenen "menge" Felder sind nicht gleich der Anzahl der übertragenen "print" Felder.
Edit:
Versuchs mal so:

PHP:
$ausgabe = "";
if( isset($_POST['print']) && isset($_POST['menge']) )
{
	foreach( $_POST['print'] as $strValue )
	{
		$intKey = intval($strValue)-1;
		if( array_key_exists($intKey, $_POST['menge']) && preg_match('~^\d+$~', $_POST['menge'][$intKey]) )
		{
		
			$ausgabe .= ((strlen($ausgabe) > 0) ? ', ' : '') . "('". $intKey ."', '". $_POST['menge'][$intKey] ."')"
		}
	}
}

// testweise Ausgabe über echo
echo "insert into tabelle (a,b) values $ausgabe";
 
Zuletzt bearbeitet:
Zurück