Ik heb onderstaand stukje code. Het probleem is nu dat hij de twee in sessies opgeslagen data niet wil weergeven. Ik krijg de error "Notice: Undefined index: zilver" (ook voor zilver_aantal) Wat doe ik hier fout ?

[code]
<?php
$sql3 = mysql_query("SELECT * FROM bestelregel WHERE bestelid='".$bestel_id."' AND product_id='1'");
// Als query is gelukt
if($sql3)
{
// Als er items zijn
if(mysql_num_rows($sql3) > 0)
{
while($rec = mysql_fetch_assoc($sql3))
{
$_SESSION['zilver'] = '<tr style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">
<td width="300" style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">Aantal Zilveren horloges</td>';

$_SESSION['zilver_aantal'] = '<td width="300">'.$rec['aantal'].'</td></tr>';
}
}
else {
$_SESSION['zilver'] = '';
$_SESSION['zilver_aantal'] = '';
}
}

echo $_SESSION['zilver'];
echo $_SESSION['zilver_aantal'];
?>
Blijkbaar is $sql3 false, oftewel je query mislukt. Maar dat controleer je verder nergens?
Idd zeer stom van me :( Dit was dan ook het probleem en heb het inmiddels opgelost. Wordt tijd voor een bakje koffie denk ik :) Bedankt !
Om 'Undefined index' te voorkomen kun je je variabele eerst controleren met isset() of die variabele überhaupt wel bestaat.

if(isset($_SESSION['zilver']))
{
echo $_SESSION['zilver'];
}
if(isset($_SESSION['zilver_aantal']))
{
echo $_SESSION['zilver_aantal'];
}
Toch nog een ander probleempje. Ik heb deze code nog een keer gebruikt maar dan voor de zwarte variant. Nu is het probleem dat hij maar 1 van de 2 query's als gevult ziet. Als ik eerst een zwarte en dan een zilvere in de database zet pakt hij alleen de zwarte en bij de andere net andersom. Wat zou dit kunnen zijn ?:

[code]
<?
$sql3 = mysql_query("SELECT * FROM bestelregel WHERE bestel_id='".$bestel_id."' AND product_id='1'");
// Als query is gelukt
if($sql3)
{
// Als er items zijn
if(mysql_num_rows($sql3) > 0)
{
while($rec = mysql_fetch_assoc($sql3))
{
$_SESSION['zilver'] = '<tr style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">
<td width="300" style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">Aantal Zilveren horloges</td>';

$_SESSION['zilver_aantal'] = '<td width="300">'.$rec['aantal'].'</td></tr>';
$_SESSION['zilver_totaal'] = $rec['aantal'] * 14.95;
$_SESSION['zilver_totaal2'] = '<tr style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">
<td width="300" style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">Totaalprijs Zilveren horloges</td><td width="300">'.$_SESSION['zilver_totaal'].'</td>
</tr>';
}
}
else {
$_SESSION['zilver'] = '';
$_SESSION['zilver_aantal'] = '';
$_SESSION['zilver_totaal'] = '';
$_SESSION['zilver_totaal2'] = '';
}
}

$sql4 = mysql_query("SELECT * FROM bestelregel WHERE bestel_id='".$bestel_id."' AND product_id='2'");
// Als query is gelukt
if($sql4)
{
// Als er items zijn
if(mysql_num_rows($sql4) > 0)
{
while($rec2 = mysql_fetch_assoc($sql4))
{
$_SESSION['zwart'] = '<tr style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">
<td width="300" style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">Aantal Zwarte horloges</td>';

$_SESSION['zwart_aantal'] = '<td width="300">'.$rec2['aantal'].'</td></tr>';
$_SESSION['zwart_totaal'] = $rec2['aantal'] * 14.95;
$_SESSION['zwart_totaal2'] = '<tr style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">
<td width="300" style="border-width: 1px; padding: 1px; border-style: inset; border-color: gray;">Totaalprijs Zwarte horloges</td><td width="300">'.$_SESSION['zwart_totaal'].'</td>
</tr>';
}
}
else {
$_SESSION['zwart'] = '';
$_SESSION['zwart_aantal'] = '';
$_SESSION['zwart_totaal'] = '';
$_SESSION['zwart_totaal2'] = '';
}
}
?>
[/php]
Ga je voor elke kleur een query en een serie sessies toevoegen?! :s

Al aan het debuggen geweest? Wat geeft $sql4? Is dat wat je zou verwachten? Zorg voor foutafhandeling.

Waarom gebruik je * en selecteer je niet het veld/de velden die je nodig hebt?
Je krijgt bij $sql3 en 4 maar 1 rij terug? Waarom dan een while-lus?
Ga je in sessions hele opmaak meegeven? Opmaak hoort ten eerste in css.
Daarnaast enige wat anders is, is het woordje zilver /zwart. Kun je toch veel makkelijker oplossen? Controleer op kleur (in session) en toon op basis daarvan.
Bouw degelijke foutafhandeling in. Op deze manier kom je er nooit achter wat er nu fout gaat als je query mislukt. Zie ook deze SQL beginnershandleiding
Jullie hebben gelijk. Ik ben vandaag niet zo goed bezig. Ik heb intussen een andere veel logischere mannier gevonden om dit te doen, bedankt !

Reageren