Avatar billede dr_demento Nybegynder
08. november 2005 - 18:51 Der er 4 kommentarer

mysql, Ændring af flere rows samtidig

Kære eksperter.
Jeg har et problem med følgende:

Forestil jer en form tabel med forskellige varenumre og x antal vare(r)
vareid'er og antal bliver hentet fra mysql, via et loop til en tabel, og så listet i formen.

<form method="POST" name="update" action="">
    <p><input type="text" name="qty" size="3" value="<?=$row[qty]?>"><br>
    <input type="text" name="qty" size="3" value="<?=$row[qty]?>"><br>
    <input type="text" name="qty" size="3" value="<?=$row[qty]?>"></p>
    <p><input type="submit" value="opdater"></p>
</form>


feltet "antal" skal så opdateres i cart tabellen, hvis man ændrer antallet og trykker opdater.

Men hvordan får man php til at tjekke samtlige "qty" felter, om de er ændret, og hvis de er, så opdatere de ændrede?
Avatar billede jakobdo Ekspert
08. november 2005 - 18:55 #1
Hvis du vil tjekke om det er ændret, skal du bruge select først.
Men du kan evt "bare" bruge UPDATE tabel set qty=new_qty WHERE id= $id
Avatar billede bromer Nybegynder
08. november 2005 - 18:57 #2
For det første skal du kun have een form ikke? Du kan så inde i et loop udskrive følgende til hver række:

<p><input type="text" name="qty[varenr]" size="3" value="<?=$row[qty]?>">

På den anden side kan du så løbe igennem dine varer med:

<?php
foreach($_POST['qty'] as $varenr => $antal) {
// Update vare med varenr $varnr. Der er $antal af dem
}
?>
Avatar billede dr_demento Nybegynder
08. november 2005 - 19:30 #3
hmm ved ik helt om det er rigtigt det her...Virker ik ihvertfald..
i formen har jeg ændret inputtet til name="qty[<?=$row['itemId']?>]"


Og update delen ser sådan her ud :


$result = mysql_query("select * from cart inner join items on cart.itemId = items.itemId where cart.cookieId = '" . GetCartId() . "'");
while($row = mysql_fetch_array($result)) {
foreach($_POST['qty'] as $row[itemid] => $antal) {
mysql_query("update cart set qty = $antal where cookieId = '" . GetCartId() . "' and itemId = $varenr");

}
   
    }
Avatar billede jakobdo Ekspert
08. november 2005 - 19:38 #4
Din linie:
foreach($_POST['qty'] as $row[itemid] => $antal)
skal rettes til:
foreach($_POST['qty'] as $varenr => $antal) (som bromer også er inde på)
Og din update til:
mysql_query("update cart set qty = $antal where cookieId = '" . GetCartId() . "' and itemId = $varenr");
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester