Opzet webwinkel
Let op: deze tutorial is zeer oud. De methode van scripting is zeer verouderd en de auteur raadt af om deze langer te gebruiken!
De tutorial beschrijft de opzet om te komen tot een webwinkel. De winkelwagen, de producten en het afrekenen komen aan de orde.
Gesponsorde koppelingen
Inhoudsopgave
- Voorwoord
- Technisch ontwerp
- Etalage
- Producten toevoegen
- De winkelwagen
- Verwijderen items
- Winkelwagen updaten
- Afrekenen
- Nawoord
159 reacties op 'Opzet webwinkel'
Gesponsorde koppelingen
Erg interessant. Zeker leuk om zo maar een keer te gaan maken.
Maar er is 1 regel die ik niet snap in Updaten Winkelwagen, namelijk:
$inNewCart = $product[0].",".$product[1].",".$_POST[$postedQuantity].",".$product[3];
Hier staan 4 elementen in en overal staan er verder 2, het waarom ontgaat mij. Kan iemand dat verklaren/uitleggen?
Maar er is 1 regel die ik niet snap in Updaten Winkelwagen, namelijk:
$inNewCart = $product[0].",".$product[1].",".$_POST[$postedQuantity].",".$product[3];
Hier staan 4 elementen in en overal staan er verder 2, het waarom ontgaat mij. Kan iemand dat verklaren/uitleggen?
SanThe:
Simpel.. :) Dat is mijn fout. In de shop die ik gemaakt heb moet ik per artikel 4 dingen onthouden (artikelnummer, aantal, hoeveelheid (inhoud) en motief).Maar er is 1 regel die ik niet snap in Updaten Winkelwagen, namelijk:
$inNewCart = $product[0].",".$product[1].",".$_POST[$postedQuantity].",".$product[3];
Hier staan 4 elementen in en overal staan er verder 2, het waarom ontgaat mij. Kan iemand dat verklaren/uitleggen?
$inNewCart = $product[0].",".$product[1].",".$_POST[$postedQuantity].",".$product[3];
Hier staan 4 elementen in en overal staan er verder 2, het waarom ontgaat mij. Kan iemand dat verklaren/uitleggen?
Het is in de tutorial verbeterd.. :)
Elwin
@Erik
Dus zelfs met de SQL code kan je waarschijnlijk nog niet veel. Maar je kan het gewoon invoren in PHPMyAdmin
tutorial:
N.B.
De codes in deze tutorial zijn niet getest. Dit komt omdat ik op de plek waar ik het schrijf geen toegang heb tot een webserver.
Daarnaast zijn de codes alleen bedoeld als opstapje en niet als werkend script...
Het niveau van de tutorial is ?hoog?. Dat wilt zeggen dat niet de eerste de beste instap-noob gelijk dit systeem kan gaan ombouwen tot wat hij/zij wilt hebben. Maar dat is ook niet erg.. wil je een beetje systeem als een webwinkel bouwen moet je ook geen noob meer zijn.
De codes in deze tutorial zijn niet getest. Dit komt omdat ik op de plek waar ik het schrijf geen toegang heb tot een webserver.
Daarnaast zijn de codes alleen bedoeld als opstapje en niet als werkend script...
Het niveau van de tutorial is ?hoog?. Dat wilt zeggen dat niet de eerste de beste instap-noob gelijk dit systeem kan gaan ombouwen tot wat hij/zij wilt hebben. Maar dat is ook niet erg.. wil je een beetje systeem als een webwinkel bouwen moet je ook geen noob meer zijn.
Dus zelfs met de SQL code kan je waarschijnlijk nog niet veel. Maar je kan het gewoon invoren in PHPMyAdmin
Ik heb zoiets ook wel eens voor school in ASP moeten maken. Alleen was het toen uitgebreider en toen moest er ook een veiling bij.
Het moeilijkste gedeelte echter ben je vergeten en dat is online betalingen. Dit verloopt vaak via XML achtige systemen met een bank waar je een contract mee moet hebben. Dus misschien zou je hier nog wat aanvullende informatie over kunnen geven voor mensen die zoiets dergelijks willen opzetten.
Het moeilijkste gedeelte echter ben je vergeten en dat is online betalingen. Dit verloopt vaak via XML achtige systemen met een bank waar je een contract mee moet hebben. Dus misschien zou je hier nog wat aanvullende informatie over kunnen geven voor mensen die zoiets dergelijks willen opzetten.
Jeroen:
Nee, dat ben ik niet vergeten. Zoals in mijn nawoord:Het moeilijkste gedeelte echter ben je vergeten en dat is online betalingen.
Elwin:
En als meer is het ook niet bedoeld. Betalingen hebben ook helemaal geen zin want,Ik zal de laatste zijn die beweerd dat deze tutorial het beste bestelsysteem beschrijft. In tegendeel: het is heel erg basaal. Meer als een winkelmandje en de bestelling in de database zetten is het niet.
a) niet iedereen kiest dan die ik hier neer zet waardoor je hier ellelange scripts krijgt in de comments
b) een beetje leverancier van een online betalingsmogelijkheid zijn klanten die scripts verstrekt (wat het 'moeilijke werk' dan alleen maar het doorgeven van de totaalprijs inhoud)
Elwin
@Martin
Ik heb helaas geen idee waar dat aan kan liggen.
Probeer te kijken wat er in de sessie-variabele staat, doe het volgende voor de foreach().
@Wijnand
Volgens mij heb jij wel het een en ander gewijzigd in de winkelwagen, is het niet?
Je hebt daar voor aantallen van de producten in het formulier aantallen_ gezet, terwijl in de tutorial en hoeveelheid_ staat. Geen probleem, maar dan moet je het in het update-script ook aanpassen.
Elwin
Ik heb helaas geen idee waar dat aan kan liggen.
Probeer te kijken wat er in de sessie-variabele staat, doe het volgende voor de foreach().
@Wijnand
Volgens mij heb jij wel het een en ander gewijzigd in de winkelwagen, is het niet?
Je hebt daar voor aantallen van de producten in het formulier aantallen_ gezet, terwijl in de tutorial en hoeveelheid_ staat. Geen probleem, maar dan moet je het in het update-script ook aanpassen.
Elwin
Ik krijg ook de melding
----------------------------------------------------------
Warning: Invalid argument supplied for foreach()
dus in de line met " foreach($cart as $products) "
in het bestand add.php
----------------------------------------------------------
Alleen de eerste keer (dus als de sessie nog moet worden aangemaakt) werkt hij. Maar zodra je een twede product toevoegt gaat het mis. Ik heb de line die je aangaf :
geplaatst en deze geeft als eerst resultaat als ik iets bestel:
Array ( [0] => Array, [1] => 070520051,2 ) 1
en als ik nu nog iets aanklik om te bestellen:
Array ( [0] => Array ) 1
Hoe komt dit?
----------------------------------------------------------
Warning: Invalid argument supplied for foreach()
dus in de line met " foreach($cart as $products) "
in het bestand add.php
----------------------------------------------------------
Alleen de eerste keer (dus als de sessie nog moet worden aangemaakt) werkt hij. Maar zodra je een twede product toevoegt gaat het mis. Ik heb de line die je aangaf :
geplaatst en deze geeft als eerst resultaat als ik iets bestel:
Array ( [0] => Array, [1] => 070520051,2 ) 1
en als ik nu nog iets aanklik om te bestellen:
Array ( [0] => Array ) 1
Hoe komt dit?
Krijg een foutmelding bij het afrekenen.
Checkout pagina:
Warning: Wrong parameter count for date() in /home/users/stephanlangedijk/public_html/checkout.php on line 14
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 4
in file /home/users/stephanlangedijk/public_html/checkout.php on line 15
Iemand een idee?
Checkout pagina:
Warning: Wrong parameter count for date() in /home/users/stephanlangedijk/public_html/checkout.php on line 14
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 4
in file /home/users/stephanlangedijk/public_html/checkout.php on line 15
Iemand een idee?
meer specs
-------------------------------------------------------------------------
parse error in delete_cart_item.php on line 6
5 // Variables
6 if(!is_numeric($_GET[\'item\'])) $item = $_GET[\'item\'];
7 else exit (\"Niet gelukt!\");
apache apache 2.0.43
PHP4.2.3
MySQL4
phpMyAdmin 2.3.2
-------------------------------------------------------------------------
-------------------------------------------------------------------------
parse error in delete_cart_item.php on line 6
5 // Variables
6 if(!is_numeric($_GET[\'item\'])) $item = $_GET[\'item\'];
7 else exit (\"Niet gelukt!\");
apache apache 2.0.43
PHP4.2.3
MySQL4
phpMyAdmin 2.3.2
-------------------------------------------------------------------------
Ik krijg op cart.php als output :
Er staan 2 producten in je winkelwagen
Productnummer Productnaam Hoeveelheid Prijs p/s Totaal
Unknown column 'Array' in 'where clause'
in file /opt/www/goemaerem9/web/www.p-j-shop.be/cart.php on line 75
enig idee of dit met mijn php-instellingen kan te zien hebben ?
Er staan 2 producten in je winkelwagen
Productnummer Productnaam Hoeveelheid Prijs p/s Totaal
Unknown column 'Array' in 'where clause'
in file /opt/www/goemaerem9/web/www.p-j-shop.be/cart.php on line 75
enig idee of dit met mijn php-instellingen kan te zien hebben ?
Ik heb hetzelfde probleem als MG, het probleem ligt volgens mij in de volgende regel:
$sql = "SELECT productnaam, prijs FROM product WHERE productnummer = ".$product[0];
De reden waarom ik dit denk is, dat ik (om erachter te komen of dat de fout was) $product[0] had verandert in $productnummer, dan geeft hij geen mysql fout aan, maar krijg je natuurlijk ook niets te zien van wat er nou eigenlijk in de cart staat...
$sql = "SELECT productnaam, prijs FROM product WHERE productnummer = ".$product[0];
De reden waarom ik dit denk is, dat ik (om erachter te komen of dat de fout was) $product[0] had verandert in $productnummer, dan geeft hij geen mysql fout aan, maar krijg je natuurlijk ook niets te zien van wat er nou eigenlijk in de cart staat...
Het probleem " $sql = "SELECT productnaam, prijs FROM product WHERE productnummer = ".$product[0]; " valt in ieder geval op te lossen door zowel in add.php als cart.php de variabele $cart te vervangen door bvb. $cart2
Om de ??n of andere reden die mij niet helemaal duidelijk is, ontstaan er problemen als de var die ge-explode wordt dezelfde benaming heeft als de sessie-var ...
Om de ??n of andere reden die mij niet helemaal duidelijk is, ontstaan er problemen als de var die ge-explode wordt dezelfde benaming heeft als de sessie-var ...
@Danny
Pas terug zat ik met Michel (zie een paar reacties terug) te testen om die fout er uit te halen. Toen kwam ik dat ook tegen. Ik weet niet precies of het aan de versie van PHP ligt, maar je kan het anders doen:
Laat de producten per pagina zien (product.php?id=x, oid) zodat je maar ??n form op een pagina hebt. Dat werkt dan wel goed. In dat geval kan je ook iets meer laten zien, zoals een plaatje of een grotere beschrijving van het product (zolang je dat ergens opslaat natuurlijk).
Elwin
Pas terug zat ik met Michel (zie een paar reacties terug) te testen om die fout er uit te halen. Toen kwam ik dat ook tegen. Ik weet niet precies of het aan de versie van PHP ligt, maar je kan het anders doen:
Laat de producten per pagina zien (product.php?id=x, oid) zodat je maar ??n form op een pagina hebt. Dat werkt dan wel goed. In dat geval kan je ook iets meer laten zien, zoals een plaatje of een grotere beschrijving van het product (zolang je dat ergens opslaat natuurlijk).
Elwin
Ik ben aan het kijken geweest, maar als ik op deze regel de | vervang door bijvoorbeeld een , dan werkt hij al anders en kan ik wel een ander product toevoegen, maar werkt nog niet vlekkeloos.
$cart = explode(",",$_SESSION['cart']);
ipv
$cart = explode("|",$_SESSION['cart']);
heeft dit er iets mee te maken?
$cart = explode(",",$_SESSION['cart']);
ipv
$cart = explode("|",$_SESSION['cart']);
heeft dit er iets mee te maken?
Exacte syntax om array-foutmelding eruit te halen:
$sql = "SELECT * FROM producten WHERE id = '".$product[0]."'";
Blijft echter over dat $cart = explode("|",$_SESSION['cart']); niet werkt.
Voor zover ik kan beoordelen omdat $_SESSION['cart'] niet de juiste inhoud krijgt. Zonder inhoud of een onjuiste inhoud valt er immers ook niets te exploden. Wanneer ik $_SESSION['cart'] echo krijg ik op de server thuis netjes 34,2 | 25,3 enz. Online krijg ik letterlijk Array.
Suggesties zijn heel erg welkom.
$sql = "SELECT * FROM producten WHERE id = '".$product[0]."'";
Blijft echter over dat $cart = explode("|",$_SESSION['cart']); niet werkt.
Voor zover ik kan beoordelen omdat $_SESSION['cart'] niet de juiste inhoud krijgt. Zonder inhoud of een onjuiste inhoud valt er immers ook niets te exploden. Wanneer ik $_SESSION['cart'] echo krijg ik op de server thuis netjes 34,2 | 25,3 enz. Online krijg ik letterlijk Array.
Suggesties zijn heel erg welkom.
En Danny,
De | vervangen door een , heeft geen nut omdat de productnummers en de hoeveelheden al door een , worden gescheiden. Ik kan me dus goed voorstellen dat je dan een ander resultaat krijgt, maar helaas niet het juiste. Als je de | wilt vervangen gebruik dan een ander teken als ,. Helaas ben je dan wel weer terug bij af.
De | vervangen door een , heeft geen nut omdat de productnummers en de hoeveelheden al door een , worden gescheiden. Ik kan me dus goed voorstellen dat je dan een ander resultaat krijgt, maar helaas niet het juiste. Als je de | wilt vervangen gebruik dan een ander teken als ,. Helaas ben je dan wel weer terug bij af.
Hallo, ik wou ook graag een webwinkel beginnen maar ik heb geen verstand van php om eerlijk te zijn wel met html.
hoekan ik dit het beste aanpakken op zich snap ik het wel snel maar heb een beetje op internet gekeken en heb 1 gratis script gevonden maar al sla je me dood begrijp er geen bal van
ik heb dreamweaver trouwens.
ik hoop gauw wat te horen
alvast bedankt
hoekan ik dit het beste aanpakken op zich snap ik het wel snel maar heb een beetje op internet gekeken en heb 1 gratis script gevonden maar al sla je me dood begrijp er geen bal van
ik heb dreamweaver trouwens.
ik hoop gauw wat te horen
alvast bedankt
Ik begrijp niet helemaal waarom er niet gebruik is gemaakt van een multi-dimensionaal sessie-array;
Op die manier hoef je helemaal geen rare sprongen te maken met explode / list / count etc. Gewoon een foreach laat alle artikelen met hun aantallen zien:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$_SESSION['cart']['012345'] = 2;
$_SESSION['cart']['789012'] = 15;
// Waarbij de tweede dimensie het artikelnummer voorstelt
?>
$_SESSION['cart']['012345'] = 2;
$_SESSION['cart']['789012'] = 15;
// Waarbij de tweede dimensie het artikelnummer voorstelt
?>
Op die manier hoef je helemaal geen rare sprongen te maken met explode / list / count etc. Gewoon een foreach laat alle artikelen met hun aantallen zien:
Bonsjoerr,
Ik ben bezig met het maken van een webwinkel, maar dan in asp. Ik vroeg me af je ook een back-end aan je webwinkel hebt gemaakt.
En/ of jij (of iemand) een idee heeft hoe ik dit kan maken, met behulp van andere sites ofzow. Of als je info hebt, zou ik dat graag willen weten..
Alvast bedankt. Groetjes LiLa
Ik ben bezig met het maken van een webwinkel, maar dan in asp. Ik vroeg me af je ook een back-end aan je webwinkel hebt gemaakt.
En/ of jij (of iemand) een idee heeft hoe ik dit kan maken, met behulp van andere sites ofzow. Of als je info hebt, zou ik dat graag willen weten..
Alvast bedankt. Groetjes LiLa
in het bestand cart.php
staat deze regel
$sql = "SELECT * FROM product WHERE productnummer =" .$product[0]; // Weet je nog, uit die sessie
dan krijg hele tijd de fout van
Unknown column 'Array' in 'where clause'
in file C:\xampp\htdocs\webshop\3\cart.php on line 63
maar als ik er dit van maak
$sql = "SELECT * FROM product WHERE productnummer";
dan krijg ik de verkeerde info van de gene die ik toevoeg en kan ook niet meer dan 2 items toevoegen
staat deze regel
$sql = "SELECT * FROM product WHERE productnummer =" .$product[0]; // Weet je nog, uit die sessie
dan krijg hele tijd de fout van
Unknown column 'Array' in 'where clause'
in file C:\xampp\htdocs\webshop\3\cart.php on line 63
maar als ik er dit van maak
$sql = "SELECT * FROM product WHERE productnummer";
dan krijg ik de verkeerde info van de gene die ik toevoeg en kan ook niet meer dan 2 items toevoegen
Als ik steeds een product wil toevoegen krijg ik de error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
in file /vhost/usr/enquete/pizza/cart.php on line 70
Heeft iemand deze webshop wel werkend gekregen?
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
in file /vhost/usr/enquete/pizza/cart.php on line 70
Heeft iemand deze webshop wel werkend gekregen?
Hallo,
Het probleem dat eerder beschreven werd, gaande over het altijd selecteren van de onderste producten uit het overzicht producten.php kan verholpen worden door de eindtag </form> toe te voegen.
Doordat dit vergeten is, wordt de form afgesloten bij de laatste.
Succes en bedankt, het werkt aardig!
Het probleem dat eerder beschreven werd, gaande over het altijd selecteren van de onderste producten uit het overzicht producten.php kan verholpen worden door de eindtag </form> toe te voegen.
Doordat dit vergeten is, wordt de form afgesloten bij de laatste.
Succes en bedankt, het werkt aardig!
ik heb hier een mooie werkende pagina van gemaakt met stijlen, databases en bijbehorende mail functies, met hier een daar een variatie op het orgineel. Tis alleen zo dat dit niet vol moet lopen met testers, dus als je de url wil moet je me ff een pm sturen, maak ik tijdelijk een account voor je aan
hallo mensen, ik heb hetzelfe probleem als redmer.
wanneer ik een product toevoeg krijg ik de volgende melding
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\xampp\htdocs\php\SITE\winkelwagen\add.php:3) in C:\Program Files\xampp\xampp\htdocs\php\SITE\winkelwagen\add.php on line 69
ik ben het spoor bijster... weet iemand wat?
wanneer ik een product toevoeg krijg ik de volgende melding
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\xampp\htdocs\php\SITE\winkelwagen\add.php:3) in C:\Program Files\xampp\xampp\htdocs\php\SITE\winkelwagen\add.php on line 69
ik ben het spoor bijster... weet iemand wat?
Ik krijg het script ook niet aan de praat en heb een aantal hier besproken problemen zelf ook al gevonden voor ik me bedacht hier eens te gaan kijken. Verdiep me pas een paar maanden in PHP maar kom steeds tot de conclusie dat het misschien beter is met multi-dimensionaal sessie-array te werken zoals Remco van Arkelen op 28 juli ook al schreef.
Is iemand het hier mee eens of is het beter dit script uit te werken?
Is iemand het hier mee eens of is het beter dit script uit te werken?
@ jelle,
session_start(); moet altijd helemaal aan het begin staan, dus boven <HTML><bla bla bla
jij hebt het waarschijnlijk wel helemaal boven in je eerste php scripts, maar het moet ?cht bovenaan, dus:
bovenaan de pagina ;)
zelf had ik dit probleem ook regelmatig, toen wist ik ook niet waar ik het moest zoeken ...
session_start(); moet altijd helemaal aan het begin staan, dus boven <HTML><bla bla bla
jij hebt het waarschijnlijk wel helemaal boven in je eerste php scripts, maar het moet ?cht bovenaan, dus:
bovenaan de pagina ;)
zelf had ik dit probleem ook regelmatig, toen wist ik ook niet waar ik het moest zoeken ...
Hele mooie tutorial.
Hier heb ik veel aan, de opzet is nu voor mij in ieder geval helder.
Met alle hierboven beschreven opmerkingen heb ik er een werkende versie van gemaakt. Heb alleen nog een formuliertje toegevoegd om wat klantgegevens behorende bij de bestelling vast te leggen.
Het is nu eigenlijk nog een kwestie van uitbreiden, validaties bouwen en de layout opmaken.
De werkende versie is hier te vinden (ik weet alleen nog niet hoe lang deze hier zal staan)
http://members.lycos.nl/audre/etalage.php
Hier heb ik veel aan, de opzet is nu voor mij in ieder geval helder.
Met alle hierboven beschreven opmerkingen heb ik er een werkende versie van gemaakt. Heb alleen nog een formuliertje toegevoegd om wat klantgegevens behorende bij de bestelling vast te leggen.
Het is nu eigenlijk nog een kwestie van uitbreiden, validaties bouwen en de layout opmaken.
De werkende versie is hier te vinden (ik weet alleen nog niet hoe lang deze hier zal staan)
http://members.lycos.nl/audre/etalage.php
Zeker een mooie tutorial! ik ben daarom er ook leuk mee aan het spelen. Alleen zoals ik het laatste bericht al gesteld heb ik ook een probleem met het totaalbedrag. Deze staat standaard op 0 en word na verversen ook niet hoger.
Weet iemand raad? Er zijn al zoveel probleempjes opgelost dus heb er vertrouwen in.
Weet iemand raad? Er zijn al zoveel probleempjes opgelost dus heb er vertrouwen in.
Ik heb deze tut ook gebruikt om een afrekensysteempje te maken. Nu las ik het eerder opgemerkte probleem dat alleen het laatste artikel toegevoegd word. Dit heb ik nog steeds ondanks dat ik de form gesloten heb zoals eerder aangedragen.
Ik heb een 6tal pagina's welke elk een query result geeft van artikelen. Uit elk van deze pagina's kan ik een willekeurig artikel kiezen, hij pakt alleen de laatste van elke pagina.
Ik hoop dat de mensen die hem wel werkend hebben gekregen mij verder kunnen helpen. :)
Ik heb een 6tal pagina's welke elk een query result geeft van artikelen. Uit elk van deze pagina's kan ik een willekeurig artikel kiezen, hij pakt alleen de laatste van elke pagina.
Ik hoop dat de mensen die hem wel werkend hebben gekregen mij verder kunnen helpen. :)
Ik weet niet of iemand het al had opgelost, dat het laatste artikel alleen word toegevoegd in de database, maar het is mij perongeluk gelukt.
Ik heb de database iets veranderd.
Bij de tabel: bestelling
heb je de velden: bestel_id, besteldatum en nog een aantal in mijn geval
Bij de tabel: bestelregel
heb je de velden: bestel_id, product_id en aantal_besteld
Dan geeft hij dus aan dat hij niet meerdere kan opslaan, omdat bij beide tabellen het primaire veld bestel_id is (hier bestelnummer). Ik heb in de tabel bestelregel, daarom het veld regel_id toegevoegd, als primaire key met autonummering en bestel_id staat er gewoon in als int veld.
Op deze manier slaat hij wel alle toegevoegde producten op en zet hij bij bestel_id, dus het nummer van de bestelling de rest (regel_id) nummert hij automatisch. Je krijgt ook geen foutmelding meer.
Je kunt op deze manier de bestelregels koppelen aan de juiste bestelling. Als iemand het wel al had opgelost... nou ja, overbodige info dan.. hihi..
Voor de rest nog even een bedankje, voor deze tutorial! Wel even puzzelen hier en daar... maar toch goed te doen! xx Moontje and the moon..
Ik heb de database iets veranderd.
Bij de tabel: bestelling
heb je de velden: bestel_id, besteldatum en nog een aantal in mijn geval
Bij de tabel: bestelregel
heb je de velden: bestel_id, product_id en aantal_besteld
Dan geeft hij dus aan dat hij niet meerdere kan opslaan, omdat bij beide tabellen het primaire veld bestel_id is (hier bestelnummer). Ik heb in de tabel bestelregel, daarom het veld regel_id toegevoegd, als primaire key met autonummering en bestel_id staat er gewoon in als int veld.
Op deze manier slaat hij wel alle toegevoegde producten op en zet hij bij bestel_id, dus het nummer van de bestelling de rest (regel_id) nummert hij automatisch. Je krijgt ook geen foutmelding meer.
Je kunt op deze manier de bestelregels koppelen aan de juiste bestelling. Als iemand het wel al had opgelost... nou ja, overbodige info dan.. hihi..
Voor de rest nog even een bedankje, voor deze tutorial! Wel even puzzelen hier en daar... maar toch goed te doen! xx Moontje and the moon..
Nice tutorial!! I love it! Ik heb een fout ontdekt in deze regel:
if(!is_numeric($_GET['item']) $item = $_GET['item'];
De uitroepteken moet weg, anders staat er: als het geen nummer is dan...
Zo hoort het te zijn: if(is_numeric($_GET['item']) $item = $_GET['item'];
Anders kreeg ik hele tijd wat er in de else staat.
if(!is_numeric($_GET['item']) $item = $_GET['item'];
De uitroepteken moet weg, anders staat er: als het geen nummer is dan...
Zo hoort het te zijn: if(is_numeric($_GET['item']) $item = $_GET['item'];
Anders kreeg ik hele tijd wat er in de else staat.
Toch zouden veel mensen (waaronder ik) het zeer waarderen als je de SQL zou plaatsen.
Ik ben erg leergierig en wil ook graag zo veel mogelijk van PHP en MySQL leren maar je database verhaal wordt mij net iets t? lastig. Als je SQL plaatst maak je het systeem voor meer mensen toegangkelijker en kunnen meer mensen leren van je tutorial, en dat is nou net waar ze voor zijn.
Ik ben erg leergierig en wil ook graag zo veel mogelijk van PHP en MySQL leren maar je database verhaal wordt mij net iets t? lastig. Als je SQL plaatst maak je het systeem voor meer mensen toegangkelijker en kunnen meer mensen leren van je tutorial, en dat is nou net waar ze voor zijn.
Beste,
Als je twee dezelfde producten toevoegd aan je winkelmandje.
dan ziet hij ze als twee verschillende?!?, de hoevoelheid wordt niet opgeteld??
Hij zou dus eigenlijk de array moeten afzoeken naar hetzelfde product en dan de hoeveelheid verhogen.
Hoe gaat dit in zijn werk?
Verder is dit een prachtige opzet!
Als je twee dezelfde producten toevoegd aan je winkelmandje.
dan ziet hij ze als twee verschillende?!?, de hoevoelheid wordt niet opgeteld??
Hij zou dus eigenlijk de array moeten afzoeken naar hetzelfde product en dan de hoeveelheid verhogen.
Hoe gaat dit in zijn werk?
Verder is dit een prachtige opzet!
@geertjan: jawel, moet je er zelf ff inbouwen. Dit staat tussen Tutorials. Niet tussen Scripts.. hij is niet compleet, je moet hem zelf hier en daar aanpassen.. Elwin laat zien hoe het er ongeveer uit zou moeten zien.. dus het word knutselen :)
Goede tutorial, hoewel je je taalgebruik wel een beetje mag aanpassen (richting de klant) (vind ik..).
Ik was zelf ook al van plan een webshop te bouwen. =]
Goede tutorial, hoewel je je taalgebruik wel een beetje mag aanpassen (richting de klant) (vind ik..).
Ik was zelf ook al van plan een webshop te bouwen. =]
Jurgen B schreef op 27.11.2006 13:20
Heeft iemand al iets bedacht voor het date() probleem in checkout.php?
En zo ja, hoe is het bij jullie geworden? Voorbeelden?
voor de error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
in file /vhost/usr/enquete/pizza/cart.php on line 70
voorbeeld opgelost:
$sql = "INSERT INTO bestelling
(bestelnummer, klantnummer, datum)
VALUES
('".$_SESSION['bestelnummer']."','".$_SESSION['klantnummer']."','".date("d-m-Y g:i a")."')"; // Verzin iets moois voor de date() functie
het gaat om het toevoegen van de enkele aanhalingstekens, deze zijn vergeten in het voorbeeld op de website.
hierna werkt het als het goed is als een zonnetje
Heeft iemand al iets bedacht voor het date() probleem in checkout.php?
En zo ja, hoe is het bij jullie geworden? Voorbeelden?
voor de error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
in file /vhost/usr/enquete/pizza/cart.php on line 70
voorbeeld opgelost:
$sql = "INSERT INTO bestelling
(bestelnummer, klantnummer, datum)
VALUES
('".$_SESSION['bestelnummer']."','".$_SESSION['klantnummer']."','".date("d-m-Y g:i a")."')"; // Verzin iets moois voor de date() functie
het gaat om het toevoegen van de enkele aanhalingstekens, deze zijn vergeten in het voorbeeld op de website.
hierna werkt het als het goed is als een zonnetje
ik heb nergens problemen, alleen bij het adden van producten. kan iemand me erbij helpen?
mail het dan even op christian@chaterz.nl
mail het dan even op christian@chaterz.nl
Hoe moet ik die producten toevoegen in die lijst?
// Laat de producten zien
while($product = mysql_fetch_object($query)) {
echo "<form action=\"add.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"122\" value=\"".$product->productnummer."\" />\n";
echo "<p><strong>".$product->heya."</strong> - ".$product->productnaam."<br />\n";
echo "Prijs per stuk: ? ".$product->prijs."<br />\n";
echo "Aantal: <input type=\"text\" name=\"hoeveelheid\" size=\"2\" maxlength=\"2\" value=\"1\" />\n";
echo "<input type=\"submit\" value=\"In Winkelmandje Leggen\" /></p>\n";
echo "</form>\n";
// Laat de producten zien
while($product = mysql_fetch_object($query)) {
echo "<form action=\"add.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"122\" value=\"".$product->productnummer."\" />\n";
echo "<p><strong>".$product->heya."</strong> - ".$product->productnaam."<br />\n";
echo "Prijs per stuk: ? ".$product->prijs."<br />\n";
echo "Aantal: <input type=\"text\" name=\"hoeveelheid\" size=\"2\" maxlength=\"2\" value=\"1\" />\n";
echo "<input type=\"submit\" value=\"In Winkelmandje Leggen\" /></p>\n";
echo "</form>\n";
Heb op wat reacties gezien dat er na 2 producten een fout op treed en de SESSION[cart] verkloot.
Hier een oplossing voor als je wilt controleren als er al een product al reeks is ingevuld. dit stukje code geheel in de else gedeelte plakken en voila.
Belangrijk ! bij impode en explode heb ik . gebruikt ipv , !
$cart = explode("|",$_SESSION['cart']);
//DEbug info
//print_r($_SESSION['cart']);
$x=0;
foreach($cart as $products){
$product = explode(".",$products);
// Hier gaan we checken of het product reeks bestaat zo niet addno is
// nog altijd false en zal niet op true komen als het product nog niet is
// toegevoegd.
if ($product[0] == $productnummer) {
$product[1] = $product[1] + $hoeveelheid;
$cartshop[$x]= $product[0].".".$product[1];
$addno=true;
}else{
// Hier een nieuwe var $cartshop die een nieuwe array word voor de SESSION.
$cartshop[$x]= $product[0].".".$product[1];
}
$x++;
}
// Maken het weer netjes zoals het hoort voor deze array.
$cartshop=implode("|", $cartshop);
// Hier de addno bestaat het product dan is addno true.
if ($addno==true){
$_SESSION['cart'] = $cartshop;
}
// Hier bestaat het product nog niet en moet nog even toegevoegd worden.
if ($addno==false){
$_SESSION['cart'] = $cartshop."|".$productnummer.".".$hoeveelheid;
}
Hier een oplossing voor als je wilt controleren als er al een product al reeks is ingevuld. dit stukje code geheel in de else gedeelte plakken en voila.
Belangrijk ! bij impode en explode heb ik . gebruikt ipv , !
$cart = explode("|",$_SESSION['cart']);
//DEbug info
//print_r($_SESSION['cart']);
$x=0;
foreach($cart as $products){
$product = explode(".",$products);
// Hier gaan we checken of het product reeks bestaat zo niet addno is
// nog altijd false en zal niet op true komen als het product nog niet is
// toegevoegd.
if ($product[0] == $productnummer) {
$product[1] = $product[1] + $hoeveelheid;
$cartshop[$x]= $product[0].".".$product[1];
$addno=true;
}else{
// Hier een nieuwe var $cartshop die een nieuwe array word voor de SESSION.
$cartshop[$x]= $product[0].".".$product[1];
}
$x++;
}
// Maken het weer netjes zoals het hoort voor deze array.
$cartshop=implode("|", $cartshop);
// Hier de addno bestaat het product dan is addno true.
if ($addno==true){
$_SESSION['cart'] = $cartshop;
}
// Hier bestaat het product nog niet en moet nog even toegevoegd worden.
if ($addno==false){
$_SESSION['cart'] = $cartshop."|".$productnummer.".".$hoeveelheid;
}
Hoi,
heb je ook iets met CREATE table enzo dat is makkelijker,
de meeste mensen ( geef zelf toe, ik ook niet ) weten niet goed welke typen ze moeten gebruiken voor wat, bijv als je een id gebruikt bijv een auto_increment snap je dan is het makkelijker om er ook een create table bij te maken :) vind ik hoor
mvg Joost
heb je ook iets met CREATE table enzo dat is makkelijker,
de meeste mensen ( geef zelf toe, ik ook niet ) weten niet goed welke typen ze moeten gebruiken voor wat, bijv als je een id gebruikt bijv een auto_increment snap je dan is het makkelijker om er ook een create table bij te maken :) vind ik hoor
mvg Joost
Het is gewoon even logisch nadenken wat je gaat gebruiken. een auto increment is altijd een integer. Dit zet je dus in een INT veld, of Serial in PGSQL. Een wachtwoord dat je MD5 hasht is altijd 32 karakters. Omdat ditr een vaste waarde is kun je hier een TEXT van maken. Content of titels VARCHAR. Content kan ook MEDIUM of BIG TEXT zijn.
Ik heb een webshop gemaakt mbv deze tutorial. Alles werkt, alleen de sessies gaan niet goed (tenminste ik denk dat het daaraan ligt). Na het plaatsen van een aantal artikelen in de ww en het aanpassen van een aantal artikelen of weggooien en daarna weer rondklikken door de site, verandert de inhoud van mijn winkelwagen: Of weer terug naar hoe het een aantal seconden/minuten daarvoor was of hij verwisselt artikelen met degene die ik net heb weggegooid. Ik kan geen logica vinden in wat er fout gaat. Iemand dit wel eens gezien of herkent het probleem?
Wellicht een domme vraag... Ik heb echt geen idee hoe ik deze pagina's nou precies laat verbinden met mijn database.
Ik snap dat ik een config.php achtig bestand zal moeten aanmaken en includen maar wat moet er dan in dat config bestand staan...
Ik hoop dat iemand me dit kan uitleggen.
Alvast bedankt!
Ik snap dat ik een config.php achtig bestand zal moeten aanmaken en includen maar wat moet er dan in dat config bestand staan...
Ik hoop dat iemand me dit kan uitleggen.
Alvast bedankt!
In je config bestand maak je verbinding met de database.
zie http://www.php.net/mysql_connect
zie http://www.php.net/mysql_connect
hoi,
als ik een een product wil gaan bestellen door op afrekenen te klikken krijg ik de volgende foutmelding:
Column count doesn't match value count at row 1
in file /home/vol4/byethost14.com/b14_2868300/htdocs/test/checkout.php on line 8
alleen ik kan nergens vinden waar dat aan kan liggen.
hoop dat iemand het hier snapt
als ik een een product wil gaan bestellen door op afrekenen te klikken krijg ik de volgende foutmelding:
Column count doesn't match value count at row 1
in file /home/vol4/byethost14.com/b14_2868300/htdocs/test/checkout.php on line 8
alleen ik kan nergens vinden waar dat aan kan liggen.
hoop dat iemand het hier snapt
Beste mensen
bij het afrekenen gaat wat mis. Ik gebruik geen klantnummer. De klant koopt eerst paar producten en dan pas gaat ie afrekenen. Bij de checkout.php moet hij een gegevensformulier invullen. Nu zit ik het probleem dat de gegevens van vershillende producten niet worden meegenomen van uit de cart.php.
heeft dat al opgelost? of hoe hebben jullie het gedaan?
Dank
bij het afrekenen gaat wat mis. Ik gebruik geen klantnummer. De klant koopt eerst paar producten en dan pas gaat ie afrekenen. Bij de checkout.php moet hij een gegevensformulier invullen. Nu zit ik het probleem dat de gegevens van vershillende producten niet worden meegenomen van uit de cart.php.
heeft dat al opgelost? of hoe hebben jullie het gedaan?
Dank
Hey,
ik zou juist graag willen dat mensen een klantnummer dat ze aangemaakt hebben invoeren bij cart.php en dan hij mee verzonden word... nu is er 1 probleem ik krijg hem neit me verzonden dit heb ik nu:
<tr>
<td colspan="4">Totaal</td>
<td></td>
<td> </td>
</tr>
<tr>
<td colspan="2"> <input type="text" name="klantnummer" size="10" maxlength="10" /</td>
<td colspan="4"><input type="submit" value="Ververs" />
</td>
</tr>
</table>
<p>• <a href="javascript:removeCart()">Winkelwagen leeghalen</a><br />
<p>•
PS voor de mensen die neit begrijpen hoe ze zon tabel moeten maken zal er binnen kort droppen voor jullie ;) begrijp namelijk vroeger ook nooiot en weet hoe erritant het is..
gr milo
ik zou juist graag willen dat mensen een klantnummer dat ze aangemaakt hebben invoeren bij cart.php en dan hij mee verzonden word... nu is er 1 probleem ik krijg hem neit me verzonden dit heb ik nu:
<tr>
<td colspan="4">Totaal</td>
<td></td>
<td> </td>
</tr>
<tr>
<td colspan="2"> <input type="text" name="klantnummer" size="10" maxlength="10" /</td>
<td colspan="4"><input type="submit" value="Ververs" />
</td>
</tr>
</table>
<p>• <a href="javascript:removeCart()">Winkelwagen leeghalen</a><br />
<p>•
PS voor de mensen die neit begrijpen hoe ze zon tabel moeten maken zal er binnen kort droppen voor jullie ;) begrijp namelijk vroeger ook nooiot en weet hoe erritant het is..
gr milo
Mooi script!
Zit alleen met het volgende probleem..
Ik werk zelf met USBwebserver en hier werkt de webshop perfect..
Zodra ik deze upload (Hosting2Go) gaat het verkeerd bij het toevoegen van het 2e artikel
Warning: Invalid argument supplied for foreach()
Ik heb alle tips hierboven al opgevolgd
Kan iemand helpen?
Zit alleen met het volgende probleem..
Ik werk zelf met USBwebserver en hier werkt de webshop perfect..
Zodra ik deze upload (Hosting2Go) gaat het verkeerd bij het toevoegen van het 2e artikel
Warning: Invalid argument supplied for foreach()
Ik heb alle tips hierboven al opgevolgd
Kan iemand helpen?
Hallo allemaal,
Ik ben bezig met een webwinkel en tot nu toe werkt de bovenstaande tutorial voor een leek als ik perfect :)
Helaas krijg ikwel steeds de volgende melding nadat ik een product heb toegevoegd (en word doorgestuurd naar de cart.php)
Er liggen 3 producten in de winkelwagen
Productnummer Productnaam Hoeveelheid Prijs p/s Totaal
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
in file /home/daydreamy/domains/aboutwestlife.com/public_html/cart.php on line 83
Kan iemand mij helpen?
Alvast bedankt!
Ik ben bezig met een webwinkel en tot nu toe werkt de bovenstaande tutorial voor een leek als ik perfect :)
Helaas krijg ikwel steeds de volgende melding nadat ik een product heb toegevoegd (en word doorgestuurd naar de cart.php)
Er liggen 3 producten in de winkelwagen
Productnummer Productnaam Hoeveelheid Prijs p/s Totaal
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
in file /home/daydreamy/domains/aboutwestlife.com/public_html/cart.php on line 83
Kan iemand mij helpen?
Alvast bedankt!
Dit is wat er nu staat:
(heb eigenlijk niets veranderd)
80 $sql = "SELECT productnaam, prijs
81 FROM Product
82 WHERE productnummer = ".$product[0] ;
83 $query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__);
84 $pro_cart = mysql_fetch_object($query);
85 $i++;
(heb eigenlijk niets veranderd)
80 $sql = "SELECT productnaam, prijs
81 FROM Product
82 WHERE productnummer = ".$product[0] ;
83 $query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__);
84 $pro_cart = mysql_fetch_object($query);
85 $i++;
Hello mensen,
Ik kan geen producten toevoegen aan de database.
Klanten vullen slechts een form, ze zijn niet geregistreerd. Als je ik dit als checkout gebruik, dan wordt er niets toegevoegd aan tabel: bestelregel.
Thanx
Ik kan geen producten toevoegen aan de database.
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
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
<?php
// checkout.php
session_start();
// In het script doen we het ook maar even stap voor stap.
// Stap 1, zet de order in de order tabel
$ordernr = mysql_insert_id(); // Die hebben we later nodig, is dus ordernr (bestelnr)
// Stap 2, winkelwagen splitten en in de database zetten
$wagentje = explode("|",$_SESSION['cart']);
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
$iSql = "INSERT INTO bestelregel
(id, artnr, aantal)
VALUES
(".$ordernr.", ".$product[0].", ".$product[1].")";
}
echo "<p>De bestelling is toegevoegd!";
echo $iSql;
?>
// checkout.php
session_start();
// In het script doen we het ook maar even stap voor stap.
// Stap 1, zet de order in de order tabel
$ordernr = mysql_insert_id(); // Die hebben we later nodig, is dus ordernr (bestelnr)
// Stap 2, winkelwagen splitten en in de database zetten
$wagentje = explode("|",$_SESSION['cart']);
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(",",$products);
$iSql = "INSERT INTO bestelregel
(id, artnr, aantal)
VALUES
(".$ordernr.", ".$product[0].", ".$product[1].")";
}
echo "<p>De bestelling is toegevoegd!";
echo $iSql;
?>
Klanten vullen slechts een form, ze zijn niet geregistreerd. Als je ik dit als checkout gebruik, dan wordt er niets toegevoegd aan tabel: bestelregel.
Thanx
@Maarten
Is het per sé nodig om de stukprijs door de geven naar de checkout?
Je kunt ook bij de checkout als je de bestelling in de database gooit aan de hand van het productnummer de stukprijs ophalen uit de database en deze mee wegschrijven bij het opslaan van de bestelling.
Dus bij stap 2 vooraf prijs ophalen aan de hand van $product[0], en deze waarde toevoegen op regel 27 aan de insert.
Ik ben zelf bezig aan de hand van de tut (die zeer goed is!) bezig een webshop op te zetten, als ik klaar ben en je komt er nog niet uit, laat maar weten, dan kan ik je mijn code doorgeven.
Is het per sé nodig om de stukprijs door de geven naar de checkout?
Je kunt ook bij de checkout als je de bestelling in de database gooit aan de hand van het productnummer de stukprijs ophalen uit de database en deze mee wegschrijven bij het opslaan van de bestelling.
Dus bij stap 2 vooraf prijs ophalen aan de hand van $product[0], en deze waarde toevoegen op regel 27 aan de insert.
Ik ben zelf bezig aan de hand van de tut (die zeer goed is!) bezig een webshop op te zetten, als ik klaar ben en je komt er nog niet uit, laat maar weten, dan kan ik je mijn code doorgeven.
Na 3 avonden en een zaterdag is het gelukt: Ik heb mijn eerste eigen webshop!
Ik had er gerekend op een maand werk, maar dankzij deze tut was ik in no-time klaar.
Alles overgetypt ipv knippen en plakken. Nu weet ik meteen hoe session werkt en wat je met explode kunt doen. Bedankt!
Ps. Er zitten nog wel wat typfouten in de tut, maar dat houd je scherp en moet je zelf nadenken wat er gebeurd
Ik had er gerekend op een maand werk, maar dankzij deze tut was ik in no-time klaar.
Alles overgetypt ipv knippen en plakken. Nu weet ik meteen hoe session werkt en wat je met explode kunt doen. Bedankt!
Ps. Er zitten nog wel wat typfouten in de tut, maar dat houd je scherp en moet je zelf nadenken wat er gebeurd
Tobias,
IK ben erg benieuwd hoe jij hem werkend heb gekregen.
Ik zit al 3 weken te broeden maar het lukt maar niet.
Is er ergens een zip te vinden met alle correcte bestanden.Het opzetje is erg mooi maar je moet hem wel debuggen voordat je echt kan aanpassen.
Ik mis ook het hele afhandel gedeelte.
IK ben erg benieuwd hoe jij hem werkend heb gekregen.
Ik zit al 3 weken te broeden maar het lukt maar niet.
Is er ergens een zip te vinden met alle correcte bestanden.Het opzetje is erg mooi maar je moet hem wel debuggen voordat je echt kan aanpassen.
Ik mis ook het hele afhandel gedeelte.
Mensen, het probleem dat ik heb, is dat ik soms 2x op (x) moet drukken voordat mijn product zich verwijdert uit het winkelmandje! hierbij heeft hij blijkbaar wel het script gebruikt, want hij geeft wel de goede header aan.. hebben jullie hiervoor een oplossing? of ben ik de enigste met dit probleem!
let me know please ;)!
let me know please ;)!
Daarbij, kan verwijdert hij soms het verkeerde product.. ipv het 1e product, verwijdert die het laatste product in het winkelmandje,
bij cart_update.php verwijdert hij af en toe me hele mandje?
komt dit misschien omdat ik als header:
<code>
$back = $_SERVER['HTTP_REFERER'];
header('Location: $back'); </code>
gebruik?
bij cart_update.php verwijdert hij af en toe me hele mandje?
komt dit misschien omdat ik als header:
<code>
$back = $_SERVER['HTTP_REFERER'];
header('Location: $back'); </code>
gebruik?
ja, in IE deed hij het idd niet.. MAAR merkwaardig is dat hij het op de pagina cart_update.php het wel deed.. Waardoor ik zoiets van van, laat ik alle codes daarin zetten..
Maar goed, na dagen kl*te..., ben ik toch maar bezig om mijn winkelmandje met de hand van een db te maken;)! waarbij hij het winkelmandje met session_id(); werkt;)!
Maar toch vind ik het apart dat me winkelmandje niet optimaal werkte..
Maar goed, na dagen kl*te..., ben ik toch maar bezig om mijn winkelmandje met de hand van een db te maken;)! waarbij hij het winkelmandje met session_id(); werkt;)!
Maar toch vind ik het apart dat me winkelmandje niet optimaal werkte..
Voor een schoolproject over een webshop ben ik aan de tutorial begonnen, dit gaat tot nu toe erg goed.
De meeste functionaliteiten die hier beschreven staan heb ik werkend gekregen, wat echter nog niet werkt is het aanpassen van het winkelmandje en daarbij een artikel verwijderen.
Hierbij krijg ik de foutmelding : Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\delete_cart_item.php on line 6
De auteur heeft in zijn commentaar aangegeven dat er nog een karakter weggehaald moet worden | echter ook als ik dat aanpas krijg ik het nog niet werkend.
Kan iemand mij de goede richting op wijzen ?
De meeste functionaliteiten die hier beschreven staan heb ik werkend gekregen, wat echter nog niet werkt is het aanpassen van het winkelmandje en daarbij een artikel verwijderen.
Hierbij krijg ik de foutmelding : Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\delete_cart_item.php on line 6
De auteur heeft in zijn commentaar aangegeven dat er nog een karakter weggehaald moet worden | echter ook als ik dat aanpas krijg ik het nog niet werkend.
Kan iemand mij de goede richting op wijzen ?
Quote:
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
43
44
45
46
47
48
49
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
43
44
45
46
47
48
49
<?php
// delete_cart_item.php
session_start();
// Variables
if(!is_numeric($_GET['item']) $item = $_GET['item'];
else exit ('Pff... rot op!');
// Wederom, kijken of winkelwagen bestaat
if (empty($_SESSION['cart']))
{
// Geen winkelwagen? Uitzetbeleid! :)
header('Location: index.php');
} else {
// Winkelwagen uit elkaar plukken
$cart = explode('|',$_SESSION['cart']);
// Tellen (eenzijdig hè?)
$count = count($cart);
// kijken of het in de winkelwagen staat
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> productnummer
x == 1 -> hoeveelheid
*/
$product = explode(',',$products);
$i++;
if ($i != $item) { // Dus als die niet die is die verwijderd moet worden
// Var toevoegen aan nieuwe winkelwagen
$inNewCart = $product[0].','.$product[1];
$newCart = $newCart.'|'.$inNewCart;
}
}
// Luiheid, blijheid... er staat nog een | vooraan, even weghalen (had natuurlijk ook eerder
// een controle kunnen doen en die daar niet plaatsen.. :)
$newCart = substr($newCart,1);
}
// Verwijder de 'oude' winkelwagen en bouw een nieuwe
session_unset($_SESSION['cart']);
$_SESSION['cart'] = $newCart;
// En terugsturen
header('Location: cart.php');
?>
// delete_cart_item.php
session_start();
// Variables
if(!is_numeric($_GET['item']) $item = $_GET['item'];
else exit ('Pff... rot op!');
// Wederom, kijken of winkelwagen bestaat
if (empty($_SESSION['cart']))
{
// Geen winkelwagen? Uitzetbeleid! :)
header('Location: index.php');
} else {
// Winkelwagen uit elkaar plukken
$cart = explode('|',$_SESSION['cart']);
// Tellen (eenzijdig hè?)
$count = count($cart);
// kijken of het in de winkelwagen staat
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> productnummer
x == 1 -> hoeveelheid
*/
$product = explode(',',$products);
$i++;
if ($i != $item) { // Dus als die niet die is die verwijderd moet worden
// Var toevoegen aan nieuwe winkelwagen
$inNewCart = $product[0].','.$product[1];
$newCart = $newCart.'|'.$inNewCart;
}
}
// Luiheid, blijheid... er staat nog een | vooraan, even weghalen (had natuurlijk ook eerder
// een controle kunnen doen en die daar niet plaatsen.. :)
$newCart = substr($newCart,1);
}
// Verwijder de 'oude' winkelwagen en bouw een nieuwe
session_unset($_SESSION['cart']);
$_SESSION['cart'] = $newCart;
// En terugsturen
header('Location: cart.php');
?>
if(!is_numeric($_GET['item']) $item = $_GET['item'];
else exit ('Pff... rot op!');
Die klopt niet:)
else exit ('Pff... rot op!');
Die klopt niet:)
Bedankt voor de snelle reactie Niels, ik heb het script aangepast en ik krijg geen crashes meer.
Echter verminderd de waarde ook niet als ik op de knop druk. Moet ik dat nog ergens specificeren ?
Mijn code ziet er nu zo uit.
Echter verminderd de waarde ook niet als ik op de knop druk. Moet ik dat nog ergens specificeren ?
Mijn code ziet er nu zo uit.
Quote:
if( is_numeric( $_GET['item'] ) )
{
// etc
}
else exit ('Pff... rot op!');
{
// etc
}
else exit ('Pff... rot op!');
wat voor voor onzin is dit je plaats opzet van webwinkel. e je krijg niet eens een goede index enzovoort
later staat er onder dit is niet voor noobs!
waarom zet je uberhaupt op de site als opzet van winkelmandje als je niet eens een echt werkend script er kan zetten omdat je webserver niet op school toegankelijk is wie is er dan een noob als je niet eens je eigen script kan testen !
later staat er onder dit is niet voor noobs!
waarom zet je uberhaupt op de site als opzet van winkelmandje als je niet eens een echt werkend script er kan zetten omdat je webserver niet op school toegankelijk is wie is er dan een noob als je niet eens je eigen script kan testen !
@r r
Heb je je nou speciaal geregistreerd om deze onzin op de site te knallen? Dan had je het ook wel kunnen laten...
Je reactie is niet alleen respectloos, stijlloos en doorspekt van Nederlands taalgebruik op het niveau van een kleuter, het is ook nog eens geheel inhoudloos en bevat tevens onwaarheden.
Door de beperkte zinsopbouw en het zo goed als geheel ontbreken van leestekens heb ik helaas erg grote moeite je reactie serieus te nemen, voor zover ik al begrijp wat je precies bedoeld met deze onzin. Niettemin kan ik wel reageren op je laatste veronderstelling: het niet kunnen testen van de code.
Dit (deze tutorial) is, ook overduidelijk in de tutorial vermeld, geen script. Dit was ook absoluut niet de insteek van deze tutorial. Deze is louter bedoeld om de theorie er achter uit te leggen.
Dat deze theorie niet de beste is ben ik mij ten zeerste van bewust. In de zes jaar nadat ik bovenstaande tutorial heb geschreven heb ook ik nog het een en ander geleerd.
Heb je je nou speciaal geregistreerd om deze onzin op de site te knallen? Dan had je het ook wel kunnen laten...
Je reactie is niet alleen respectloos, stijlloos en doorspekt van Nederlands taalgebruik op het niveau van een kleuter, het is ook nog eens geheel inhoudloos en bevat tevens onwaarheden.
Door de beperkte zinsopbouw en het zo goed als geheel ontbreken van leestekens heb ik helaas erg grote moeite je reactie serieus te nemen, voor zover ik al begrijp wat je precies bedoeld met deze onzin. Niettemin kan ik wel reageren op je laatste veronderstelling: het niet kunnen testen van de code.
Dit (deze tutorial) is, ook overduidelijk in de tutorial vermeld, geen script. Dit was ook absoluut niet de insteek van deze tutorial. Deze is louter bedoeld om de theorie er achter uit te leggen.
Dat deze theorie niet de beste is ben ik mij ten zeerste van bewust. In de zes jaar nadat ik bovenstaande tutorial heb geschreven heb ook ik nog het een en ander geleerd.
Ik vind beide reacties van zowel Tobias als rr gewoon respectloos. Als je dit waardeloos vind heb ik een ding te vermelden: 'Schrijf er zelf een!'.
Verder begrijp ik het wel dat beginnetjes graag kant en klare scripts gebruiken, deze aan elkaar plakken en dan zeggen dat het veilig is en op internet zetten. Dan zijn ze ook nog verbaasd dat ze gehackt zijn...
Maar goed waar het om gaat: een tutorial is geen script, een tutorial is om wat van te leren en je op ideeën te brengen.
EDIT:
Zoals te lezen is in het nawoord:
Verder begrijp ik het wel dat beginnetjes graag kant en klare scripts gebruiken, deze aan elkaar plakken en dan zeggen dat het veilig is en op internet zetten. Dan zijn ze ook nog verbaasd dat ze gehackt zijn...
Maar goed waar het om gaat: een tutorial is geen script, een tutorial is om wat van te leren en je op ideeën te brengen.
EDIT:
Zoals te lezen is in het nawoord:
Quote:
Waarom dan deze tutorial?
Nou, als opzetje voor hen die een winkelsysteem willen bouwen. Ze hebben er dan veel werk aan, want er is nog niets om bijvoorbeeld oude bestellingen te bekijken. Maar bij deze tutorial gaat het vooral om het idee, de opzet.
Nou, als opzetje voor hen die een winkelsysteem willen bouwen. Ze hebben er dan veel werk aan, want er is nog niets om bijvoorbeeld oude bestellingen te bekijken. Maar bij deze tutorial gaat het vooral om het idee, de opzet.
Hele doc. afgezocht niks gevonden waar i staat ipv $i of iets anders. Voor de rest werkt cart.php goed. Zie onderstaande:
Quote:
<script type='text/javascript'>
<!--
function removeItem(item) {
var answer = confirm ('Weet je zeker dat je dit product wilt verwijderen?')
if (answer)
window.location='delete_cart_item.php?item=' + item;
}
function removeCart() {
var answer = confirm ('Weet je zeker dat je de winkelwagen wilt leeghalen?')
if (answer)
window.location='delete_cart.php';
}
//-->
</script>
<form method='post' name='form' action='update_cart.php'>
<table>
<tr>
<td>Productnaam</td>
<td>Hoeveelheid</td>
<td>Prijs p/s</td>
<td>Totaal</td>
<td> </td>
</tr>
<tr>
<td colspan='3'>Totaal</td>
<td></td>
<td> </td>
</tr>
<tr>
<td colspan='2'> </td>
<td colspan='4'><input type='submit' value='Ververs' /></td>
</tr>
</table>
</form>
<p>• <a href='javascript:removeCart()'>Winkelwagen leeghalen</a><br />
• <a href='checkout.php'>Afrekenen</a></p>
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// cart.php
session_start();
// Kijk of er iets in de winkelwagen zit
if (empty($_SESSION['cart'])) {
echo '<p>Mooi verhaal! Er zit niets in je winkelwagen!</p>\n';
echo 'Terug naar: ' . '<a href=\'etalage.php\'>etalage</a>';
} else {
// Exploden
$cart = explode('|',$_SESSION['cart']);
// Tellen inhoud winkelwagen
$count = count($cart);
if ($count == 1) {
echo '<p>Er staat 1 product in je winkelwagen.</p>\n';
} else {
echo '<p>Er staan '.$count.' producten in je winkelwagen</p>\n';
} // Ach, gewoon leuke mededeling
// Wat javascriptjes voor het weghalen van producten
// En daarna het begin van een tabel met de inhoud
?>
// cart.php
session_start();
// Kijk of er iets in de winkelwagen zit
if (empty($_SESSION['cart'])) {
echo '<p>Mooi verhaal! Er zit niets in je winkelwagen!</p>\n';
echo 'Terug naar: ' . '<a href=\'etalage.php\'>etalage</a>';
} else {
// Exploden
$cart = explode('|',$_SESSION['cart']);
// Tellen inhoud winkelwagen
$count = count($cart);
if ($count == 1) {
echo '<p>Er staat 1 product in je winkelwagen.</p>\n';
} else {
echo '<p>Er staan '.$count.' producten in je winkelwagen</p>\n';
} // Ach, gewoon leuke mededeling
// Wat javascriptjes voor het weghalen van producten
// En daarna het begin van een tabel met de inhoud
?>
<script type='text/javascript'>
<!--
function removeItem(item) {
var answer = confirm ('Weet je zeker dat je dit product wilt verwijderen?')
if (answer)
window.location='delete_cart_item.php?item=' + item;
}
function removeCart() {
var answer = confirm ('Weet je zeker dat je de winkelwagen wilt leeghalen?')
if (answer)
window.location='delete_cart.php';
}
//-->
</script>
<form method='post' name='form' action='update_cart.php'>
<table>
<tr>
<td>Productnaam</td>
<td>Hoeveelheid</td>
<td>Prijs p/s</td>
<td>Totaal</td>
<td> </td>
</tr>
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
43
44
45
46
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
43
44
45
46
<?php
// Totaal (komt later wel terug)
$total = 0;
// Show cart
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(',',$products);
// 1. Verbinding maken
$db=mysql_connect('localhost', 'root', '')
or die('Helaas, connectie mislukt ' . mysql_error());
// 2. Database kiezen voor mysql commando's:
mysql_select_db('webwinkel')
or die('Database bestaat niet ' . mysql_error());
// Get product info
$sql = 'SELECT productnaam, prijs
FROM product
WHERE productnummer = ' . $product[0]; // Weet je nog, uit die sessie
$query = mysql_query($sql) or die (mysql_error().'<br>in file '.__FILE__.' on line '.__LINE__);
$pro_cart = mysql_fetch_object($query);
$i++;
echo '<tr>\n';
echo '<td>'.$pro_cart->productnaam.'</td>\n'; // naam
echo '<td><input type=\'hidden\' name=\'productnummer_'.$i.'\' value=\''.$product[0].'\' />\n'; // wat onzichtbare vars voor het updaten
echo '<input type=\'text\' name=\'hoeveelheid_'.$i.'\' value=\''.$product[1].'\' size=\'2\' maxlength=\'2\' /></td>\n';
echo '<td>'.$pro_cart->prijs.'</td>\n';
$lineprice = $product[1] * $pro_cart->prijs; // regelprijs uitrekenen > hoeveelheid * prijs
echo '<td>'.$lineprice.'</td>\n';
echo '<td><a href=\'javascript:removeItem('.$i.')\'><img src=\'prullenbak.gif\'/></td>\n'; // Verwijder, mooi plaatje van prullebak ofzo
echo '</tr>\n';
// Total
$total = $total + $lineprice; // Totaal updaten
}
?>
// Totaal (komt later wel terug)
$total = 0;
// Show cart
foreach($cart as $products) {
// Split
/*
$product[x] -->
x == 0 -> product id
x == 1 -> hoeveelheid
*/
$product = explode(',',$products);
// 1. Verbinding maken
$db=mysql_connect('localhost', 'root', '')
or die('Helaas, connectie mislukt ' . mysql_error());
// 2. Database kiezen voor mysql commando's:
mysql_select_db('webwinkel')
or die('Database bestaat niet ' . mysql_error());
// Get product info
$sql = 'SELECT productnaam, prijs
FROM product
WHERE productnummer = ' . $product[0]; // Weet je nog, uit die sessie
$query = mysql_query($sql) or die (mysql_error().'<br>in file '.__FILE__.' on line '.__LINE__);
$pro_cart = mysql_fetch_object($query);
$i++;
echo '<tr>\n';
echo '<td>'.$pro_cart->productnaam.'</td>\n'; // naam
echo '<td><input type=\'hidden\' name=\'productnummer_'.$i.'\' value=\''.$product[0].'\' />\n'; // wat onzichtbare vars voor het updaten
echo '<input type=\'text\' name=\'hoeveelheid_'.$i.'\' value=\''.$product[1].'\' size=\'2\' maxlength=\'2\' /></td>\n';
echo '<td>'.$pro_cart->prijs.'</td>\n';
$lineprice = $product[1] * $pro_cart->prijs; // regelprijs uitrekenen > hoeveelheid * prijs
echo '<td>'.$lineprice.'</td>\n';
echo '<td><a href=\'javascript:removeItem('.$i.')\'><img src=\'prullenbak.gif\'/></td>\n'; // Verwijder, mooi plaatje van prullebak ofzo
echo '</tr>\n';
// Total
$total = $total + $lineprice; // Totaal updaten
}
?>
<tr>
<td colspan='3'>Totaal</td>
<td></td>
<td> </td>
</tr>
<tr>
<td colspan='2'> </td>
<td colspan='4'><input type='submit' value='Ververs' /></td>
</tr>
</table>
</form>
<p>• <a href='javascript:removeCart()'>Winkelwagen leeghalen</a><br />
• <a href='checkout.php'>Afrekenen</a></p>
Je hebt geluk dat Milo een update van de tut heeft gemaakt: http://www.phphulp.nl/php/script/overig/winkelwagen-update-van-de-tutorial/1750/
En Niels heeft een script gemaakt:
http://www.phphulp.nl/php/script/overig/upload-systeem-winkelwagen-oo/1756/
En Niels heeft een script gemaakt:
http://www.phphulp.nl/php/script/overig/upload-systeem-winkelwagen-oo/1756/
@Victor PHP
Qua OO slaat mijn script de plank nog best ver mis.
Om er even een kleine post aan de wijden:
De classe shoppingbag / winkelwagen is niet echt OO. Je kan beter een klasse order hebben en een klasse order item. In order houd je dan een array met order item objecten bij.
Als ik deze week even tijd heb zal ik een tutorial / script versie 2 maken dat was ik al van plan.
EDIT:
Misschien dat er uit dit topic wat goeds voortkomt? (code, opzet, etc)
Qua OO slaat mijn script de plank nog best ver mis.
Om er even een kleine post aan de wijden:
De classe shoppingbag / winkelwagen is niet echt OO. Je kan beter een klasse order hebben en een klasse order item. In order houd je dan een array met order item objecten bij.
Als ik deze week even tijd heb zal ik een tutorial / script versie 2 maken dat was ik al van plan.
EDIT:
Misschien dat er uit dit topic wat goeds voortkomt? (code, opzet, etc)
Bedankt voor deze tutorial
Ik heb dit script uitgeprobeerd en helemaal uitgebouwd
maar 1 ding werkt niet goed en dat is het verwijderen van producten
alles werkt naar behoren toevoegen bedragen en kortingen berekenen
ik heb bijvoorbeeld 5 producten staan in me sessie
en als ik dan zeg ik wil er 1 uit halen een willekeuringe dus dan pakt ie bij de eerste keer niet dan moet ik als nog een keer klikken en dan werkt ie wel
mar heb ik maar 1 product dan werkt het prima
hoe kan dit opgelost worden? het werkt met een stukkie javascript.
Ik heb dit script uitgeprobeerd en helemaal uitgebouwd
maar 1 ding werkt niet goed en dat is het verwijderen van producten
alles werkt naar behoren toevoegen bedragen en kortingen berekenen
ik heb bijvoorbeeld 5 producten staan in me sessie
en als ik dan zeg ik wil er 1 uit halen een willekeuringe dus dan pakt ie bij de eerste keer niet dan moet ik als nog een keer klikken en dan werkt ie wel
mar heb ik maar 1 product dan werkt het prima
hoe kan dit opgelost worden? het werkt met een stukkie javascript.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type='text/javascript'>
<!--
function removeItem(item) {
var answer = confirm ('Weet je zeker dat je dit product wilt verwijderen?')
if (answer)
window.location='delete_cart_item.php?item=' + item;
}
function removeCart() {
var answer = confirm ('Weet je zeker dat je de winkelwagen wilt leeghalen?')
if (answer)
window.location='delete_cart.php';
}
//-->
</script>
<!--
function removeItem(item) {
var answer = confirm ('Weet je zeker dat je dit product wilt verwijderen?')
if (answer)
window.location='delete_cart_item.php?item=' + item;
}
function removeCart() {
var answer = confirm ('Weet je zeker dat je de winkelwagen wilt leeghalen?')
if (answer)
window.location='delete_cart.php';
}
//-->
</script>
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
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
<?php
session_start();
$item = $_GET['item'];
if (empty($_SESSION['cart']))
{
header('Location: index.php');
}
else
{
$i=0;
$cart = explode('|',$_SESSION['cart']);
$count = count($cart);
foreach($cart as $products)
{
$product = explode(',',$products);
$i++;
if ($i != $item)
{
$inNewCart = $product[0].','.$product[1];
$newCart = $newCart.'|'.$inNewCart;
}
}
$newCart = substr($newCart,1);
}
session_unset($_SESSION['cart']);
$_SESSION['cart'] = $newCart;
header('Location: demo1.php');
?>
session_start();
$item = $_GET['item'];
if (empty($_SESSION['cart']))
{
header('Location: index.php');
}
else
{
$i=0;
$cart = explode('|',$_SESSION['cart']);
$count = count($cart);
foreach($cart as $products)
{
$product = explode(',',$products);
$i++;
if ($i != $item)
{
$inNewCart = $product[0].','.$product[1];
$newCart = $newCart.'|'.$inNewCart;
}
}
$newCart = substr($newCart,1);
}
session_unset($_SESSION['cart']);
$_SESSION['cart'] = $newCart;
header('Location: demo1.php');
?>
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
Elwin - Fratsloos- 7 jaar geleden
- 16.809 x bekeken
- PHP tutorials opties
- Overig
- Nieuwste PHP tutorials
- PHP tutorial toevoegen

PHP hulp
0 seconden vanaf nu