Hoi,

Ik ben bezig met een webwinkel om te oefenen hiermee (het is een wijnwinkel) en nu zit ik vast. Ik heb zo ver: webwinkel.php staan alle wijnen en kunnen je bestellen, dan ga je naar winkelwagen.php waarop je tot dusver ingevoerde aantallen staan.

Ik heb via sessions de aantal en artikelnummer opgevraagd, en deze toont hij ook goed, maar nu wil ik via het artikelnummer alle andere gegevens ophalen uit de database, maar dat krijg ik niet werkend. Ik heb de meeste code wel al, en al zoveel geprobeerd maar het lukt niet.

Hier een afbeelding van het resultaat: http://i43.tinypic.com/2qira7l.jpg


<?php
session_start();
include ('connection.php');
$artikelnummer=$_POST['artikelnummer'];
$aantal=$_POST['aantal'];
$_SESSION['winkelwagen'][$artikelnummer]=$aantal;

if (isset($_POST['verderwinkelen']))
{
header ("Location: wijnwinkel.php");
exit;
}
if (isset($_POST['plaatsbestelling']))
{
header ("Location: bestelling.php");
exit;
} 
?>

<html>

<head>
	<title>Wijnwinkel - winkelwagen</title>
</head>

<body>

<h1>Inhoud winkelwagen</h1>
<hr />

<?php
	echo '<table border="1">';
	echo '<tr>';
	echo '<td>Wijn</td>';
	echo '<td>aantal</td>';
	echo '<td>Prijs eenheid</td>';
	echo '<td>Totaal</td>';
	echo '</tr>';
	
foreach ($_SESSION['winkelwagen'] as $artikelnummer => $aantal)
{
	$keuze = mysql_query('SELECT omschrijving, eenheid, verkoopprijs FROM artikel WHERE artikelnummer=' . $artikelnummer . '');
	echo '<tr>';
	echo '<td> bla</td>';
	echo '<td>' . $aantal . '</td>';
	echo '<td>de prijs</td>';
	echo '<td>het totaal</td>';
	echo '<td><a href="">verwijder</a></td>';
	echo '</tr>';
}
	echo '</table>'; 

	echo '<form method="post" action="">';
	echo '<input type="submit" name="verderwinkelen" value="verder winkelen" />';
	echo '<input type="submit" name="plaatsbestelling" value="bestellen plaatsen" />';
	echo '</form>';

?>
</body>

</html>


ik weet dat je normaal een ($row = mysql_fetch_array($result) gebruikt, maar dat krijg ik hier niet bij en andere manier lukken ook niet. Ik weet dat er nog een andere fout in zit (dat hij een lege regel ertussen pakt) maar dat is niet het voornaamste, ik wil eerst deze grote fout eruit halen. Mocht iemand het antwoord op die tweede weten meldt het dan want dat is altijd wel zo handig!

Wat doe ik fout?
Ja maar je geeft een prijs toch altijd aan met een komma, want als ik geen komma pak staat er 345 en dat is niet de bedoeling.. wat ik nodig heb is in mijn database dat als ik een nieuwe wijn invoer en die kost 4,30 dat hij dan 4,30 laat zien, niet alleen 4 of 430.. anders krijg ik het ook niet goed gerekend mijn betalen etc.

en wat was de fout dan van wat ik eerder zei dat van:
Notice: 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 1 in C:\Program Files\wamp\www\webwinkel\winkelwagen.php on line 46

Als ik dan datgene op lijn 46 (trigger_error(mysql_error());) weghaal, dan geeft hij geen foutmelding, dus wat is er fout aan?
Femke schreef op 05.07.2009 11:49
Ja maar je geeft een prijs toch altijd aan met een komma, want als ik geen komma pak staat er 345 en dat is niet de bedoeling.. wat ik nodig heb is in mijn database dat als ik een nieuwe wijn invoer en die kost 4,30 dat hij dan 4,30 laat zien, niet alleen 4 of 430.. anders krijg ik het ook niet goed gerekend mijn betalen etc.

Die komma is presentatie, dus dat doe je op het moment dat je het op het scherm zet. De database kan alleen werken met een punt.

Femke schreef op 05.07.2009 11:49
en wat was de fout dan van wat ik eerder zei dat van:
Notice: 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 1 in C:\Program Files\wamp\www\webwinkel\winkelwagen.php on line 46

near ''
Dus je variabele in de query is waarschijnlijk leeg.

Femke schreef op 05.07.2009 11:49
Als ik dan datgene op lijn 46 (trigger_error(mysql_error());) weghaal, dan geeft hij geen foutmelding

Logisch. Als je helemaal geen script schrijft gaat het ook nooit fout.
Altijd errors oplossen en niet de reporting onderdrukken.
Maar hoe zet ik die komma er dan in? Dat snap ik niet.

En in mijn query kan geen lege variabele zijn want alles is gebruikt.. ik had trouwens dit geprobeerd: ipv $keuze = mysql_query('SELECT omschrijving, eenheid, verkoopprijs FROM artikel WHERE artikelnummer=' . $artikelnummer . ''); dit: $keuze = mysql_query('SELECT omschrijving, eenheid, verkoopprijs FROM artikel WHERE artikelnummer="' . $artikelnummer . '"');

Want een where moet toch altijd tussen haakjes dus bijvoorbeeld where artikelnummer="0" en dat had ik niet met dat php stukje er tussen.

Nu is de fout ook weg maar krijg ik een lege regel er tussen..
Wijn aantal Prijs eenheid Totaal
Dona Eloda(2002) 8 3 24 verwijder
0 verwijder
Principe Tinto(2003) 4 3 12 verwijder

dat dus.. wat is dat nou weer?
Er zit een lege var in je session, dus ook in de query. Dit kan komen doordat je niets controleert op regel 6, 7 en 8. Zie mijn eerdere posts.
Maar dat snap ik niet, hoe kan er dan een lege var inkomen?

Want zo gaat het: ik vul 5 in bij wijn 1 dan druk ik op bestel dan gaat hij naar deze pagina controleert het aantal en het artikelnummer en weergeeft dat. Daar kan toch geen lege var in zitten dan?

En hoe moet ik iets controleren? Dat het niet nul is?
Femke schreef op 04.07.2009 20:29

Hier een afbeelding van het resultaat: http://i43.tinypic.com/2qira7l.jpg

Hier staat ook al een lege regel in.

<?php
if(!empty($_POST['artikelnummer']) and !empty($_POST['aantal']))
{
$artikelnummer=$_POST['artikelnummer'];
$aantal=$_POST['aantal'];
$_SESSION['winkelwagen'][$artikelnummer]=$aantal;
}
?>
Oh foutje, ik had net mijn privé gegevens opgeruimd voordat ik op plaats bericht drukte, waardoor mijn bericht niet geplaatst is terwijl ik dat wel dacht. Mijn fout haha.

Ik had ongeveer dit gezegd:
Bedankt! Hij doet het nu zoals hij het hoort te doen :D

Vind je het vervelend om me nog met 1 dingetje te helpen? Dat is met die komma, ik heb zoveel geprobeerd:
- wat jij zei, int vervangen door decimal
- een punt ipv een komma
- de aantal toegestane karakters verhogen
en niks werkt, ik snap echt niet hoe ik nu een komma ergens moet kirjgen waar hij hoort.

Als je genoeg hebt van mij en mijn wijndingen moet je het ook maar zeggen hoor ^^
Probeer dit eens:
<?
$keuze = mysql_query('SELECT omschrijving, eenheid, verkoopprijs FROM artikel WHERE artikelnummer=\'' . $artikelnummer . '\');
?>
wtf ik kan mijn einde van '\' niet eens erin zetten die zie je dan niet.. maargoed achter $artikelnummer . moet dit: '\' nog vóór );
Hey,

zoals ik in mijn vorige post al aangaf: ik heb dat probleem al opgelost. Het enigste wat ik nu nog niet krijg is dat gedoe met de komma. De rest is goed gegaan gelukkig (een wijn verwijderen en een lege winkelwagen afvangen)

Maar toch bedankt dat je me wilde helpen!
Hmmm, ik dacht misschien [php]str_replace[/php] op in input dus converteren naar . en als je het uit de database haalt weer maar dan de . naar een ,

Dit is natuurlijk wel een omzeiling van het probleem en niet een oplossing ;)

Reageren