PHP jede zeile aus textarea einzeln in DB eintragen

holger_

Newbie
Registriert
Juli 2014
Beiträge
1
Hallo zusammen,

ich hätte da mal ein Problem, ich habe auf einer Seite für die Trainer aus meinem Clan ein Formular erstellt,
wo sie zum Training daten eingeben können. Das Formular hat ein Textfeld, wo man die Sieler eintragen kann.
Für jeden Spieler eine eigene Zeile. Wenn ich jetzt dort Spieler eintrage:

Spieler1
Spieler2
Spieler3

Für das aufteilen des Textfeldes benutze ich folgendes Script:
PHP:
/* User aus Textfeld in extra Datenbank */
    $msg = explode( "\r\n", $_POST['tspieler'] );
    foreach( $msg as $zeile )
    mysql_query( 'INSERT INTO training_spieler (tid, spieler) VALUES ( \''.$_POST['tid'].'\',\''.$zeile.'\')' );
/* User aus Textfeld in extra Datenbank */

Das ganze funktioniert auch ganz gut, nur hab ich da ein Problem dabei.
Wenn jetzt am Ende der Liste noch mal Enter gedrückt wird oder zb so eingetragen wird

Spieler1

Spieler2
Spieler3

wird mir in der Datenbank ein Eintrag gemacht wo aber kein Name steht.
Wie kann ich das noch umgehen? Kann mir da mal einer helfen?

Gruß
Holger
 
PHP:
/* User aus Textfeld in extra Datenbank */
$msg = explode( "\r\n", $_POST['tspieler'] );
foreach( $msg as $zeile )
{
	if($zeile != "" && $zeile != "\r\n") //Nur Eintragen wenn String nicht leer und nicht "nur" Umbruch
	mysql_query( 'INSERT INTO training_spieler (tid, spieler) VALUES ( \''.$_POST['tid'].'\',\''.$zeile.'\')' );
}
/* User aus Textfeld in extra Datenbank */

Edit: ausgebessert

mfg,
Max
 
Zuletzt bearbeitet:
Hi,

prüfe doch einfach in der foreach, ob etwas vorhanden ist zum eintragen, wenn nicht dann trage nichts ein. Wobei du generell besser ein großes INSERT STATEMENT benutzen solltest als immer wieder viele kleine und du außerdem PDO / Escaping nutzen solltest und nicht so unbedarft POST Werte in einem SQL Statement benutzen solltest! Das ist unverantwortlich!

VG,
Mad
 
Ich würde einfach $zeile mit trim() behandeln und dann nur nicht-leere Zeilen in die DB schreiben.
 
Zurück
Oben