Zeilen einer Textarea trennen

ultrauser

Mitglied
Hallo,

Ich programmiere gerade ein Script, das Daten in die Datenbank einfügt (aber mehrere gleichzeitig)

Meine Idee:

Ich gebe die daten so in die Textarea ein


Apfelbaum;30
Grüne Bonen;40
Erdbeeren;20

jetzt soll das PHP Script die Sachen in eine Tabelle schreiben. Apfelbaum in die Spalte Name und die 30 in die Anzahl Spalte. Als nächstes dann weiter mit den Grünen Bonen.

Hier ist mal ein Code von mir, der aber nicht so funktioniert:


PHP-Quellcode:

PHP:
<?php
$import = $_POST['import'];
$importteile = explode("\n", $import);

FOR ($i=0; isset($importteile[$i]); $i++)
  {
    //echo $importteile[$i]."<br>";
   $importteileeinzeln= explode(";",$importteile[$i]);
   FOR ($d=0; isset($importteileeinzeln[$d]); $d++)
  {  
    mysql_connect( "$server", "$username", "$password"); mysql_select_db("$datenbank");
  $eintrag = "INSERT INTO bankitems (id, name, anzahl, datum) VALUES ('', '$importteileeinzeln[$d]',
  '$importteileeinzeln[$d]','heute')";
  echo $eintrag;
  $eintragen = mysql_query($eintrag);
  }
  echo "<br>";
  }

?>


Anzeigen tut er dann:

INSERT INTO bankitems (id, name, anzahl, datum) VALUES ('', 'Apfelbaum', 'Apfelbaum','heute')INSERT INTO bankitems (id, name, anzahl, datum) VALUES ('', '30', '30','heute')

Ist die Idee so richtig oder totaler quatsch.

Gruß Nils
 
Probier mal Folgendes:
PHP:
<?php

	mysql_connect($server, $username, $password);
	mysql_select_db($datenbank);
	$lines = preg_split('/\x0D\x0A|\x0A|\x0D/', $_POST['import']);

	$query = 'INSERT INTO bankitems (name, anzahl, datum)';
	for( $i=0; count($parts); $i++) {
		$data = explode(';', $lines[$i]);
		$query .= ' VALUES ("'.mysql_real_escape_string($data[0]).'", "'.mysql_real_escape_string($data[1]).'", "heute")';
	}
	mysql_query($query);

?>
 
Die Idee ist schon richtig, aber die inner For-Schleife ist falsch.

Nachdem du eine Zeile per Semikolon explodiert hast, sind die Teile einer Zeile in dem Array $importteileeinzeln mit den Indizes $importteileeinzeln[0], $importteileeinzeln[1] etc abgelegt.

Darum musst du die innere For-Schleife weglassen und dann erzeugst du den SQL Query-String so:
PHP:
  $eintrag = "INSERT INTO bankitems (id, name, anzahl, datum) VALUES ('', {$importteileeinzeln[0]}',
  '{$importteileeinzeln[1]}','heute')";

(Die geschweiften Klammern sind nicht unbedingt nötig in diesem Fall, ich verwende sie aber immer sobald ich irgendwas komplexeres als einen einfachen Variablennamen in Strings verarbeite.)
 
Zurück