Mensen kunnen een recensie schrijven.

Als de naam waarvoor ze een recensie schrijven nog niet in de database staat komt er een zinnetje te staan met "Schrijf uw beoordeling" .

Als de naam al wel voorkomt in de database dan komt er een zin boven te staan met : "Beoordeling van ......"

Dit werkt goed daar niet van maar ik blijf een foutmelding houden bij de eerste regel:

Notice: Trying to get property of non-object in /home/*****/domains/*****/public_html/recensie.inc.php on line 46


De regel is:

<?php
if(($rowRecensie->naam_recensie) == ""){
?>


Hoe los ik dit op?





<?php
//Laat de naam zien boven aan de pagina
	$queryRecensie = "SELECT naam_recensie FROM recensies WHERE naam_recensie = '".$_GET['recensie_van']."'";
	$resultRecensie = mysql_query($queryRecensie) or die ("Sorry maar ik kan de recensies niet weergeven");
	$rowRecensie = mysql_fetch_object($resultRecensie);
//Als de naam nog niet voorkomt in de database:	
	if(($rowRecensie->naam_recensie) == ""){
	echo '<h1>Schrijf uw beoordeling</h1>';
	}else{ //Als hij wel voorkomt laat de naam dan zien:
		echo '<h1>Beoordeling van '.$rowRecensie->naam_recensie.'</h1>';
		}
?>


Blijkbaar is $rowRecensie niet een object, maar iets anders. mysql_fetch_object kan 2 waarden geven: een object, of 'false'. Waarschijnlijk geeft hij die laatste terug.

Waneer geeft mysql_fetch_object 'false' terug? Waneer er geen rows meer in PHP's cache (de ruimte waar het antwoord van mysql_query heen gaat) zitten. Waarschijnlijk is je query fout (nee, want dan zou hij die die() pakken) of levert de query geen resultaten op.
Ja daar zit wel iets in.

Ik vraag een rij op die nog helemaal niet bestaat in de database.
Maar daarom moet er ook komen te staan dat je nog een beoordeling moet schrijven.

Bestaat dit niet?

if(not exist ($rowRecensies->naam_recensies)){
Ik denk dat je de functie [php]mysql_num_rows[/php] zoekt ^^,

..of je kan natuurlijk kijken of $rowRecensie gelijk is aan false:

<?php
    if($rowRecensie) {
        echo 'Ik besta: ';
        print_r($rowRecensie);
    } else {
        echo 'niets gevonden';
    }
?>
<?php
if(!$rowRecensies->naam_recensies){
?>
[edit]Zie het correcte antwoord van Jelmer hierboven[/edit]
Blanche, juist dat levert 'Notice: Trying to get property of non-object' op... $rowRecensies is immers geen object in dat geval.

Maar dat wist jij ook wel, je was gewoon te snel met antwoorden en had alleen die laatste post van Elsy gelezen :P
Heb je helemaal gelijk in Jelmer :)
@Blanche

Deze had ik ook al geprobeerd :)

@Jelmer

Deze werkt, de foutmelding is weg.
Ik weet niet waar het volgende voor dient:

print_r($rowRecensie);

EDIT:
Als ik nu de recensies bekijk zie ik deze regel:

stdClass Object ( [naam_recensie] => Camera )

Dus waarschijnlijk moet die print_r regel weer weg?
Die print_r was puur als nja hoe zeg je dat, grapje, opvulling.
@Jonathan: ik zou het eerder controle noemen. Om te zien hoe het object eruit ziet ;)
Oké, ik snap het, bedankt.

Reageren