von languitar |
das Escapen mit mysql_escape sollet man sich grundsätzlich angewöhnen.
Kennst du das PHP-Manual: www.php.net ?
foreach ist viel praktischer in den meisten Fällen. |
von Nobbidobby |
Vielen Dank! - Mein lieber Mann, da war ich aber nahe dran!
$_POST['question'][$i] - man hängt das $i einfach in eckigen Klammern dran...
Das mit ".mysql_escape_string($_POST['question'.$i]).", sieht sehr interessant aus, muss ich noch austesten.
Gut- ich habs jetzt eigentlich gelöst, meine Quizze laufen, allerdings ohne foreach.
Ich hatte das vorher mit foreach probiert, doch muss ich da, offen gesagt, noch eine Wissenslücke füllen.
Man würde das in etwa so schreiben?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10: | // $array beinhaltet $_POST[' usw. ']
foreach ( $array as $v)
{
// weitere Aktionen, wie z.B. $v in die Datenbank einfügen
query = "Update XY field = '$v' ";
} |
|
von subjective |
Du kannst in Strings zwar direkt Variablen einsetzen, wenn es komplexer wird, mußt du jedoch den String unterbrechen.
1: | ... field = '".mysql_escape_string($_POST['question'.$i])."'... |
Außerdem kann PHP dort auch Arrays erzeugen. Wenn du den Namen im Input-Field passend angibst:
1: | <input type="text" name="question[1]"/> |
erzeugt PHP daraus ein Array auf welches du mit $_POST['question'][1] zugreifen kannst. |
von HoRnominatoR |
kennst du foreach() ? |
von Nobbidobby |
Hallo,
ich arbeite gerade an einem Quiz-Editor und hänge grade fest...
Ich habe ein 'Quiz-Update-Formular' in dem alle (20) Quiz-Fragen aufgeführt werden mit vielen veränderbaren Details wie mögliche Antworten, Punkte, Bild-Datei usw.
Nach evt. Abändern schicke ich das ganze per 'Post' zum Update-Script und hier soll eine Update-Query die Daten in der Datenbank updaten. Jede Quiz-Frage ist ein Datensatz.
Da es ja mehrere Datensätze (20) sind, ändere ich mit einer FOR-Schleife die WHERE-Bedingung ab. Alles Cool, bis zu diesem Punkt. Es werden tatsächlich alle gewünschten Datensätze abgeändert.
Code:
1:
2:
3:
4:
5:
6:
7:
8: | $Anzahl = 20; // z.B.
for ($e = 0,$no = 1; $e < $Anzahl; $e++,$no++) {
$query = "UPDATE Quiz_Editor SET question='$question' WHERE no = '$no' ";
mysql_query($query);
} |
NUR: Im Datensatz von z.B. Quiz-Frage 3 sollen natürlich nur die geänderten Daten von der Frage 3 vom Formular rein - und nix anderes.
Mein Problem: Netterweise sind ja alle Formulardaten im Array S_POST[ 'you name it' ] enthalten.
Momentan nummeriere ich die Namen der Variablen vom Formular durch und sie sind so auch im POST-Array: question1, question2 usw.
Jetzt wärs natürlich naheliegend dieses POST-Array auch durchzu'loopen' um immer die passenden Daten zu bekommen - so in der Art:
Code:
1:
2:
3:
4:
5: |
for ($e = 0,$no = 1; $e < $Anzahl; $e++,$no++) {
$query = "UPDATE Quiz_Editor SET question='$_Post[question$no]' WHERE no = '$no' ";
mysql_query($query); |
...aber das geht anscheinend so nicht.
Wie müsste man die Query und vielleicht auch die übergegebenen Daten vom Formular abändern, damit das klappt?
Vielen Dank im voraus!
---
Entweder es haut hin oder zurück! |
|