Daten in Array und MySQL Eintrag

CoverUnder

Mitglied
Hallo,

ich stehe leider einmal mehr vor einem Problem, wo ich nicht weiß, wie ich es am besten lösen kann und wäre mal wieder sehr dankbar für einen Tipp oder Hinweis.

Die Theorie wäre folgendermaßen:
Ich habe ein Formular mit einer Textarea, in die eine Liste mit Nummern kommt. Die Nummern sind nur durch einen Zeilenumbruch getrennt, kein Komma oder so. Das sieht dann in etwa so aus:

Code:
25808
25812
25817
25821
25823

Das Formular soll abgeschickt werden und dann bearbeitet ein PHP Script diese Nummern. Pro Nummer soll das Script einen Eintrag in eine Datenbanktabelle hinzufügen. Also um beim oberen Beispiel zu bleiben, soll das Script dann einen Eintrag für die Nummer "25808" erstellen, einen für "25812", einen für "25817" und so weiter. Es gibt keine Regel wie viele Nummern mitgeschickt werden, das ist immer unterschiedlich. Von drei Stück bis fünfzig... alles möglich.

Und nun zur Praxis:
Die Nummern landen ja dann sozusagen in einem String... da sie über $_POST vom Formular übergeben werden. Dann hab ich die Variable $nummern und muss sie in einzelne Nummern unterteilen. Um Arrays werde ich da wohl nicht herum kommen. Aber da sie nur durch einen Zeilenumbruch getrennt sind, wird es glaube ich schwierig, die Nummern zu trennen? explode(); geht ja so nicht, oder?
Was würdet ihr mir da vorschlagen?

Vielen Dank schon mal für die Hilfe!
 
Mal ungetestet

PHP:
$nummern = explode("\n", $string);

//oder
preg_match_all('/^.*$/m', $string, $subpattern); 
$nummern = $subpattern[0];
 
Es tut mir wirklich Leid, aber ich werde aus preg_match_all nicht schlau :/ ich habe mir die Beschreibung auf php.net auch angeschaut und selbst herum probiert, aber ich erhalte immer eine Fehlermeldung.

PHP:
$status = mysql_real_escape_string($_POST['status']);

preg_match_all('/[0-9]+/', $status, $ausgabe) 

echo $ausgabe[0];

=>

Code:
Parse error: syntax error, unexpected T_ECHO

Das wäre Problem Nr. 1... und dann weiter in der Theorie:
preg_match_all liefert ein Array zurück, wenn ich das nun richtig verstanden habe. Da ich nicht weiß, wie viele Nummern übers Formular verschickt werden, weiß ich auch nicht wie viele Einträge das Array haben wird.
Ich muss aber jede Nummer einzeln in einen eigenen Datensatz in der Datenbank abspeichern. Ich denke mal mit einer Schleife? So irgendwie?

PHP:
for ($i=0; $i< count($ausgabe[0]); $i++) {
 sql = "INSERT into tabelle SET nummer = "."$ausgabe[0][$i]";
}

Oder hab ich da auch einen Denkfehler drin bzw. gibt es eine einfachere/bessere Lösung?

Danke schon mal und sorry, dass ich erst jetzt auf eure Beiträge reagiere! Ich kam leider nicht früher dazu...

LG
 
So muss es aber klappen:

PHP:
<form name="" action="" method="post">
<textarea name="werte" rows="20" cols="20">
</textarea>
<br />
<input type="submit" name="sub" value="Send" />
</form>

<?php
if (isset($_POST["sub"]) && trim($_POST['werte']) != "") {
	$array = explode("\n", $_POST['werte']);
	for ($a = 0; $a < count($array); $a++) {
		echo "INSERT into tabelle SET nummer = ". $array[$a] ."<br />";

	}
}
?>

Nur halt noch die Feldnamen anpassen und die SQL-Anweisung ausführen anstatt sie auszugeben!

Ach so und mysql_real_escape_string natürlich nicht vergessen.
 
Zurück