Avatar billede smeier Nybegynder
02. maj 2010 - 14:11 Der er 6 kommentarer og
1 løsning

splitte cookie oprettet i javascript.

Hej Eksperter.

Jeg har anvendt en javascript indkøbsvogn der hedder simplecart, har oprettes en cookie som, når jeg kalder den i php (  echo $_COOKIE["simpleCart"];  ) giver følgende output.

id=c1||name=vare et. ||price=44||size=tiny||quantity=1 id=c2||name=vare to ||price=60||size=tiny||quantity=1    ....osv osv osv

Jeg ville gerne kunne splitte den op således at jeg kan få den som jeg vil, fx.:

-> vare et.    pris=44
-> vare to.    pris=60
osv osv

Men er lidt på bar bund. Nogle der kan pege mig i den rigtige retning af hvad jeg skal gøre?

Mvh Troels
Avatar billede repox Seniormester
02. maj 2010 - 14:33 #1
Kig på http://php.net/explode

Det er lidt svært at se hvad det er der opdeler linierne. men jeg gætter på det er en tabulering (\t).

Så nok noget med:
<?php
$lines = explode("\t", $_COOKIE["simpleCart"]);

foreach( $lines as $line )
{
  $data = explode("||", $line);
  var_dump($data);
}

?>
Avatar billede Slettet bruger
02. maj 2010 - 15:06 #2
Du skal liige være opmærksom på at den maksimale størrelse på en cookie langt fra er ubegrænset.

Og den varierer (selvfølgelig) fra browser til browser, suk.

Du skal ikke regne med mere end 4K (samlet for alle cookies på et domain)
Avatar billede smeier Nybegynder
02. maj 2010 - 16:08 #3
T4NK3R ->Tak for huskeren. Er klar over det, heldigvis er jeg 100% sikker på at ingen bestillinger lyder på mere end 3-5 varer og derfor burde den ikke overskride de 4k. (håber jeg da)


repox -> Det er ligepræcis sådan noget jeg ville have fat i. Prøver at fifle lidt rundt med det.
Vil gerne ende op med resultat der

1. først deler linjerne op (det gør jeg ved at splitte den ved " id")
og
2. derefter deler alle linjerne ved "||" og looper igennem alt. Således at den viser nummer 2 (name=xxx) og nummer 3(price=xxx) for alle linjer der er.


1. del er jeg med på. Men er lidt i tvivl om hvordan jeg skal greje nummer 2. Da jeg vil skal køre 1 loop i et andet loop og det er jeg ik så stærk i. Nogen forslag eller råd?
Avatar billede repox Seniormester
02. maj 2010 - 16:43 #4
Jeg er ikke sikker på jeg forstår hvad problemet er med at køre et loop i et loop?
Avatar billede smeier Nybegynder
03. maj 2010 - 08:14 #5
Jeg fik lige præcis det resultat jeg ledte efter
Ved det sikkert kan gøres kortere og smartere, men det funker.
<php
$total_kurv =  $_COOKIE["simpleCart"];
$enkeltlinje_kurv = explode(" id", $total_kurv);

foreach ($enkeltlinje_kurv as $enkeltlinje)  {
    $enkeltpunkter = explode("||", $enkeltlinje);
    echo "<br />";
    echo $enkeltpunkter[1];
    echo " - ";
    echo $enkeltpunkter[2];
    echo "<br />";
}
?>

Gider du svare repox så du kan få point. Tusind tak for hjælpen.

et sidste bonus spørgsmål:
i mine $enkeltpunkter[1] og $enkeltpunkter[2] får jeg resultater som name=xxx og price=xxx.
Er der en smart måde jeg kan fjerne "name=" og kun vise resten.
Det er ikke streng nødvendigt men ser lidt bedre ud. :-)
Avatar billede repox Seniormester
03. maj 2010 - 08:34 #6
Prøv med:
echo end(explode("=", $enkeltpunkter[2]));
Avatar billede smeier Nybegynder
03. maj 2010 - 08:50 #7
havde jeg overvejet, men tænkte at der sikkert var en bedre løsning til at fjerne dele af en string.
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