Avatar billede clausga Nybegynder
12. oktober 2007 - 10:14 Der er 12 kommentarer og
1 løsning

Opdater flere felter i database

Jeg har en tabel i MySQL der hedder kurv

nogle gange er det kun en vare der skal opdateres andre gange flere

hvis der fx er en vare lagt i kurven som hedder

titel          pris
Forsikring    1000

så skal den opdateres til titel= forsikring (25% rabat) og prisen til 750 kr.

jeg kan godt finde ud af at lave det hvis der kun er en forsikring i kurven, MEN hvad nu hvis der ligger 2 eller 3 ?

for først skal den jo hente titlen frem og tilføje (25% rabat) og derefter skal den også give 25% på alle priserne $pris*0,75

Hvordan laver jeg det hvis der er flere forsikringer i databasen ?
Avatar billede barklund Nybegynder
12. oktober 2007 - 10:19 #1
Hvis vi forestiller os, at dine forsikrings-rækker har et id og du har alle disse 1, 2 eller 3 id'er, så er det jo bare:

UPDATE table SET price = price*0.75 WHERE id IN (1,2,3)

Skal du opdatere navnet, så er du nødt til at gøre det med én query for hver række:

UPDATE table SET name = 'Forsikring 1' WHERE id = 1
UPDATE table SET name = 'Forsikring B' WHERE id = 2
UPDATE table SET name = 'Forsikring III' WHERE id = 3

:)

--
Morten Barklund
Avatar billede clausga Nybegynder
12. oktober 2007 - 10:37 #2
den skal bare altid opdatere alt hvor vareid > '99999900' for forsikringerne har altid et id der er højrer end dette....

og jeg kan jo ikke lave en query for hver række da jeg ikke ved hvor hvor mange forsikringer der er i kurven ?
Avatar billede barklund Nybegynder
12. oktober 2007 - 10:41 #3
Selvfølgelig kan du da det - du laver da bare en løkke i PHP som:

$rows = array(1 => "Forsikring 1", 2 => "Forsikring B", 3 => "Forsikring III");
foreach ($rows as $id => $name) {
  mysql_query("UPDATE table SET name = '$name' WHERE id = $id");
}

Så bruger den jo længden af arrayet til at lave queries ud fra.
Avatar billede clausga Nybegynder
12. oktober 2007 - 10:48 #4
det kan godt være jeg er lidt dum :) men jeg forstår den desværre ikke, den bliver nødt til at opdatere ud fra at vareid > '99999900' er større end, da jeg ikke kender ID'erne i forvejen....
Avatar billede barklund Nybegynder
12. oktober 2007 - 10:58 #5
Jamen, du har jo ikke sagt en lyd om, hvad du specifikt har - udover at du vil opdatere flere rækker på én gang. Og da det er mit eneste udgangspunkt, så kan jeg kun komme med generelle guides til, hvordan du skal gøre det :)

Hvis du siger: Jeg har den her formular, de har variabler bliver sendt, databasen har disse felter og disse rækker, hvordan kan jeg så...

Så kan jeg jo meget bedre hjælpe dig med noget specifikt, men så længe du spørger generelt, så får du kun generelle svar :)
Avatar billede clausga Nybegynder
12. oktober 2007 - 11:07 #6
prøver igen :) jeg har den tabel, det kan være der KUN er 1 forsikring der i, det kan også være der er 10 forsikringer der i, jeg kender ikke ID'erne på forhånd, men forsikringerne i tabellen har ALTID et være ID der er større end 99999900.

Så alt der ligger i tablen kurv, der har et vareid der er større end 99999900 skal opdateres, prisen skal *0,75 og ved titlen skal der tilføjes "(rabat 25%)", og som skrevet tidligere måske er der kun 1 der skal opdateres, eller måske er der 10...
Avatar billede zurekk Nybegynder
12. oktober 2007 - 11:15 #7
UPDATE table SET name='noget' WHERE id>99999900
Avatar billede barklund Nybegynder
12. oktober 2007 - 11:21 #8
Ja, hvis du bare skal opdatere alle rækkerne på den måde, så er det:

UPDATE table SET name=CONCAT(name, ' (25% rabat)', pris = pris * 0.75 WHERE id>99999900

:)

--
Morten Barklund
Avatar billede clausga Nybegynder
12. oktober 2007 - 11:40 #9
Der er et eller andet som ikke virker ?

mysql_query("UPDATE kurv SET varetitel=CONCAT(varetitel, ' (25% rabat)', pris = pris * 0.75 WHERE vareid>99999900 && ip = '$ip' && unikkode = '$u'");

den gør ikke noget, eller jo det ændre i mit vareid ??? hvordan kan det lige ske ?
Avatar billede barklund Nybegynder
12. oktober 2007 - 11:58 #10
Ovenstående query giver en fejl, da jeg lavede en fejl - der mangler en slutparentes:

mysql_query("UPDATE kurv SET varetitel=CONCAT(varetitel, ' (25% rabat)'), pris = pris * 0.75 WHERE vareid>99999900 && ip = '$ip' && unikkode = '$u'");
Avatar billede clausga Nybegynder
12. oktober 2007 - 12:10 #11
smid svar :)
Avatar billede barklund Nybegynder
12. oktober 2007 - 12:28 #12
Oki :)
Avatar billede barklund Nybegynder
12. oktober 2007 - 12:42 #13
Jeg siger tak :)
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