Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Mehrere Datensätze mit FOR-Loop updaten - aber wie? Antworten
Mehrere Datensätze mit FOR-Loop updaten - aber wie?

Nobbidobby
Pixelschubser


Beiträge: 5


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!

Diese Nachricht wurde geändert von: Nobbidobby
  Profil   Website   Editieren   Zitieren

HoRnominatoR
Mausakrobat


Beiträge: 165


kennst du foreach() ?

---
get OPERA for free

  Profil   E-Mail   Website   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


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.

---
Weaverslave

  Profil   Website   Editieren   Zitieren

Nobbidobby
Pixelschubser


Beiträge: 5


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' "; 

}




---
Entweder es haut hin oder zurück!

  Profil   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


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.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben