Veröffentlicht 15. August 200223 j Hi Ich hab folgendes Problem: Ich will eine Eingabe machen (hier Softwarekeys), abhängig von der Zahl der Keys (steht in einer SQL Datenbank). Die eingegebenen Keys sollen dann wieder in die SQL Datenbank geschrieben werden. # Hier les ich die Keyzahl aus der Datenbank $keyzahl=mysql_result($res, 0, "keyzahl"); #Hier wird sooft eine Eingabe ausgegeben, wie Keys vorhanden sind, der Name(key$i) zählt auch richtig hoch (key1,key2,key3...) for ($i=1; $i<=$keyzahl; $i++) { echo " <table> <tr> <td width=50>Key $i</td> <td> <input size='20' maxlength='20' name='key$i'></td> </tr> </table> "; } Sooo aber nun kommts: Wie trage ich die Ergebnisse der Eingabe in eine SQL Datenbank ein? Ich weiss ja nicht wieviel key1,key2...keyn Variablen ich habe. Ich habs wieder mit ner for-Schleife probiert, aber wie kann ich die Variable key hochzählen? Ich hoffe ich hab mein Problem so geschildert, dass es verstanden wird Versuch, geht nicht, da $key$i ja eigentlich keinen Sinn macht (oder $($key$i)??) for ($i=1; $i<=$keyzahl; $i++) { mysql_db_query("software", "insert keyz (id, keywert) values ('$id', '$key$i')"); }
15. August 200223 j Hmm, du hast doch das $_POST-Array... - damit dürfte es wie folgt gehen: for ($i=1; $i<=$keyzahl; $i++) { mysql_db_query("software", "insert keyz (id, keywert) values ('$id', '$_POST[key$i]')"); } [/PHP] Hab's aber nicht getestet...
15. August 200223 j Hi, mir fallen mehrere moeglichkeiten ein. a) du uebergibst in nem hidden field die anzahl, das waer am einfachsten du gehst durch und bildest ueber ${"key".$zahl} in einer schleife die variablen und ueberpruefst ob sie gesetzt sind. c) du gehst das POST Array durch und holst dir da alles raus was mit key beginnt. Ich wuerd eindeutig das erste nehme :-) Michael
15. August 200223 j Original geschrieben von Impulz a) du uebergibst in nem hidden field die anzahl, das waer am einfachsten Ne ne, das reicht so nicht. So hat er zwar die Anzahl der Schleifendurchläufe, kann die Variablen $key1 bis $keyn ja aber trotzdem nicht ansprechen... - er will ja in jedem Durchlauf eine der Variablen weiterspringen - das ist dann nur über deine Möglichkeit b oder das Array möglich... und da es eh sicherer ist, die globalen Variablen auszuschalten und nur mit den Arrays zu arbeiten, würd ich die Lösung bervorzugen!
15. August 200223 j Hi Also ich hab Möglichkeit ausprobiert und die funktioniert erstmal. Thx an alle. Wenn ihr noch nen besseren Vorschlag habt, bin ich dafür offen. Noxy
15. August 200223 j Original geschrieben von Noxy <input size='20' maxlength='20' name='key$i'></td> mysql_db_query("software", "insert keyz (id, keywert) values ('$id', '$key$i')"); Hallo, das oben musst du in etwa so schreiben: (Falls ich dich richtig verstanden habe.) <input size='20' maxlength='20' name='key[$i]'> mysql_db_query("software", "insert keyz (id, keywert) values ('$id', '$key[$i]')"); Gruß Jaraz
15. August 200223 j Original geschrieben von Jaraz Hallo, das oben musst du in etwa so schreiben: (Falls ich dich richtig verstanden habe.) <input size='20' maxlength='20' name='key[$i]'> mysql_db_query("software", "insert keyz (id, keywert) values ('$id', '$key[$i]')"); Gruß Jaraz Kann man wirklich Arrays über die Namen von Formularfeldern anlegen? Hätte ich jetzt nicht gedacht - wäre aber ziemlich super...
15. August 200223 j Benutze einfach <input type="text" name="variable[]"> Du brauchst noch nicht einmal einen Index in das Array zu legen, sondern kannst dann im Skript einfach mit foreach über variable laufen. Um den Index kümmert sich PHP selbst... mysql_db_query ist deprecated und würde ich demnach nicht mehr benutzen. Benutze stattdessen lieber mysql_select_db() und mysql_query()
15. August 200223 j Original geschrieben von begga Benutze einfach <input type="text" name="variable[]"> Du brauchst noch nicht einmal einen Index in das Array zu legen, sondern kannst dann im Skript einfach mit foreach über variable laufen. Um den Index kümmert sich PHP selbst... Das wusste ich auch noch nicht. Wieder was gelernt. Gruß Jaraz
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.