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>';
?>
Zet het even tussen [.code] en [./code] (zonder de punt er in) tags dan is het te lezen.
Oke sorry.


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>
<td><input name="hoeveelheid" size="3" value="1"><input type="submit" name="Submit" value="Bestellen"></form></td>' ;
misschien een stomme opmerking maar,

is het niet handiger om zoiets te maken met een database ?
en baseren op eht IP-adres ? of moet hij met sessions ?

zo niet kun je dit doen :

je hebt het IP v.d. visitor, die sla je op met de toegevoegde producten, en die laat je de visitor weer zien.

Maar jah, als hij met sessions moet gaat dat niet :P
Hij moet met sessions ;) want wij dachten dat eigenlijk ook zo te doen... alleen dat was dus niet goed...
okay met sessions dan, het bestelformulier en de winkelwagen lukken al ? Wat moet er dan nog gedaan worden ? Producten toevoegen en verwijderen of wat ?
Dit is maat 1 artikel. Is dat de bedoeling? En waar komt $artikelnummer vandaan? En de andere $vars?
Dus je hebt een formulier die je gebruikt om te bestellen.
Ik ga ervan uit dat je $_SERVER['PHP_SELF'] gebruikt als action van het formulier.

Zodra er iets "besteld" word, moeten er een aantal iets gebeuren.
- De bestelling opnemen, en in een sessie variabele zetten.

Dit kan je doen door heel simpel te zeggen:
<?php
$_SESSION['winkelwagen'][$_POST['artikelNr'] = $_POST['aantal'];
?>

Nu kan dit gebeuren voor meerde artikelen, dus je $_SESSION['winkelwagen'] array bevat meerdere array's.

Nu wil je bij de winkelwagen een overzicht geven van de producten.
Hiervoor moet je alle producten in de $_SESSION['winkelwagen'] doorlopen.
Om een snel overzicht te geven, zou iets als dit moeten werken:
<?php
foreach ($_SESSION['winkelwagen'] as $artikelNr => $aantal)
{
echo 'Artikel Nummer: '. $artikelNr .'<br />';
echo 'Aantal: '. $aantal .'<br />';
echo '<br /><br />';
}
?>

Nu kan je een array maken, waarin je de prijs van een bepaald artikel op slaat, met het artikel nummer als key van de array waarde.

Daarna kan je het aantal producten wat je hebt besteld vermenigvuldigen met $prijsLijst[$artikelNr].

Je zou dan nog een extra teller mee kunnen laten lopen, die daarna alles nog bij elkaar optelt.

Dit is een structuur die je zou kunnen gebruiken, maar ik snap niet precies wat je probleem discreet is.
Ik doe wel even de hele code van de webwinkel, dat maakt het misschien wat duidelijker.


<?php
	session_start();
?>

<?php
	include("connect_database.php");
	
	$result = mysql_query('SELECT * FROM artikel');
	
	echo '<table border="2">';
	echo '<tr> <td> Wijn </td><td> Soort </td><td> Land </td><td> Verpakking </td><td> &#8364;/eenheid </td><td> Voorraad </td><td name="aantal"> Aantal eenheden </td>' ;
	while ($record = mysql_fetch_assoc($result)){
		$artikelnummer = $record['artikelnummer'];
		$omschrijving = $record['omschrijving'];
		$land = $record['land'];
		$soort = $record['soort'];
		$eenheid = $record['eenheid'];
		$prijs = $record['prijs'];
		$prijs = number_format($prijs , 2 , "," , ".");
		$verpakking = $record['verpakking'];
		$voorraad = $record['voorraad'];

		if ($voorraad < 0) {
			$resultaat = '0';
		}
		else {
			$resultaat = $voorraad; 
		}
		 
		echo '<tr>' ;
			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>' ;
		echo '</tr>' ;

	}
	
	mysql_close();
?>


[size=xsmall]Toevoeging op 26/09/2010 22:14:28:[/size]

Nou kort gezegd is het probleem dus dat ik de winkelwagen niet werkend krijg. Er komen geen producten in, hij onthoudt ze niet en ik kan er geen producten in verwijderen.
huh nu volg ik het niet meer ?

Eerst zeg je dat je niet met een database mag werken, en vervolgens gebruik je een database wees slim, maak een tabel bestellingen aan zet daarin id, ip, producten en insert gewoon de waardes die mensen bestellen, dus jantje op ip 89.258.45.77 besteld wijn, dan insert je dat naar wijn, met het ip 89.258.45.77 en met ID 1, want sessions zijn niet echt handig als je mij vraagt.

Misschien komt dit dom over, maar is maar een idee he :-)

Zie hier hoe een insert werkt : (voorbeeld) in mysql : http://www.phphulp.nl/php/forum/topic/insert-into-andere-mysqltabel/73398/last/
Ja maar van de wijnwinkel naar de winkelwagen (ja we moeten een webwinkel maken voor een wijnwinkel zeg maar) daarvoor moet je sessions gebruiken. Ik moet de producten dus invoeren in de database, handmatig. Dan moet ik ze uit de database halen voor de wijnwinkel, maar ik moet dit niet met de database doen omdat dat dus niet mag.

Reageren