Kjapp og trygg hosting for Wordpress

Handlekurvløsning

Veggen

New Member
Vet ikke helt hvor lett det blir å forklare problemet.. men uansett, dette er funksjonen som viser hvordan man legger til i handlekurven, og den som viser den:


Kode:
function leggTilKurv()
{
    $handlekurv = $_SESSION['handlekurv'];
    if (!$handlekurv) 
    {
        return '<p>Du har ingen gjenstander i <a href="handlekurv.php"> handlekurven</a></p>';
    } else {
        //Parser handlekurv session-variabelen
        $varer = explode(',',$handlekurv);
        $s = (count($varer) > 1) ? 's':'';
        return '<p>Du har <strong> '.count($varer). '</strong> ting i <a href="handlekurv.php">handlekurven</a></p>';
    }
}


Og koden som viser handlekurven:

Kode:
function visHandlekurv() 
{
    global $db;
    $total = 0;
    $handlekurv = $_SESSION['handlekurv'];
    if ($handlekurv) {
        $varer = explode(',',$handlekurv);
        $innhold = array();
        foreach ($varer as $vare) {
            $innhold[$vare] = (isset($innhold[$vare])) ? $innhold[$vare] + 1 : 1;
        }
        $utskrift[] = '<form action="handlekurv.php?action=oppdater" method="post" id="handlekurv">';
        $utskrift[] = '<table>';
        $utskrift[] ='<tr><th></th><th>Tittel</th><th>Pris på vare</th><th>Antall</th><th>Totalpris</th>';
        foreach ($innhold as $id=>$qty) {
            $sql = 'SELECT * FROM handlekurv WHERE ID = '.$id;
            $result = $db->query($sql);
            $row = $result->fetch();
            extract($row);
            $utskrift[] = '<tr>';
            $utskrift[] = '<td><a href="handlekurv.php?action=slett&id='.$id.'" class="r">Fjern</a></td>';
            $utskrift[] = '<td><i>'.$Vare.' av '.$Fornavn.'</i></td>';
            $utskrift[] = '<td>'.$Pris.' kr</td>';
            $utskrift[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="1" maxlength="3" align=rigth/></td>';
            $utskrift[] = '<td> '.($Pris * $qty).' kr</td>';
            $total += $Pris * $qty;
            $utskrift[] = '</tr>';
        }
        $utskrift[] = '</table>';
        $utskrift[] = '<div><p>Totalpris: <strong>'.$total.'</strong> kr</p>';
        $utskrift[] = '<button type="submit">Oppdater vogn</button>';
        $utskrift[] = '</form></div>';
        $utskrift[] = '<form action="visvarer.php"?action=visvarer" method="post" id="handlekurv">';
        $utskrift[] = '<button type ="submit">Fullfør handel</button>';
    } else {
        $utskrift[] = '<p>Handlekurven din er tom.</p>';
    }
    return join('',$utskrift);
}


Problemet mitt er da... jeg skal nå håndtere de verdiene som er lagt til i handlekurven for å så laste opp de verdiene i en egen tabell. Hva vil her være den smarteste måten å løse det på? Session-variabelen her er jo kun et ID-tall... har i databasetabellen registrert bøkene som ligger der med et ID-nummer, for å skille mellom de forskjellige. Så hvis jeg typ har lagt til 2 forskjellige bøker, blir da
Kode:
 print_r($_SESSSION);
lik 1,2 hvis jeg hadde lagt til tre av samme bok, og en av en annen ville jeg da fått 1,1,1,2 f.eks.

Noen som har noen ideer til hvordan jeg kan gå fram her?
 

Toak

Medlem
Vet ikke helt om jeg forstod deg rett, men jeg ville laget et flerdimensjonalt array i $_SESSION, slik at den til slutt så ut noe lignende dette:

PHP:
$_SESSION['handlekurv'] = array(
    0 => array(
      'id_bok' => 26,
      'antall' => 2),
    1 => array(
      'id_bok' => 12,
      'antall' => 1)
);

Forøvrig vil jeg anbefale deg å dele opp PHP-koden din etter MVC-prinsippet, for å få en mer oversiktlig kode. (Wikipedia - MVC) I hvertfall dele det opp i view og controller. Én fil som behandler data (controller), og én fil som mottar data fra controlleren, og viser data. ;)
 
Topp