• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Unbekannte Anzahl Strings in Array speichern

D

DiVaO

Guest
Moin,

ich habe ein verzwicktes Problem für das ich leider keine Lösung finde.

Ich habe eine unbekannte Zahl an Textfeldern, deren Text ich in einen Array packen möchte. Das ganze sieht in etwa so aus:

PHP:
echo "<form name='juhu' method='post' action='?".$_SERVER['QUERY_STRING']."'>";

$i = 1;
while($i <= 'X') {
echo "<input type='text' name='titel".$i."'></input><br/>
<textarea name='text".$i."' rows='10' cols='10'></textarea>";
$i++; }

echo "<input type='submit" value='submit' /></form>";

Es hängt also vom X ab, wieviele Textfelder es gibt (Das X wird später variieren). Alle vorhandenen Textfelder sollen dann in einen Array gespeichert werden, etwa so:

PHP:
$array = array($_POST['titelY'] => $_POST['textY']);

Das heißt z.B. wenn X = 3, dann sollte der array so aussehen:

PHP:
$array = array( $_POST['titel1'] => $_POST['text1'],
                $_POST['titel2'] => $_POST['text2'],
                $_POST['titel3'] => $_POST['text3']);

Der Array wird daraufhin in die DB eingespeichert.

Leider weiß ich nicht wie ich das angehen soll, das scheint mein bisheriges Wissen über Schleifen etc. zu übersteigen.. würde mich über Tipps und Hilfen sehr freuen! :)
 
Hallo,

du kannst Textfeldern nicht nur einfache String-Namen geben, sondern sie auch als Array-Elemente zuordnen.

Das sieht in HTML dann beispielsweise so aus:
HTML:
<input type="text" name="textfeld[0]" />
<input type="text" name="textfeld[0]" />
Und die Verarbeitung mit PHP:
PHP:
foreach($_POST['textfeld'] as $textfeld){
        // ...
}

Gruß
 
Sag uns doch lieber was du wirklich machen willst, dann können wir die bestimmt eine noch bessere möglichkeit nennen dein Problem zu lösen.
 
Sag uns doch lieber was du wirklich machen willst, dann können wir die bestimmt eine noch bessere möglichkeit nennen dein Problem zu lösen.

Naja das hab ich eigentlich schon gemacht. Ich bin gerade dabei ein kleines CMS für meine Clanseite zu basteln und bin bei den Clanmatches.

Wenn ein Clanmatch ansteht kann man ein neues erstellen und muss dann Daten angeben wie das gespielte Spiel, der Modus, die Anzahl der Runden usw.

Wenn das Match gespielt wurde kann das Ergebnis eingetragen werden und zu jeder Runde ein Ergebnis und ein Kommentar. Das Blöde ist dass die Anzahl der Runden varrieren kann.. manchmal sind es 3, manchmal sind es 5 usw. im oben genannten Beispiel eben X. Je nachdem wieviele Runden man vorher angegeben hat, wird die Anzahl aus der Datenbank ausgelesen und dann entsprechend viele Textfelder erstellt, damit zu jeder Runde ein Ergebnis und ein Kommentar abgegeben werden kann. Jetzt kann ich das ja kaum mit mysql umsetzen da die Anzahl an Runden-Feldern varriert. Deswegen will ich versuchen die einzelnen Runden-Kommentare und Ergebnisse in einen Array zu speichern, den ich in der DB speichern und später auslesen kann.

Ich hoffe das Problem ist verständlich.

Hallo,

du kannst Textfeldern nicht nur einfache String-Namen geben, sondern sie auch als Array-Elemente zuordnen.

Das sieht in HTML dann beispielsweise so aus:
HTML:
<input type="text" name="textfeld[0]" />
<input type="text" name="textfeld[0]" />
Und die Verarbeitung mit PHP:
PHP:
foreach($_POST['textfeld'] as $textfeld){
        // ...
}

Gruß

Nun habe ich aber jeweils zwei Textfelder, die in den Array in der form titel => sein sollen.

HTML:
<input type="text" name="titel[x]" />
<textarea name="text[x]" />

Wie sieht dann die Schleife aus?
 
Hallo DiVaO,

dein Problem liegt in der Datenbankstruktur. Anstelle eines Arrays solltest du lieber eine extra Datenbanktabelle für die Runden erstellen.

Jetzt kann der Spieler zu jeder Runde ein Kommentar abegben und es gibt keine Probleme mit den Arrays. Wichtig ist, dass du die beiden Tabellen verknüpfst. Jedes Match sollte eine eigene ID haben, diese ID sollte dann auch in die Tabelle für die Runden eingetragen werden (natürlich nur die Runden, die zu dem Match gehören).
 
Und dabei nicht vergessen. Es ist absolut egal wie viele Runden ein Spiel hat. Du sagst auf einer seite einfach "Neues Spiel erstellen" da kann man dann die ganzen angaben wie spieler und so machen.

Nachdem der Eintrag über das Spiel dann in der Datenbank gespeichert wurde hast du eine Seite die Informationen über das Spiel anzeigt. Hier ist dann für Administratoren ein Knopf "Runde hinzufügen" und da kannst du dann einfach so viele runden hinzufügen wie du willst.
 
Zurück
Oben