WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Mehrere Datensätze mit FOR-Loop updaten - aber wie? » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
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!

Nach oben