Hoi allemaal!

Ik ben nieuw hier. Maar ook nieuw met PHP. Ik moet het voor mijn opleiding leren, maar ik vind het echt zo moeilijk. Aangezien ik morgen een assessment heb en ik er niet uitkom, vraag ik jullie om hulp.

Ik moet een webwinkel maken en voor morgen moet ik de webwinkel + winkelwagen (werkend dus ;)) laten zien. De webwinkel zelf heb ik, maar de winkelwagen, daarin loop ik vast.

Ik weet dat er een tutorial staat op phphulp.nl, maar ik wil het graag volgens het boek doen en nu kan ik het waarschijnlijk allemaal nog wel halen met kopieren en zo, maar in de loop der tijd kan ik dat niet meer. Daarom wil ik het nu graag snappen.

Ik weet dat ik d.m.v. een session de bestelde artikelen in mijn winkelwagen moet krijgen, maar ik weet niet echt goed hoe. Ik weet dat deze code fout is, maar kan iemand me uitleggen hoe of wat?

<?php
session_start();
?>

<?php

$artikelnummer = $_POST["artikelnummer"];
$aantal = $_POST["hoeveelheid"];

echo '<h1>Inhoud winkelwagen</h1>

<table border="1">
<tr>
<td><strong>Wijn</strong></td>
<td><strong>Aantal</strong></td>
<td><strong>Prijs eenheid</strong></td>
<td><strong>Totaal</strong></td>
</tr>
<td>' . $_SESSION["winkelwagen"][$artikelnummer] = $aantal . '</td>
</table>';

echo '<a href="wijnwinkel.php">Verder winkelen</a> <a href="afrekenen.php">Afrekenen</a>';
?>
Voorbeeldje, geintrepeteerd op wat je aan code gepost hebt, je moet nog wel zelf zaken (html) toevoegen. En tevens gaan we er maar van uit dat er niet geknoeid wordt met de $_POST variabelen, dus onbekende artikelnummers ed worden niet afgevangen.

Mijn voorkeur zal uitgaan naar een winkelmandje in de database, dat maakt het doen van controles veel eenvoudiger.


<?php
session_start();

// als de winkelwagen nog niet bestaat
if (!isset($_SESSION['winkelwagen']) {
	$_SESSION['winkelwagen'] = array();
}

if (   $_SERVER['REQUEST_METHOD'] == 'POST' 
    && isset($_POST['artikelnummer']) && trim($_POST['artikelnummer']) != ''
    && isset($_POST['hoeveelheid']) && ctype_digit($_POST['hoeveelheid']) && (int) $_POST['hoeveelheid'] >= 0) {
    
    if (isset($_SESSION['winkelwagen'][$_POST['artikelnummer']] && (int) $_POST['hoeveelheid'] > 0) {
       // wijzigen
       $_SESSION['winkelwagen'][$_POST['artikelnummer']] = (int) $_POST['hoevelheid'];
    }
    elseif (!isset($_SESSION['winkelwagen'][$_POST['artikelnummer']] && (int) $_POST['hoeveelheid'] > 0) {
       // toevoegen
       $_SESSION['winkelwagen'][$_POST['artikelnummer']] = (int) $_POST['hoeveelheid'];
    elseif (!isset($_SESSION['winkelwagen'][$_POST['artikelnummer']] && (int) $_POST['hoeveelheid'] == 0) {
       // verwijderen
       unset($_SESSION['winkelwagen'][$_POST['artikelnummer']]);
    }
    else {
       // onbekend foutafhandeling
    }
}
else {
   // foutafhadeling toevoegen / wijzigen / verwijderen niet mogelijk
}

// tonen inhoud winkel wagen
if (isset($_SESSION['winkelwagen']) && is_array($_SESSION['winkelwagen']) && count($_SESSION['winkelwagen'])>0) {

   foreach($_SESSION['winkelwagen'] as $artikelnummer => $hoeveelheid) {
      echo '<tr><td>'.$artikelnummer.'</td><td>'.$hoeveelheid.'</td></tr>';
   }
}
else {
  echo 'Uw winkel wagen is leeg';
}	    
?>     
Hoi,

Heel erg bedankt, maar in het werkboek staat juist dat het nog niet de bedoeling is dat je het in de database zet zeg maar, omdat mensen die iets hebben geplaatst in het winkelmandje, het ook nog moet kunnen verwijderen.
werkboek heeft zwakke argumenten, maar ik begrijp wel waarom deze opdracht is. Leuk om te leren hoe sessions werken
Ja, maar ik zou het wel graag op de manier doen van het werkboek. Ook omdat dit best ingewikkeld is.

En dan zou het dus met de functies:
$_SERVER[PHP_SELF];
$_SESSION
session_start()
Moeten kunnen.
Ik heb code gepost die gebaseerd is op $_SESSION....

$_SESSION en $_SERVER zijn superglobals dus geen functies, zoook dat $_POST en $_GET dat zijn.

session_start() is wel een functie
Gast, leer plannen...
Pim de Haan op 26/09/2010 14:53:10

Gast, leer plannen...


mmmm Volgens mij heet ze Eveline
Plannen?

Denk je serieus dat ik hier vanochtend mee ben begonnen?! Ik ben hier elke dag minstens 2,5 uur mee bezig geweest.

Maar fijn dat hier op beginners zo wordt gereageerd.
Hij bedoelt denk ik dat als de winkelwagen niet werkt en je moet het voor morgen af hebben en je begint vandaag pas te vragen... Je het niet haalt ;-)

Maarjaa :)
Ik weet niet of je er al uit bent, maar wat zegt het boek dat je moet doen?
Daar kun je dan vragen over stellen, want ik heb niet hetzelfde boek als jij voor me liggen.
Het is ook laat, maar ik heb eerst zelf aangeprobeerd en via klasgenoten e.d. en zo geprobeerd...

En het probleem heb ik gewoon dat ik de codes vaak wel snap, maar zelf erop komen dat lukt me niet echt.

En ik heb hierboven al gezegd wat het boek zegt wat ik moet doen. Ik moet dus die winkelwagen maken... Niet in de database zetten, maar door middel van die 3 "dingen" dan, volgens mijn boek functies: $_SERVER[PHP_SELF], $_SESSION en session_start... Zoals ik al zei moet ik een tabelletje krijgen... met welke wijn er besteld is, hoeveel ervan en wat het toaalbedrag wordt. Wel krijg ik de 3 (dmv post) die je bij bestellen invult in de winkelwagen, maar helaas onthoudt hij niks en van wat er staat en krijg ik dus ook niet die gegevens die hij moet tonen...

Reageren