Avatar billede askovdk Nybegynder
28. april 2011 - 20:35 Der er 8 kommentarer og
1 løsning

Opdaterer flere form felter

Jeg har en indkøbskurv, med et forskellig antal varelinjer.



<input type="text" size="2" name="antal">


Så der er fx. 5 antal felter hvis der er 5 forskellige varer i kurven


Hvordan kan jeg lave det som EN form, med EN opdater knap, så jeg opdaterer alle linjer i min MySQL database ?
Avatar billede wanze Nybegynder
28. april 2011 - 21:11 #1
Du kunne lave det som et array og iterere over det i PHP.

<input type="text" name="antal[heste]" value="2" />
<input type="text" name="antal[grise]" value="4" />
<input type="text" name="antal[katte]" value="9" />

foreach ($_POST['antal'] as $navn => $antal)
{
...
}
Avatar billede askovdk Nybegynder
28. april 2011 - 21:22 #2
jeg er desværre ikke så meget inde i arrays ?

Så er ikke helt med på hvordan MySQL koden skal se ud, og hvad du mener med værdien heste osv :-)
Avatar billede wanze Nybegynder
28. april 2011 - 22:15 #3
Det er pointen, at det er de varer du har i kurven. Nu vil du nok bruge id's fremfor navne på dem, så heste, grise og katte er måske fjollede eksempler.

Hvorfor har du det i en MySQL-database og ikke bare en session? Det ville gøre det en del nemmere.

Hele idéen er dog, at du i foreach-løkken udfører den operation du vil være hvert element i kurven.
Avatar billede askovdk Nybegynder
28. april 2011 - 22:37 #4
Siden er allerede lavet med kurv som MySQL så derfor ;-)


Er det sådan her det skal laves ?: $navn = fx. heste ?

<input type="text" name="antal[heste]" value="2" />
<input type="text" name="antal[grise]" value="4" />
<input type="text" name="antal[katte]" value="9" />

foreach ($_POST['antal'] as $navn => $antal)
{


$sql = mysql_query("UPDATE kurv SET antal = '$antal' WHERE titel = '$navn'");

}
Avatar billede wanze Nybegynder
28. april 2011 - 22:44 #5
Ja, noget i den stil, bortset fra, at du skal huske at bruge mysql_real_escape_string()$antal og $navn. Du burde nok også validere, at indholdet faktisk er som det skal være. Folk kunne fx sætte $antal til at være en tekst, hvilket din database nok ikke vil synes om.

Men det der er vel heller ikke sådan databasen er opbygget - du har vel ikke kun én kurv?
Avatar billede askovdk Nybegynder
28. april 2011 - 23:00 #6
Nej det var bare et kort eksempel :-)

Kan man få flere værdier mer, hvis jeg nu også har

<input type="text" name="pris[grise]" value="200" />
Avatar billede wanze Nybegynder
28. april 2011 - 23:10 #7
Du kan gøre præcis det samme med $_POST['pris']. Dog vil jeg ikke råde dig til at bestemme prisen ud fra de felter, der står på siden. Stol aldrig på brugerdata.
Avatar billede askovdk Nybegynder
29. april 2011 - 21:25 #8
Smid svar, det virker perfekt :-)
Avatar billede wanze Nybegynder
30. april 2011 - 02:13 #9
Svar. ;-)
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