Een webwinkel.
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?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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>';
?>
$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>';
?>
Mijn voorkeur zal uitgaan naar een winkelmandje in de database, dat maakt het doen van controles veel eenvoudiger.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?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';
}
?>
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';
}
?>
Gewijzigd op 26/09/2010 13:24:50 door Noppes Homeland
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
En dan zou het dus met de functies:
$_SERVER[PHP_SELF];
$_SESSION
session_start()
Moeten kunnen.
$_SESSION en $_SERVER zijn superglobals dus geen functies, zoook dat $_POST en $_GET dat zijn.
session_start() is wel een functie
Gewijzigd op 26/09/2010 13:48:18 door Noppes Homeland
Gast, leer plannen...
Pim de Haan op 26/09/2010 14:53:10:
Gast, leer plannen...
mmmm Volgens mij heet ze Eveline
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.
Gewijzigd op 26/09/2010 19:40:38 door Eveline Tralalalaaaa
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.
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...
Post anders eens wat je hebt, dan kunnen we aanschouwen wat je niet begrijpt.
Gewijzigd op 26/09/2010 21:02:32 door Noppes Homeland
Dat heb ik gedaan... Dat staat in post 1...
Dit zal hoogstens een 1 (true) neerzetten.
Ik heb de code gekregen van een klasgenootje. Ik hoop dat ik hem daarmee kan maken (zij had hem al wel voldoende af laten tekenen). Die ga ik nu helemaal analyseren en dan hoop ik dat hem toe kan passen in mijn eigen bestand.
Maar wat is nou concreet het probleem?
Ik krijg de opdracht:
Maak het formulier aan, waarin (het eerste deel van) de winkelwagen wordt getoond. Dat is:
- de kop Inhoud winkelwagen
- de tabel, met daarin de kop Wijn, aantal, Prijs eenheid en Totaal.
- het registreren van het bestelde in de sessievariabele 'winkelwagen'.
- de twee submitbuttons, die samen in één formulier zitten.
Met de functies:
$_SERVER[PHP_SELF];
$_SESSION
session_start()
Nou, van te voren kreeg ik wel een een voorbeeld van hoe het eruit moest komen te zien en wat het kon doen.
Maar niet van hoe ik iets moest doen. De kop, de tabel en de twee submitbuttons lukken ook wel. Alleen niet dat wanneer ik bij Wijn (met artikelnummer 1) 5 (die ik dus wil bestellen, invul, dat hij dan in mijn winkelwagen ook wijn (met artikelnummer 1) 5 bestellen komt te staan zeg maar.
Waar loop je dan vast?
En wat heb je tot nu?
Een tabel maken lukt idd.
Maar ik krijg het niet voor elkaar dat wanneer ik bij wijn huppelepup 5 invoer en op bestellen klik, dat ik dan op de volgende pagina waar die dan heengaat (winkelwagen.php dus) dat er dan bij wijn huppelepup aantal 5 staat.
In je eerste post is geen formulier.
Dit is dat formulier wat ik heb in webwinkel.php:
echo '<form name="bestellen" method="post" action="winkelwagen.php"><input name="artikelnummer" type="hidden" value="' . $artikelnummer . '"><td>' . $omschrijving . '</td><td>' . $soort . '</td><td>' . $land . '</td><td>' . $verpakking . '</td><td>' . $prijs . '/' . $eenheid . '</td><td>' . $resultaat . '<td><input name="hoeveelheid" size="3" value="1"><input type="submit" name="Submit" value="Bestellen"></form></td>' ;