Avatar billede RJFreelance Praktikant
12. december 2003 - 22:04 Der er 37 kommentarer og
1 løsning

håndtering af cookies til kurv

Ja jeg skal jo ha lavet denne kurv til en shop.

Jeg skal ha fundet ud af hvordan jeg får lavet det bedst.

Først skal jeg ha den til at tjekke om man har nogle varer i kurven

if ($_COOKIE[varer]) {
Vis varene
} else {
echo "Ingen varer i kurv!";
}

Hvordan laver jeg det? ^^^^

Næste ting:

Hvordan får jeg smidt en vare i kurven ?

opret en cookie til hver varer man har købt hvor der står antal og varens id ??

Hvordan laves det så ??


Håber i forstår / vil hjælpe ??
Avatar billede ztyxx Nybegynder
12. december 2003 - 22:08 #1
kan du ikke bare lave et array af dine varer, som så gemmes i din cookie?
Avatar billede 7th Praktikant
12. december 2003 - 22:09 #2
if (isset ($_COOKIE['varer'])) {
Vis varene
} else {
echo "Ingen varer i kurv!";
}

Jeg ville personlig blot bruge en cookie, og så have et array indeni cookie indeholdende alle varene på formen $_COOKIE['varer'][$id] = $antal
Avatar billede RJFreelance Praktikant
12. december 2003 - 22:10 #3
Ja men kan jeg få koden til at trække cookiesne ud og vise dem ??
Avatar billede RJFreelance Praktikant
12. december 2003 - 22:10 #4
altså:

Varens-id  _  antal
Varens-id  _  antal
Varens-id  _  antal
Varens-id  _  antal
Avatar billede ztyxx Nybegynder
12. december 2003 - 22:10 #5
du skal explode din cookie, og vise varerne på den måde
Avatar billede RJFreelance Praktikant
12. december 2003 - 22:11 #6
Ja men skal bruge noget kode da jeg aldrig har arbejdet med cookies før
Avatar billede ztyxx Nybegynder
12. december 2003 - 22:14 #7
<?php
$nyval = explode(";", $_COOKIE["varer"]);
    for($i=0; $i<count($nyval); $i++) {
        echo $nyval[$i] . "<br>";
    }

?>
Avatar billede 7th Praktikant
12. december 2003 - 22:19 #8
// $_COOKIE['varer'][$id] = $antal

foreach ($_COOKIE["varer"] as $key => $val) {
        echo "vare id: ".$key." og antal: ".$val;
}
Avatar billede RJFreelance Praktikant
12. december 2003 - 22:20 #9
og hvordan skal jeg så lave cookien ??

Altså setcookie(); den skal kaldes varer og hvad skal den så indholde ??
Avatar billede RJFreelance Praktikant
12. december 2003 - 22:38 #10
Blev i trætte af mig ?? :)
Avatar billede 7th Praktikant
12. december 2003 - 22:49 #11
Nææ. Din cookie skal indeholde et array, det synes jeg ihvertfald er nemmest.
Avatar billede RJFreelance Praktikant
12. december 2003 - 22:50 #12
Ja men hvordan??

Har virkelig aldrig arbejdet med cookies hvilket irriterer mig :)
Avatar billede ztyxx Nybegynder
12. december 2003 - 22:51 #13
men i virkleigheden er det vel smartere at bruge sessions, da brugerne jo kan have cookies deaktiveret i deres browsere
Avatar billede RJFreelance Praktikant
12. december 2003 - 22:52 #14
$antal = 2;
$varerid = 12;
session_register('antal','varerid');

Kan jeg jo ikke rigtigt bruge til noget ?? ElleR ?
Avatar billede lajer Nybegynder
12. december 2003 - 22:53 #15
Hvis du har en database tilknyttet til dit system. Så vil foretrække at bruge sessions i stedet.

Og så gemme de varer man har tænkt sig at købe i databasen.

På den måde undgår du en masse underligt kode med at explode cookies, sætte arrays i cookies og hele taget cookies generelt. Jeg er ikke den store fan af cookies og e-handel i samme smører.
Avatar billede RJFreelance Praktikant
12. december 2003 - 22:55 #16
Ok. Ja har database med i det og har intet imod at bruge det.. Men hvordan vil du kombinere det?? Så databasen ikek bliver fuld af folk der har smidt noget i kurven og så gået ud af siden ??
Avatar billede lajer Nybegynder
12. december 2003 - 23:10 #17
Du sørger først for at kunne identificere brugeren hele tiden. Enten bruge SID eller sæt en unik streng som session hos brugeren.

Noget i denne stil:

session_start();
$_SESSION["UserID"] = md5(uniqid(rand()));

Nu kan du altid holde styr på hvem brugeren er.

Når en bruger så tilføjer en varer til kurven, så ligger du varen i din tabel, sammen med dato og klokkeslet, varens id samt brugerens unikke id.

Så er det simpelt at hive ud fra databasen. Slette, redigere og hvad du nu ellers har lyst til. - Samtidigt undgår du cookies. De er ikke fede til e-handel, bla. fordi brugeren kan have disabled cookies osv.

For ikke at din tabel skal blive fyldt op med ubrugelig data, som tilfældige brugere har smidt i kurven. - Så kunne du slette alle records i tabellen der var mere end X antal timer gammelt hele tiden.

// Lajer
Avatar billede RJFreelance Praktikant
12. december 2003 - 23:20 #18
Det værste er så at jeg skal have lavet noget cron job ELLER jeg kan hver gang ind kommer ind på siden tjekke efter om der er nogle der er for gamle..

Skal lige høre om jeg har det helt rigtigt:


i min kurv.php laver jeg:

session_start();
$_SESSION["UserID"] = md5(uniqid(rand()));

hent fra db hvilke varer $_SESSION["UserID"] har tilføjet. Er antallet nul skrives det :)

Når man så vil addere en varer i kurven indsætter man bare varen og laver ens id til $_SESSION["UserID"]..

Sådan ?
Avatar billede lajer Nybegynder
12. december 2003 - 23:23 #19
Yeah something like that.

Hvis du ikke vil lege med cron job eller noget andet i den dur. Så kunne du jo være fræk, og lave en query der slettede alle "gamle" records, hver gang en bruger tilføjede en varer.
Avatar billede ztyxx Nybegynder
12. december 2003 - 23:24 #20
eller bare kørte delete fra en hvilken som helst side, eksempelvis startsiden
Avatar billede RJFreelance Praktikant
12. december 2003 - 23:32 #21
Citere lige mig selv:

ELLER jeg kan hver gang ind kommer ind på siden tjekke efter om der er nogle der er for gamle..


_____-----_____

hehe. Men jeg vil lige prøve at lege lidt med det og så får du points hvis det er :)
Avatar billede RJFreelance Praktikant
12. december 2003 - 23:34 #22
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in

Får jeg når jeg vil udskrive mit uniqe id:

session_start();
$_SESSION["UserID"] = md5(uniqid(rand()));
echo "$_SESSION["UserID"]";
Avatar billede lajer Nybegynder
12. december 2003 - 23:40 #23
din echo skal se sådan her ud:

echo $_SESSION["UserID"];

Ellers forsøger du at udskrive en streng...
Avatar billede 7th Praktikant
12. december 2003 - 23:46 #24
Hvorfor ikke bare bruge din session til håndtering af det hele? Jeg ser det som lidt spild af ressourcer at bruge en database, når du har så få oplysninger, som skal håndteres.

Du har et session array indeholdende de forskellige varer på formen
$_SESSION['varer'][$id] = $antal

Arraynøglen angiver så varenummer, og arraynøglens værdi angiver antal af den pågældende vare. For at finde ud af hvor mange varer der totalt er i indkøbskurven, tæller du blot dit session array.
Avatar billede RJFreelance Praktikant
12. december 2003 - 23:47 #25
Har ikke noget imod at bruge databaser MEN ens uniqe id skifter jo hele tiden så hvad er fordelen ?? Så vil den jo aldrig finde nogle ting i kurven!!
Avatar billede lajer Nybegynder
12. december 2003 - 23:51 #26
7th: spild af resourcer... Tja, hvor mange micro millisekunder tager det længere at dykke et en fornuftigt opbygget db struktur, frem for at loope et array fra en session????

Og hvad gør du når du skal logge alt hvad folk laver? - Udvider din sessions med et endnu størrer multidimentional array?

Hvad når du skal lave statistikker... Logger IP adresser. Eller hvad man nu måtte have lyst?

Jeg tvivler stærkt på at det er nogen fordele ved at have et kæmpe array i sine sessions.

My 2 cents
Avatar billede RJFreelance Praktikant
12. december 2003 - 23:53 #27
Den skifter jo userid hele tiden så der er jo ingen fordel i det mere. Så når den dykker ned i databasen for at henteuseridét på den bruger der er på siden vil den aldrig finde noget lige meget hvor mange varer man tilføjer
Avatar billede lajer Nybegynder
12. december 2003 - 23:53 #28
For at finde ud af hvor mange varer der totalt er i indkøbskurven, tæller du blot dit session array. < Og hvad hvis man bruger sine sessions til mere en bare den kurv. :-)

Nb. jeg har ikke sovet i herre mange timer (IGEN), så hvis jeg formulerer mig som en and, så vil jeg tillade mig at give det skylden ;)
Avatar billede ztyxx Nybegynder
12. december 2003 - 23:54 #29
userid i en session vil ikke ændre sig, sålænge browseren ikke lukkes ned
Avatar billede lajer Nybegynder
12. december 2003 - 23:54 #30
supreme-creme: Du skal kun sætte den session ÈN gang.

Check eventuelt på om du har sat din session... Har du ikke, så sæt den. På den måde vil UserID ikke skifte hele tiden.
Avatar billede RJFreelance Praktikant
12. december 2003 - 23:55 #31
self. er vist lige så trtæt som dig :=)
Avatar billede RJFreelance Praktikant
13. december 2003 - 00:00 #32
CREATE TABLE webshop_basket (
  id int(10) NOT NULL auto_increment,
  produktid int(8) NOT NULL default '0',
  count int(15) NOT NULL default '0',
  sesid int(90) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;


Ser det ikke fint ud ?
Avatar billede 7th Praktikant
13. december 2003 - 00:02 #33
Jeg snakker ikke om micro millisekunder, men om det kan betale sig at bruge både en session og en database til at lagre en indkøbskurv, når der kun er tale om to parametre - to numre.

Som udgangspunkt går jeg personligt ikke ud fra, at en brugeren vælger at lægge varer i inkøbskurven, for derefter at logge sig af eller lukke browseren, logge sig på igen og bestille varerne fra indkøbskurven.

Hvis du gerne vil bruge en database kunne du for eksempel oprette en tabel med et navn som er lig med session_id. I tabellen lagre du så bare varenummer og antal.
Avatar billede lajer Nybegynder
13. december 2003 - 00:03 #34
sesid < hvad er det?

Hvis det er der hvor du vil gemme brugens id, så skal det var en varchar(32)

Du har måske ikke brug for din auto_increment. Men ellers skulle det virke.
Avatar billede lajer Nybegynder
13. december 2003 - 00:05 #35
7th: oprette en tabel med navnet lig session_id????

Se det er hvad jeg kalder OVERKILL ;)

My 2 cents, vi bliver nok aldrig enige alligevel.
Avatar billede RJFreelance Praktikant
13. december 2003 - 00:07 #36
Jeg smutter i seng nu..

Ved det vil virke :)

Men skal til julefrokost i morgen såå :)
Avatar billede RJFreelance Praktikant
14. december 2003 - 13:48 #37
Så nu er jeg nået rimelig langt med det :)

Nu er det sådan at hver gang man kommer ind på index.php så tjekker den efter gamle varer i kurven (over en time gamle)


Lajer smid et svar ;)
Avatar billede RJFreelance Praktikant
16. december 2003 - 17:27 #38
sÅ lukker jeg selv.
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