Mehrere Zeilen gleichzeitig überschreiben [PHP/SQL]
MooJay 11.06.2006 - 20:59 774 5
MooJay
Little Overclocker
|
Seas, also wie im Topic schon steht hab ich vor mehrere Zeilen in einer DB gleichzeitig mit EINEM Button zu überschreiben. Was ich genau meine? sql = SELECT * FROM table query(sql) forschleife...{ datenausgabe echo id, feld1, feld1 <br> } danach hab ich ne ausgabe, zb in textfelern die so aussieht. ID----NAME----EMAIL 1-----Joe----joe@... 2-----Koffer----koffer@... Wenn in diesen Zeilen nun Änderungen vornehme zB Joe => Humboldt oder in Zeile2 koffer@... => koffer2@... Möcht ich nicht jede einzeln, also mit einem Button pro Zeile speichern, sondern mit einem Zentralen Button am Ende der Page. Dazu hab ich die Namen der Text/Dropdown/Area Felder als Arrayelement definiert, sprich name="name[]"; So das ist ja alles nicht das Problem, nur wie speichere ich das? SQL for { query } oder for { sql } query ? Hab echt keinen Plan... hab alles probiert, entweder endlosschleife oder es passiert garnix. Hab auf php-resource.de schon versucht die "Lösung" zu finden, allerdings sind die Leute nicht sehr daran interessiert zu helfen... Lg MooJay
|
kleinerChemiker
Here to stay
|
ich würde das formular mal so aufbauen: id[1] = 1 name[1] = joe email[1] = joe@ dann kannst du das array leicht mit einer for-schleife durchlaufen z.b. for ($i=0;count($id)< $i; $i++) {
$query= "UPDATE table SET name=$name[$i],.... WHERE id=$id[$i]";
mysql_query($query);
}
natürlich alles mit passenden anführungsstrichen und mysql_escape_string() wenn du mysqli nutzt, kannst du auch mysqli_prepare() nutzen um das ganze zu beschleunigen. hth mik
|
MooJay
Little Overclocker
|
Danke für die Antwort, das Problem ist allerdings das ich verschiedene IDs zufällig je nach SQL ausgebe, also keine fortlaufende. zB können die IDs 2, 3, 5, 6 ausgegeben werden: Habs jetzt mit einer Foreach Schleife probiert. (Das Echo ist rein zum Test da!!!) if(isset($_POST['update_NW'])) {
foreach($_POST['id'] as $n) {
echo "".$_POST[kalenderwoche][$n]." - ".$n."<br>";
}
}
Hab 4 Datensätze zu verarbeiten, hier passiert leider das er nach 2 aufhört, wenn ich es mit ..$n => $dummy schreibe, baut er wieder eine fortlaufende ID, was nicht passieren darf ;( Zum Test hab ich folgendes in der DB stehen. ID------LIEFERTERMIN 2-------A----------- 3-------B----------- 5-------C----------- 6-------D----------- Wenn ich dann auf Submit drücke steht da: C - 2 D - 3 - 5 - 6 Hmpf!
Bearbeitet von MooJay am 11.06.2006, 21:58
|
kleinerChemiker
Here to stay
|
daß die id's nicht fortlaufend sind, ist anzunehmen, daher auch mein formular-vorschlag: id[1] = 1 name[1] = joe email[1] = joe@ id[2] = 4 name[2] = sack email[2] = sack@ id[3] = 14576457 name[3] = jack email[3] = jack@ außerdem schrieb ich von einer for-schleife wenn du aber unbedingt foreach nehmen willst, mußt dudein formular etwa so aufbauen vars[1][id] = 1 vars[1][name] = joe vars[1][mail] = joe@ vars[2][id] = 4 vars[2][name] = sack vars[2][mail] = sack@ vars[3][id] = 14576457 vars[3][name] = jack vars[3][mail] = jack@ dann kannst du mit foreach ($vars as $var) {
$query= "UPDATE table SET name=$var[name],.... WHERE id=$var[id]";
mysql_query($query);
}
|
MooJay
Little Overclocker
|
Also ich hab jetzt nochmal bisschen herumprobiert, und es scheint zu funktionieren.
Hab meine Foreach schleife oben genommen, aber zusätzlich zu den Feldern bei name nicht nur Variable[] sondern Variable[$id] hingeschrieben, weiss zwar nicht wieso es funktioniert, aber immerhin.
Nurnoch auf Fehler testen, obs auch wirklich geht^^
|
kleinerChemiker
Here to stay
|
vars[][id] = 1 vars[][name] = joe vars[][mail] = joe@
würde dir folgendes liefern
vars[1][id] = 1 vars[2][name] = joe vars[3][mail] = joe@
daher mußt du Variable[$id] schreiben
|