Het volgende probleem doet zich voor:
Ik ben bezig een webshop te maken, dit gaat redelijk. Het lukt mij om een produkt in een winkelwagen te krijgen maar het blijft bij 1 produkt.
De funktie die ik gemaakt heb is deze.
<?php
function ShowWinkelwagen()
{
echo "Inhoud van de winkelwagen<br>";
$winkelwagen = $_SESSION["winkelwagen"];
if (count($winkelwagen)>0)
{
echo "<table width= '210'>";
echo "<tr><td>Item</td><td>Type</td><td>€</td><td></td></tr>";
for ($i=0;$i<count($winkelwagen);$i++)
$sql=mysql_query("SELECT * FROM artikel WHERE artikelnummer='".$_GET['bestel']."'");
$record=mysql_fetch_array($sql);
{
echo "<tr><td>$i</td><td width=140>$record[3]</td><td>$record[6]</td><td><a href ='lijst.php?verwijder=?".$i."'>Verwijder</a></td></tr>";
}
echo "</table>";
}
}
?>
Met he volgende neem ik het artikelnummer mee.
<a href='lijst.php?bestel=".$record[0]."'>Bestellen</a>
Ik heb van alles geprobeerd maar ik krijg niet de juiste oplossing: dat er verschillende artikelen in komen.
De tutorial van Elwin Opzet webwinkel heeft mij helaas niet verder geholpen.
Wie kan mij helpen dit probleem uit de wereld te helpen.
<?php
function ShowWinkelwagen()
{
$_SESSION['winkelwagen'][]=$_GET['bestel'];
echo "Inhoud van de winkelwagen<br>";
if (count($_SESSION['winkelwagen'])>0)
{
echo "<table width= '210'>";
echo "<tr><td>Item</td><td>Type</td><td>€</td><td></td></tr>";
$totaal=0;
for ($i=0;$i<count($_SESSION['winkelwagen']);$i++)
{
$sql=mysql_query("SELECT * FROM artikel WHERE artikelnummer='".$_GET['bestel']."'");
$record=mysql_fetch_array($sql);
echo "<tr><td>$i</td><td width=140>$record[3]</td><td>$record[6]</td><td><a href ='lijst.php?verwijder=".$i."'>Verwijder</a></td></tr>";
?>
Heb ik nu maar dan worden er 3 te gelijk toegevoegd terwijl het produkt het zelfde blijft. Dus eigenlijk geen verandering.
Ik heb bij "count" er ook maar $_SESSION['winkelwagen'] van gemaakt ipv $winkelwagen anders werd er helemaal niets weer gegeven.
Het aantal vind ik nog niet zo'n probleem dat komt wel als ik de produkten er goed in krijg hoop ik.
@Rick:
Volgens mij maakt het niet uit of je een while of for loop voor gebruikt.
Het vreemde is dat hij wel toevoegd
Groeten Martijn
PS Als ik op verwijder klik dan worden de produkten weg gehaald maar blijft de lijst even lang met de verwijder link heeft dat met dit probleem te maken of is dat weer wat anders?
Tjah, daar heb je op zich gelijk in Rick, en als je database helemaal goed in elkaar zit, net als je codering, werkt dat helemaal goed...
Maar we proberen Martijn te helpen met zijn code, het idee dat hij heeft is goed, en kan ook prima werken. Dus we helpen hem eerst zo, als hij dan besluit het toch anders te doen, gaan we hem daarmee helpen ;)
[edit]
De meeste webshops hebben de mogelijkheid al producten aan een winkelwagentje toe te voegen, zonder dat iemand eerst in moet loggen, ik denk ook dat het daarvoor is.
Het kan ook "gewoon" met een tabel daarvoor.. Als iemand nog niet is ingelogd, krijgt die een "anoniem userid" toegewezen, (gewoon een userid, maar dan zonder loginnaam en wachtwoord en dergelijke) op die ID worden items in het winkelwagentje gezet.. Wanneer het een bestaande user is en die dan in gaat loggen, wijzig je met een query, alle userid's van de "anonieme" naar die van de inloggende user. (no problem)
Ook wanneer iemand zich aan wil melden na het toevoegen van items aan het winkelwagentje moet dat geen probleem zijn.. (met een $_SESSION['userid'] waarin je de toegewezen id hebt staan) en dan een formuliertje met aanmeldgegevens, kan je ook dat laten doen.)
[/edit]
In het geval van jouw code gaat dat niet op Martijn, alle waarden van je sessie kan je straks uitlezen (mits je gebruik maakt van de methode zoals je er nu mee bezig bent, met mijn voorstel over $_SESSION['winkelwagen'][0]) door:
foreach($_SESSION['winkelwagen'] as $winkelitem){
echo $winkelitem;
}
(uiteraard kan je dan wel je eigen verwerking erop los laten.)
foreach($_SESSION['winkelwagen'] as $winkelitem){
echo $winkelitem;
}
Sorry dit ontgaat me even zou ik dat moeten gebruiken ipv de forloop
Ben er nog niet helemaal uit,
$_SESSION['winkelwagen'][0] om de output hiervan te krijgen moet ik dan nog wat anders veranderen.
Want zoals het nu is krijg ik per besteld item 3 x een produkt toegevoegd wordt.
Het probleem blijf dat alle items blijven veranderen in de laatst bestelde.
Zet de inhoud van de winkelwagen a.u.b. in een tabel, en bijvoorbeeld het id in een sessie/cookie. Daar heb je meer aan. Je kunt nu de inhoud van de wikelwagen namelijk ook koppelen aan een gregistreerde gebruiker, of adresgegevens. Ik neem aan dat dit nu alleen bij bestellingen gebeurd.
Probeer tevens niet te moeilijk te doen, maar keep it simple.
Iets zegt mij ook dat in functies soms global wel eens wil helpen.
[edit]
Link..
[/edit]