"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Mehrere Zeilen gleichzeitig überschreiben [PHP/SQL]

MooJay 11.06.2006 - 20:59 774 5
Posts

MooJay

Little Overclocker
Registered: Mar 2005
Location: Salzburg
Posts: 82
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. :mad:

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
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
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.

Code: PHP
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
Registered: Mar 2005
Location: Salzburg
Posts: 82
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!!!)

Code: PHP
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
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
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

Code: PHP
foreach ($vars as $var) {
$query= "UPDATE table SET name=$var[name],.... WHERE id=$var[id]";
mysql_query($query); 
}

MooJay

Little Overclocker
Registered: Mar 2005
Location: Salzburg
Posts: 82
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
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
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
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz