Jeg sitter og har prøvd å laget min egen handlevogn, men får det
ikke helt til.
Er det noen som kan sette meg i riktig retning.
Er litt usikker på metoden jeg bør bruke.
Har prøvd litt med bare sessions på
http://www.nettserver.com/nettbutikk/
Men har ikke helt troen på at dette er riktig.
Hva med msession, er dette noe jeg bør se litt på?
Det jeg sliter med er dette med å legge til flere like artikler
underveis i handlingen, og dette med å kunne fjerne en vare.
Hvordan bør jeg lagre dette, og hva bør strengen inneholde liksom?
Noen som har ett tips og to til hva jeg bør sjekke ut?
Bruker PHP 5.1.1
--
Mvh
Håkon Helgesen
--
Mvh
Håkon Helgesen
<URL: http://www.php.net/msession >
Eldste kommentaren er fra 2002, så den er nok ikke helt ny. Hadde det
sittet masse folk med erfaring om denne saken hadde du nok fått vite det
innen nå.
Alternativt kan jo gjøre som andre må med ny teknologi; sette deg inn i
det, også kan du være resursperson på msession på no.it.programmering.php.
--
Vennlig hilsen
Erlend Klakegg Bergheim
Jeg bruker session på alt, har ikke kommet til noen "problem" områder
enda.. Om du kan forklare meg hvordan du har bygget sessions objektet
ditt, kanskje jeg kan bidra litt mer.
Jeg lagrer ofte handlekurven som en array eller som et klasse objekt i
sessionen. Dette har gått smertefritt enn så lenge..
> Hvordan bør jeg lagre dette, og hva bør strengen inneholde liksom?
Se svar over..
--
mvh
Glenn O Larsen
Håkon Helgesen skrev:
> Håkon Helgesen skrev:
>> Hmmm ingen som har peil på dette?
>> Er msession en ny funksjon i php siden
>> det er så lite omtale rundt dette?
>
> <URL: http://www.php.net/msession >
>
> Eldste kommentaren er fra 2002, så den er nok ikke helt ny. Hadde det
> sittet masse folk med erfaring om denne saken hadde du nok fått vite det
> innen nå.
En god grunn til ikke å benytte msessions i scriptene dine er at du da
ikke lenger har portabel kode.
Les mer: http://www.mohawksoft.org/?q=node/2
--
Thomas
Ok, så det holder lenge med vanlig sessions og arrays det er bra.
Er litt bedre dokumentert der ja.
Vil hver array kunne søkes opp og erstattes dersom du ønsker varen
fjernet eller at du vil ha flere av samme varen?
Tenker på om du alerede har lagt inn 1 artikkel med 1 i antall, vil
det være lett å kunne bytte ut antallet med f.eks 2 eller slette bare
den varen?
Hva bør jeg se nærmere på?
Dette med sessions er helt nytt for meg ser du...
Takker for innspill Glenn.
--
Mvh
Håkon Helgesen
Vi snakker da virkelig om en array her...
if (isset($minHandlekurv[$varenummer]))
{
// Varen eksisterer i handlekurven, så endring av antall
// eller sletting kan utføres.
} else {
// Varen eksisterer ikke i handlekurven, så da må den
// legges til eller trengs ikke å fjernes.
}
$_SESSION er en array, så det blir akkurat samme prinsipper som vanlig
bruk av array.
$vareantall[0]="2";
$vareantall[1]="1";
$vareantall[2]="3";
$varetype[0]="Tennis sokker hvite.";
$varetype[1]="Grandiosa pizza";
$varetype[2]="Blyant";
$pris[0]="29,90-.";
$pris[1]="32,00-.";
$pris[2]="4,50-.";
Så når jeg sletter en vare så sletter jeg den på nummer i alle tre
arrayene?
Beklager om det virker som om jeg spør dumt, men er ikke helt
inneforstått
dette helt enda, selv om jeg leser på php.net.....
--
mvh
Håkon Helgesen
<?php
$vare = array('antall' => '1', 'type' => 'banan', 'pris' => '12.-');
reset($vare);
while (list($key, $val) = each($vare)) {
echo "$key => $val\n";
}
?>
--
mvh
Håkon Helgesen
Du treng kun vare_nr og antall i array,
resten av dataene ligg jo i db.
Hva med å bruke objekter ?:
http://no.php.net/oop
$varer = new Handlevogn;
$varer->legg_til("10", 1);
$varer->fjern("10", 1);
$varer->vis_alle();
$varer->antall();
$varer->totalsum();
$varer->til_kasse();
...
arnulf @ http://s-a.no/
Tja, regner med du tenker på å ha det serialisert i session da?
Litt smart programmering når man lager klassen Handlevogn, så er man
kommer langt. Et alternativ er naturligvis å implementere Handlevogn som
Singleton på en smart måte som gjør at klassen selv unserialiserer seg
selv, og bruker __destruct()-metoden til å serialisere seg selv. :)
Det var bare et par tanker omkring saken som kan lette programmeringen
en god del.
I følge "manualen" så kan jeg bruke noe slikt til legg_til
funksjonen:
function legg_til($artnr, $antall) {
$this->items[$artnr] += $antall;
}
Men må jeg ikke legge sammen dette med andre ting som ligger i vogna
alerede?
har sett på array_merge og lekt meg litt med dette, og får kun siste
varen ut liksom....
fritt valg !
http://no.php.net/manual/en/language.oop.serialization.php
http://no.php.net/manual/en/language.oop5.decon.php
...
finner en ut at en vil endre, er det bare å endre objektet,
og koden forøvrig blir som før. Det er bare å definere en
fornuftig klasse som gjør alt en ønsker at en Handlevogn
skal:
class Handlevogn
{
var $kunde, $varer;
function xxx
function yyy
}
En måte er å bare bruke cookie og lagre Handlevogn data direkte i db
Eller en kan gå videre med de tankene du har her:
Det er jo nettopp det du viser i eksempelet over:
> har sett på array_merge og lekt meg litt med dette, og får kun siste
> varen ut liksom....
virker dette ?:
class Handlevogn
...
function vis_alle(){
print_r($this->items);
}
...
}
Her er en måte å angripe dette på. Koden er ikke testet.
<?php
class Basket
{
private static $instance = null;
public static function get()
{
if ($this->instance == null)
{
@session_start();
if(isset($_SESSION["Basket"]))
{
$this->instace = unserialize($_SESSION["Basket"]);
} else
{
$this->instance = new Basket();
}
}
return $this->instance;
}
public function __destruct()
{
$_SESSION["Basket"] = serialize($this);
}
private $items = array();
public function addItem($ItemID, $Quantity)
{
if(!isset ($items[$ItemID]))
{
$items[$ItemID] = 0;
}
$items[$ItemID] += $Quantity;
if ($items[$ItemID] < 1)
{
unset($items[$ItemID]);
}
}
public function getItems()
{
$ret = array();
foreach ($this->item as $key => $value)
{
$ret[] = array("ItemID" => $key, "Quantity" => $value);
}
return $ret;
}
}
?>