Melding "We hebben nog geen reacties" blijft staan in gastenboek
De bedoeling is om een melding te krijgen als er nog geen berichten zijn geschreven. Die regel krijg ik wel te zien, maar ook nog als er wel degelijk berichten in de database staan, terwijl de berichten niet worden getoond. In plaats daarvan 3 maal een melding over ongedefinieerde variabelen (naam, datum en boodschap) in de html table.
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
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
<?php
if ($query > 0)
while ($obj = mysql_fetch_object($sql)) {
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
$naam = $obj->naam;
$datum = $obj->datum;
$boodschap = $obj->boodschap;
} else {
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
}
?>
<br>
<table width="90%" border="0" cellspacing="0" cellpadding="3" align="center">
<tr>
<td >
<strong>Geschreven door <?php echo $naam; ?></strong>
op <?php echo $datum; ?>
</td>
</tr>
<tr>
<td >
<?php echo $boodschap; ?>
</td>
</tr>
</table>
Wat zie ik over het hoofd?
Gewijzigd op 06/01/2013 01:03:32 door Roel -
Kan je jouw code eerst even tussen [code] en [/code] plaatsen? Dat maakt het beter leesbaarder.
misschien is iets meer code ook wel belangrijk, $query en $sql komen nu als donderslag bij heldere hemel.
Gewijzigd op 05/01/2013 19:58:11 door Jurgen B
Code (php)
1
2
2
$query = "SELECT * FROM gastenboek ORDER BY id DESC";
$sql=mysql_query($query) or die (mysql_error());
$sql=mysql_query($query) or die (mysql_error());
@Aar, ik heb mijn code echt tussen de code tags gezet, snap ook niet waardoor het zo versnipperd.
@Jurgen B, die { staat toch achter de regel met while?
Maar heeft geen effect als ik hem daar weghaal en achter de if zet.
in plaats van $query > 0. $query is namelijk gewoon een string
probeer Marianne M op 05/01/2013 20:07:28:
Je mist de PHP-begin tag...
Toevoeging op 05/01/2013 20:18:45:
while is geen functie en kan geen true of false geven. Deze kan dus niet vertellen of een query wel of geen items uitspuugt. Je zult met mysql_num_rows() moeten gaan tellen of er minder dan 1 items zijn (niets dus), en dan kan je een dergelijke foutmelding tonen.
Ik weet niet wat de bedoelde constructie is, maar er mist in ieder geval een { achter de if (die kan je alleen weglaten als je een single statement if hebt). De else hoort nu bij de while en niet de if.
in
Dat maakt al wat verschil, maar krijg nu de melding:
Trying to get property of non-object op de regels waar $datum en $boodschap staat.
Dit heeft denk ik te maken met de while.
Ik zoek me rot naar een oplossing, maar kom er niet uit.
Laat nu eens je relevante code zien?
$datum en $boodschap bestaan niet buiten je while loop. Als je die gegevens wilt tonen moet je dat dus altijd binnen de while loop doen.
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
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
<?php
if (mysql_num_rows($sql) > 0)
{
while ($obj = mysql_fetch_object($sql))
{
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
$naam = $obj->naam;
$datum = $obj->datum;
$boodschap = $obj->boodschap;
echo '
<table width="90%" border="0" cellspacing="0" cellpadding="3" align="center">
<tr>
<td >
<strong>Geschreven door '.$obj->naam.'</strong>
op '.$obj->datum.'
</td>
</tr>
<tr>
<td >
'.$obj->boodschap.'
</td>
</tr>
</table>
';
}
}
else
{
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
}
?>
if (mysql_num_rows($sql) > 0)
{
while ($obj = mysql_fetch_object($sql))
{
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
$naam = $obj->naam;
$datum = $obj->datum;
$boodschap = $obj->boodschap;
echo '
<table width="90%" border="0" cellspacing="0" cellpadding="3" align="center">
<tr>
<td >
<strong>Geschreven door '.$obj->naam.'</strong>
op '.$obj->datum.'
</td>
</tr>
<tr>
<td >
'.$obj->boodschap.'
</td>
</tr>
</table>
';
}
}
else
{
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
}
?>
Ik ga zowel de code die ik had als deze uitprinten, naast elkaar leggen en bestuderen.
Nu alleen nog de php boven de html plaatsen denk ik en dan zou het goed moeten zijn.
Allemaal bedankt voor aanwijzingen en meedenken.
Mij is alleen niet helemaal duidelijk wat het doel/de reden is van regel 7 t/m 9. Je doet er verder niets mee, want in de echo gebruik je $obj->
Klopt Obelix, Die zijn er nu ook uit.