Avatar billede LilleUdvikler Nybegynder
08. september 2011 - 20:25 Der er 7 kommentarer og
1 løsning

Indkøbskurv projekt

Hejsa.

Jeg er i gang med, at prøve at programmere en indkøbskurv - ud fra en guide her på eksperten. Jeg har efter et par timer fået en forståelse for, hvordan det skal fungere.

Men jeg har et forholdsvist stort problem:

Når jeg tilføjer en vare til kurven, så skal den rykke det ind i en SESSION som jeg så udskriver på siden ved Indkøbskurv self :-)
- Det gør den også - men så hvis jeg går ind på en anden side, for at finde en til vare fx. så forsvinder den nuværende vare fra indkøbskurven.

Min kode er:

$aBasket = Array(ProductID, Price, Name, Number);

$_SESSION['Basket'] = $aBasket;

if(!isset($_SESSION['Basket'])){
    $_SESSION['Basket'] = $aBasket;
}

if($_GET['sAction'] == "AddProduct")
{
    $aProduct =  array(
        'ProductID' => $_GET['iId'],
        'Price' => $_GET['iPrice'],
        'Name' => $_GET['iName'],
        'Number' => $_GET['iNumber']);
   
    array_push($_SESSION['Basket'], $aProduct);
}

foreach ($_SESSION['Basket'] as $aArray)
{
    foreach($aArray as $sValue)
    {
        echo $sValue;
    }
}
?>

og mine links er:

<a href="'.$_SERVER['PHP_SELF'].'?sAction=AddProduct&iId='.$iProductID.'&iPrice='.$iPrice.'&iNumber='.$iNumber.'&iName='.$iName.'">Lig i kurv</a>
Avatar billede Slettet bruger
08. september 2011 - 21:36 #1
Måske mangler du en session_start() i toppen af den side du kalder?
Avatar billede LilleUdvikler Nybegynder
08. september 2011 - 21:58 #2
nej, den har jeg :)

Jeg har ændret

$aBasket = Array(ProductID, Price, Name, Number);

til

$aBasket = Array();

Nu kan den finde ud af at der er 0 produkter i kurven. Men så når jeg trykker på at den skal tilføje noget - så står der hvilken vare og at der er et produkt i kurven - lige ind til jeg skifter side - så fjerner den varen.
Avatar billede heinzdmx Nybegynder
08. september 2011 - 22:28 #3
I det at du laver følgende:

$aBasket = Array(ProductID, Price, Name, Number);

$_SESSION['Basket'] = $aBasket;


Så nulstiller du jo din session til et tomt array hver gang siden loades...
Avatar billede LilleUdvikler Nybegynder
09. september 2011 - 07:24 #4
Jeg har $aBasket = Array(); nu her.

Hvordan skal jeg så gøre det? :)
Avatar billede vagnk Juniormester
09. september 2011 - 08:06 #5
"hvis jeg går ind på en anden side"

Har du osse "session_start()" på den side?
Avatar billede LilleUdvikler Nybegynder
09. september 2011 - 08:15 #6
Ja, "den anden side" er bare en opdatering af forsiden.
Avatar billede LilleUdvikler Nybegynder
09. september 2011 - 08:52 #7
Så virker det sørme, jeg tror det var heinzdmx der var på rette spor. Jeg nulstillede min $_SESSION hele tiden, hver gang jeg gjorde noget andet end at blive på samme side. Så min kode for denne omgang så således ud:

<?php

$iName = $_GET['iName'];
$iId = $_GET['iId'];
$iPrice = $_GET['iPrice'];
$iNumber = $_GET['iNumber'];

if(!isset($_SESSION['Basket'])){
    $_SESSION['Basket'] = Array();
}

if($_GET['sAction'] == "AddProduct")
{
        $Basket = array(
        'Name' => $iName,
                'ProductID' => $iId
    );
    $_SESSION['Basket'][] = $Basket;
}


foreach($_SESSION['Basket'] as $aArray)
{
    foreach($aArray as $sValue)
    {
        echo $sValue." - ";
    }
}

if(isset($_SESSION['Basket'])){
    echo "<p>".sizeof($_SESSION['Basket']) . " produkter i kurven</p>";
}

echo "<a href='?unset_basket'>Tøm indkøbskurv</a>";

if(isset($_GET['unset_basket'])){
    session_regenerate_id(true);
    unset($_SESSION['Basket']);
}

?>
Avatar billede heinzdmx Nybegynder
09. september 2011 - 08:58 #8
Så smider jeg et svar her.
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