mehrere arrays in DB schreiben

Zero2000

Erfahrenes Mitglied
Hallo

Ich sitze seit heute vormittag an einem "Problem" das ich hier habe.
Und zwar habe ich ein formular, bei dem ich per javascript immer eine Position
hinzufügen kann.
Da mein Formular 6 Eingabefelder hat, habe ich auch 6 arrays mit unterschiedlichen Namen.

Ich habe aber nun keine Ahnung wie ich die ganzen arrays in meine Datenbank bringe.
So klappts leider nicht:
PHP:
$query_artikel = mysql_query("INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES ('".$bestellnr[$i]."', '".$position[$i]."', '".$me_eh[$i]."', '".$artikelnr[$i]."', '".$bezeichnung[$i]."', '".$werk[$i]."', '".$brutto[$i]."')")or die(mysql_error());
und wenn ich das ganze in einer Schleife laufen lasse, nämlich so:
PHP:
for($i=0;$i<$row;$i++)
{
$query_artikel = mysql_query("INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES ('".$bestellnr[$i]."', '".$position[$i]."', '".$me_eh[$i]."', '".$artikelnr[$i]."', '".$bezeichnung[$i]."', '".$werk[$i]."', '".$brutto[$i]."')")or die(mysql_error());
}
dann fügt er mir wie wild Datensätze ein, weil ich nicht weis woher ich das $row nehmen soll.

Im moment habe ich irgendwelche Sch+++ gebaut und der fügt mir ständig Datensätze ein obwohl ich schon auf abbrechen gedrückt habe.

Er ist gerade beim 1.149.224 zigsten Datensatz, ich muß erstmal meinen PC neu starten und sehen ob er dann aufhört datensätze hinzuzufügen :)

Frage kommt trotzdem noch: Wie bekomme ich die vielen arrays in meine datenbank

MfG Maik
 
Hi!

Wenn du nicht weißt wie viele Elemente im Array sind kannst du es mit Count auslesen.
PHP:
for($i=0;$i<count($bestellnr);$i++){
...
}

Müsste so auch gehen!

Viele Grüße,
Jacka
 
@Jacka
Hab ich schon, in allen 6 arrays ist die richtige Anzahl und die richtigen Daten drin.
Es habert nur daran, dass ich diese nicht in die DB(MySQL) bekomme.

@Gumbo
Ich wüsste nicht wie das mit einer INSERT Anweisung gehen sollte, dass alle meine Daten aus den 6 Arrays in die DB geschrieben werden.

Was Du meinst ist sicher das hier:
PHP:
INSERT-Anweisungen, die die VALUES-Syntax verwenden, können mehrere Datensätze einfügen.
Zu diesem Zweck fügen Sie mehrere Listen mit Spaltenwerten ein, die jeweils in Klammern
gesetzt und durch Kommata getrennt sind. Beispiel: 
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
Aber das trifft doch nicht auf meine arrays zu oder?

MfG Maik
 
Hallo

Ich denke fast, dass ich auf dem besten Weg hin zur Lösung bin.
Folgendes script trägt mir meine Positionen zwar in die Datenbank ein, jedoch auch noch zusätzlich 300 leere Datensätze.
PHP:
error_reporting(E_ALL);
$row = array($bestellnr, $position, $me_eh, $artikelnr, $werk, $brutto);

for($i=0;$i<$row;$i++)
{
echo "INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES ('".$bestellnr[$i]."', '".$position[$i]."', '".$me_eh[$i]."', '".$artikelnr[$i]."', '".$bezeichnung[$i]."', '".$werk[$i]."', '".$brutto[$i]."')";
}

Weis jemand wie ich das eintragen der 300 leeren Datensätze verhindern kann?

PS: es sind nicht immer 300, jenachdem wieviele Positionen ich habe sind es mal mehr mal weniger.

MfG Maik
 
PHP:
for($i=0;$i<count($row);$i++)
{
echo "INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES ('".$bestellnr[$i]."', '".$position[$i]."', '".$me_eh[$i]."', '".$artikelnr[$i]."', '".$bezeichnung[$i]."', '".$werk[$i]."', '".$brutto[$i]."')";
}
Mit [phpf]count[/phpf] zählst du alle Einträge des Arrays.
 
@[Flex]
das mit count wusste ich ja, aber das man das so einsetzen kann wusste ich nicht.
Also das hat mich einen großen Schritt nach vorne gebracht, aber aus irgendeinem Grund hat der was mit der Zahl 3.
Er fügt mir jetzt keine 300 leeren Datensätze mehr ein sondern nur noch 3 oder 4.
Ich weis jetzt nicht ob dir das was hilf, wenn ich dir die Ausgabe von error_reporting(E_ALL); anhänge.
Code:
Notice: Undefined offset: 1 in E:\bestell_neu2.php on line 118

Notice: Undefined offset: 1 in E:\bestell_neu2.php on line 118

Notice: Undefined offset: 1 in E:\bestell_neu2.php on line 118

Notice: Undefined offset: 1 in E:\bestell_neu2.php on line 118

Notice: Undefined offset: 1 in E:\bestell_neu2.php on line 118

Notice: Undefined offset: 1 in E:\bestell_neu2.php on line 118
danach kommt noch sechsmal ... offset: 2
dann noch offset: 3 und 4 jeweils sechsmal

Sollte ich irgendwelchen Quellcode posten dann bitte bescheid sagen.

MfG Maik
 
Wie sieht denn $row überhaupt aus?
Mach doch mal ein [phpf]var_dump[/phpf] auf $row und poste den Inhalt.
 
Also meine $row sieht so aus:
PHP:
$row = array("position", "me_eh", "artikelnr", "werk", "brutto");
und das var_dump darauf so:
PHP:
array(5) { [0]=> string(8) "position" [1]=> string(5) "me_eh" [2]=> string(9) "artikelnr" [3]=> string(4) "werk" [4]=> string(6) "brutto" }

MfG Maik
 
Sorry, hab mir das grad nochma angeguckt und gesehen, dass es anders sein muss:

PHP:
error_reporting(E_ALL);
$row[] = array($bestellnr, $position, $me_eh, $artikelnr, $werk, $brutto);

for($i = 0; $i < count($row); $i++)
{
echo "INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES ('".$row[$i][0]."', '".$row[$i][1]."', '".$row[$i][2]."', '".$row[$i][3]."', '".$row[$i][4]."', '".$row[$i][5]."', '".$row[$i][6]."')";
}

So sollte es gehen.
 

Neue Beiträge

Zurück