Avatar billede dennism Nybegynder
19. juli 2006 - 10:42 Der er 11 kommentarer og
1 løsning

PHP: indkøbskurv, hvordan?

Jeg er ved at lave et shoppingsystem hvortil der også skal være en indkøbskurv.

Jeg har tænkt mig at lave kurvens indhold, altså varerne i sessions. Er det ikke det nemmeste?

Men hvordan er det bedst at lave disse sessions. Skal jeg f.eks. når den første varer lægges i, lave en session der hedder shop001 f.eks. med værdien 24 (=id på varen), anden gang der lægges noget i shop002 f.eks. 31. Dertil skal så laves shopnum01 som angiver hvor mange antal? Har tænkt på, om der er en nemmere måde?

En anden mulighed er at registrere dem med shop024 med værdien 2 (=2 stk). Men så skal man køre hele databasen med varer igennem når man skal "scanne" indkøbskurven!? Er det godt eller skidt?

Vil gerne have lidt gode forslag. På forhånd tak.
Avatar billede drbean Nybegynder
19. juli 2006 - 10:44 #1
Avatar billede dennism Nybegynder
19. juli 2006 - 11:18 #2
Dvs. at jeg skal lave min session som et array, ik? :)
Avatar billede drbean Nybegynder
19. juli 2006 - 12:02 #3
Jep, det ville jeg foreslå
Avatar billede dennism Nybegynder
19. juli 2006 - 12:52 #4
Det ser også ud til at fungere fint :)

Vender nok lige tilbage med et par spørgsmål omkring arrays senere på dagen - håber du er frisk på at svare på dem :)

Tak for hjælpen.
Avatar billede dennism Nybegynder
19. juli 2006 - 16:44 #5
Jeg har nu følgende kode, som jeg bruger til at tilføje varer i min indkøbskurv:
    $article = array('id' => $_GET['id'],'num' => $_GET['num']);
    array_push($_SESSION['basket'],$article);

Det fungerer præcis som det skal, men har nu brug for en lille funktion.

Jeg vil gerne vide, om der i forvejen eksisterer en varer med id=$_GET['id'] i min session, inden jeg tilføjer den til array'et.
Fidusen er, at hvis varen i forvejen eksisterer i min session, skal num adderes med 1 (altså num++) istedet for at varen tilføjes igen.

Er det nogen du kan hjælpe mig et hint til?

Derudover skal jeg også bruge en funktion som kan slette den række i arrayet som f.eks. har id=5. Håber igen, at det er noget du kan hjælpe med?

På forhånd tak.

Jeg har ingen point på min eksperten konto lige nu - men vi lader dette spørgsmål stå åbent og så kan du få nogle flere point når jeg har nogle :)
Avatar billede dennism Nybegynder
19. juli 2006 - 17:16 #6
Så er der flere point :)
Avatar billede drbean Nybegynder
19. juli 2006 - 18:02 #7
hmm... kan desværre ikke teste her fra hvor jeg sidder nu, men...

så derfor, prøv noget i stil med:

en for løkke der løber dit array igennem, hvor du sammenligner på id'et, med det id du vil tilføje.

hvis du vil fjerne et element, så prøv noget i denne stil.
unset($SESSION['basket']['idnr']);

ang. point. Vil gerne hjælpe. Samler ikke på point alligevel...;-)

Sig til hvis jeg skal prøve at lave noget kode der virker imorgen. Men håber du kan se ideen
Avatar billede dennism Nybegynder
19. juli 2006 - 19:40 #8
Løsningen med for-løkken var også den metode jeg selv kunne komme på - troede bare der var en nemmere måde.

Vil lige forsøge mig med unset. Du hører fra mig :)
Avatar billede drbean Nybegynder
19. juli 2006 - 20:08 #9
Sry, det har været en lang dag. Selvfølgelig er der en lettere metode. se på http://dk.php.net/in_array
Avatar billede dennism Nybegynder
19. juli 2006 - 22:22 #10
Den anden måde, med en for-løkke, fungerer egentligt lige så godt, da jeg i forvejen skal hende nummeret på rækken i arrayet for at kunne ændre num i rækken.

Jeg har fået lavet nogle scripts som virker - vil du smide et svar?

Tak for hjælpen!
Avatar billede drbean Nybegynder
20. juli 2006 - 06:27 #11
Jamen selv tak. Som sagt, samler jeg ikke på point, så tage dem selv.
Avatar billede dennism Nybegynder
20. juli 2006 - 10:16 #12
Ok.

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