mehrere arrays in DB schreiben

Das ist wieder mal ein Schritt nach vorn.
Jetzt trägt er mir in die DB aber das Wort Array ein.
Ich versuche mal ob ich das jetzt alleine schaffe, dass hat ja nun eigentlich nur was mit
dieser Zeile zu tun nehme ich mal an.
PHP:
$row[] = array($position, $me_eh, $artikelnr, $bezeichnung, $werk, $brutto);
oder sollte das daran liegen?
PHP:
".$row[$i][3]."

MfG Maik
 
PHP:
$position, $me_eh, $artikelnr, $bezeichnung, $werk, $brutto
Sind das auch alles Arrays? Und wie sehen die aus?
 
PHP:
if( !empty($bestellnr) ) {
	$data = array();
	$arrayCount = count($bestellnr);
	for($i<0; $i<$arrayCount; $i++) {
		$data[] = '('.intval($bestellnr[$i]).', "'.intval($position[$i]).'", "'.mysql_real_escape_string($me_eh[$i]).'", '.intval($artikelnr[$i]).', "'.mysql_real_escape_string($bezeichnung[$i]).'", "'.mysql_real_escape_string($werk[$i]).'", "'.mysql_real_escape_string($brutto[$i]).'")';
	}
	$query = 'INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES '.implode(',', $data);
	mysql_query($query);
}
 
@[Flex]
meine Daten übergebe ich so:
PHP:
<input name="artikelnr[]" type="text" size="16" maxlength="15">
Ich denke das dass so auch richtig ist. Wie gesagt, wenn ich mir die einzelnen arrays ausgeben lasse habe ich ja die richtige Anzahl und Daten drin in dem jeweiligen array.

@Gumbo
das funktioniert soweit super, aber die erste Position steht nicht drin. Die Zeile ist leer und bei Position steht eine 0 drin.

Hab mal das draus gemacht:
PHP:
if( !empty($bestellnr) ) {
    $data = array();
    $arrayCount = count($position);
    for($i<0; $i<$arrayCount; $i++) {
        $data[] = '('.intval($bestellnr[$i]).', "'.intval($position[$i]).'", "'.mysql_real_escape_string($me_eh[$i]).'", "'.mysql_real_escape_string($artikelnr[$i]).'", "'.mysql_real_escape_string($bezeichnung[$i]).'", "'.mysql_real_escape_string($werk[$i]).'", "'.mysql_real_escape_string($brutto[$i]).'")';
    }
    $query = 'INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES '.implode(',', $data);
    mysql_query($query);
}
weil die Artikelnr. nicht int ist.

[Edit]
PS: die Bestellnr. sollte ja für alle gerade eingetragenen Positionen drin stehen.
Das heist bei 3 Positionen steht bei diesen 3 Datensätzen als Bestellnr. z.B. 1016
[/Edit]

MfG Maik
 
Zuletzt bearbeitet:
Ich hab das damals bei mir mit einer foreach Schleife gelöst.Die Läuft solange bis das Ende des Mehrdimisoniereten Array erreicht ist.Um das ganze einfacher zu machen hab ich eine Datensatzt Nr im Arry angelegt.So kann man schnell und einfach auf die zusammenhänegenden Werte zurück greifen.Were ja schlimm wenn sie einfach vermischt werden.Artikel Nr und Produktname unsw.
Damit der Warenkorb übere mehre Seiten erreichbar ist hab ich das damals mit einer Sesssion arry gelöst so kann man jederzeit leicht alles darin änderen bevor man es in die Db schreibt(Nähmlich dann wenn die Bestellung abgeschickt wird).

PHP:
foreach($_SESSION['warenkorb'] as $id =>$val) {
	           foreach ( $val as $key=>$final_val){
	           if ($key =="Nr"){    $Best=$id ;    // Datensatzt Nummer Ermitteln $Best ist die Datensatzt nummer 	      	             
	 
  // Artikel eintragen       	 
	            	  
$Sqlbes = sprintf ("Insert into kunden_bes(F_Besid,F_Prodid,Bes_Menge,Bes_Groesse,Bes_Preis) values ('%s','%s','%s','%s','%s');"
,($F_Besid),($_SESSION['warenkorb'][$Best]['Nr']),($_SESSION['warenkorb'][$Best]['Menge']),($_SESSION['warenkorb'][$Best]['Groesse']),($_SESSION['warenkorb'][$Best]['Preis']));
				
// echo $Sqlbes;
$db->query($Sqlbes); //Anweisung übergeben 
						}// ende If key
							}}// Foreach Schleifen Ende
 
Zuletzt bearbeitet:
@Splasch
Ich werde mir deinen Code mal näher betrachten und vielleicht bekomme ich es dann hoffentlich zum laufen.

MfG Maik
 
Hallo

Mich beschäftigt leider immer noch dieses Thema.
Der Code, den Gumbo zur Verfügung gestellt hat ist ansich schon spitze, leider
wird dort die erste Position nicht eingetragen.
Ein echo gibt mir folgendes:
PHP:
INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES (1016, "0", "", "", "", "", ""),(1016, "2", "14qm", "POR15", "40 Coral", "GL", "56,78"),(1016, "3", "15qm", "POR314", "Fusion Cream 30x60", "TG", "67,89")
Hier ist nochmal der Code wie ich Ihn jetzt habe:
PHP:
if( !empty($bestellnr) ) {
    $data = array();
    $arrayCount = count($position);
    for($i<0; $i<$arrayCount; $i++) {
        $data[] = '('.$bestellnr.', "'.intval($position[$i]).'", "'.mysql_real_escape_string($me_eh[$i]).'", "'.mysql_real_escape_string($artikelnr[$i]).'", "'.mysql_real_escape_string($bezeichnung[$i]).'", "'.mysql_real_escape_string($werk[$i]).'", "'.mysql_real_escape_string($brutto[$i]).'")';
    }
    $query = 'INSERT INTO i_bestell_artikel (bestellnr, position, me_eh, artikelnr, bezeichnung, werk, brutto) VALUES '.implode(',', $data);
    mysql_query($query);
}
Habe mal noch ein Bild mit angehängt wie das ganze in der DB ankommt.

MfG Maik
 

Anhänge

  • bsp_array.jpg
    bsp_array.jpg
    14,2 KB · Aufrufe: 12
Also die einzelnen arrays sind mit allen daten gefüllt.
$position[$i] beinhaltet meine z.B. 2 Positionen ebenso habe ich 2 Bezeichnungen oder 2 Artikelnummern.

jedoch beinhaltet $data nur
PHP:
("1016", "", "", "", "", "", "")("1016", "2", "15qm", "POR312", "312 Gris Testfliese", "PGC", "56,78")
PHP:
$data[] = '("'.$bestellnr.'", "'.mysql_real_escape_string($position[$i]).'", "'.mysql_real_escape_string($me_eh[$i]).'", "'.mysql_real_escape_string($artikelnr[$i]).'", "'.mysql_real_escape_string($bezeichnung[$i]).'", "'.mysql_real_escape_string($werk[$i]).'", "'.mysql_real_escape_string($brutto[$i]).'")';
Wieso geht der erste Datensatz verloren?
 
Zuletzt bearbeitet:
scheint so, als könnte mir niemand in dieser Situation weiterhelfen.
Bis jetzt löse ich es so, dass ich die erste Position einfach leer lasse.

Dann sehe ich in der DB wenigstens ab wann eine neue Bestellung anfängt. :rolleyes:
Blöd nur das dass manchmal vergessen wird, dann geht halt 'ne Pos. verloren.

Also ich bin nachwievor an Lösungsvorschlägen interessiert.

MfG Maik
 

Neue Beiträge

Zurück