Avatar billede DePlex Nybegynder
28. december 2011 - 22:30 Der er 11 kommentarer og
1 løsning

Indkøbskurvssession

Hej rowlere!

Jeg ved at lave en webshop og jeg har brug for hjælp angående min indkøbkurvssession. Lige pt ser min session således ud:

$_SESSION['cart'][0,1,2,3,4 osv.][data om produkt]

Men så kom jeg i tanke om at hvis man nu skal købe ekstra af de samme produkt skal man ind og ændre ammount i produkt data. Så skal man lave et while der tjekker hvor tingens id passer. Man kan heller ikke bruge tingenes id ved [0,1,2,3,4 osv.], da det ville skabe store load tider ved en shop med mange varer. Så på en måde skal jeg have optimeret min indkøbkurvssession på en eller anden smart måde så den loader hurtigst muligt.
Hvis der er sikkert også en eller anden smart ting jeg ikke har tænkt på, så er i meget velkomne til at skrive det også :-)
Avatar billede olebole Juniormester
28. december 2011 - 22:56 #1
<ole>

Det kan gøres på mange måder - både med og uden samarbejde med MySQL - men i dit tilfælde lyder det, som on dette er en bedre løsning:

$_SESSION['cart'][vare_nummer][data om produkt]

- alt efter, hvordan resten af din struktur ser ud

/mvh
</bole>
Avatar billede olebole Juniormester
28. december 2011 - 22:58 #2
"Man kan heller ikke bruge tingenes id ved [0,1,2,3,4 osv.], da det ville skabe store load tider ved en shop med mange varer." >> Er det tilfældet, kunne det tyde på, du ikke burde bruge sessions til at gemme varerne i  =)
Avatar billede olebole Juniormester
28. december 2011 - 23:00 #3
- eller det kunne tyde på, at andre ting i din shop fungerer skidt
Avatar billede DePlex Nybegynder
29. december 2011 - 00:48 #4
Ja, men hvad så når man skal udskrive f.eks. en regning. Så skal man jo have while der kører med igennem flere tusinde gange(hvis det nu blev stort), hvilket jo vil gøre at min kode er langsom. Altså teste hvert vare_id om det er i sessionen igennem en while løkke.
Avatar billede olebole Juniormester
29. december 2011 - 01:07 #5
Det forstår jeg ikke. Det er da vel det stik modsatte, du skal gøre ...?!!???

Jeg forstår vist ikke rigtig, hvad det er, du er ude i - men det lyder afgjort sært  =)
Avatar billede DePlex Nybegynder
29. december 2011 - 01:11 #6
Altså... Jeg har min $_SESSION['cart'][$id][$info]. Hvordan ville jeg så på en nem måde kunne tjekke hvilke id der er i cart arrayet, så jeg kan udskrive de værdier der så er i id arrayet.

Håber du forstår :-)
Avatar billede olebole Juniormester
29. december 2011 - 01:38 #7
Hvis du bare vil have fat i ID'erne, kan du skrive:


$arrKeys = array_keys($_SESSION['cart']);
var_dump($arrKeys);


Men hvis du vil have fat i både ID'er og de tilhørende data, kan du bladre array'et igennem:


foreach ($_SESSION['cart'] as $key => $val) {
    echo '---------------------------<br>ID: <b>'.$key.':</b><br>';
    var_dump($val);
}

Avatar billede DePlex Nybegynder
29. december 2011 - 02:32 #8
Tak:-) Opret svar.
Avatar billede olebole Juniormester
29. december 2011 - 14:49 #9
Hmmm ... Eksperten er sq en sær størrelse. Nu igen får jeg en mail med en citteret tekst fra et indlæg, som ikke findes, når jeg logger ind ...?!??!!!
Avatar billede olebole Juniormester
29. december 2011 - 14:51 #10
*LoL* ... men når jeg selv laver et indlæg kommer det til syne! Jaja, kan man ikke finde ud af at kode, kan man jo altid oprette et forum om kodning!  :D

@DePlex: Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede DePlex Nybegynder
29. december 2011 - 16:00 #11
Haha :D

Endnu engang tak for hjælpen =)
Avatar billede olebole Juniormester
29. december 2011 - 16:10 #12
Selvtak  *o)
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