Als ik op contact klik onder aan de pagina krijg ik rechts in de kolom de volgende foutmeldingen:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/members/paid/k/i/kijk-vergelijk.nl/htdocs/www/index.php on line 312

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /data/members/paid/k/i/kijk-vergelijk.nl/htdocs/www/index.php on line 321

----------->code uit de foutmelding

<?php
if (mysql_num_rows ($result2) == 0)
{
echo "<tr><td align='center'>$row8->catBanner</td></tr>";

}
else
echo "<tr><td align='center' class='linkTitel'><b>Subcategorie van $row8->cat_naam</b></td></tr>";


while ($row2 = mysql_fetch_object($result2))
{

echo "<tr><td><img src='pijlWit.jpg' border='0' align='left'><a href='?cat_id=$cat_id&sub_id=$row2->sub_id'>&nbsp;$row2->sub_naam</a></td></tr>";

}
$query9 = "SELECT * FROM subcategorie WHERE cat_id = '$cat_id' ORDER BY sub_naam ";
$result9 = mysql_query($query9) or die ("Sorry maar ik kan de subcategorie banner niet weergeven");
if ($row9 = mysql_fetch_object($result9))
{
echo "<tr><td height='150' valign='middle' align='center'>$row9->subBanner</td></tr>";
}
echo "</table>";
?>

---------------------->

Uitleg bij code:
Als je in het menu klikt en een item heeft géén subcategorie laat dan een banner zien.
Anders ga verder met de code en laat de subcategorieën in de rechter kolom zien.

Het vreemde is dat de andere pagina's die ik op de zelfde manier include het wel gewoon doen.
bv. link toevoegen, partners enz.

Dit is de website
doe even een check of er wel een result is,

<?php

if ($result9 && mysql_num_rows($result9) >= 1)
{


}

?>

edit: ook mooier om je vars buiten je echo te houden of je querys

dus

WHERE var='".$var."' AND etcetc
Ik heb het script nu zo aangepast en krijg alleen nog de bovenste foutmelding:

<?php
echo "<table width='100%' >";

if (mysql_num_rows ($result2) == 0)
{
echo "<tr><td align='center'>$row8->catBanner</td></tr>";

}
else
if ($result9 && mysql_num_rows($result9) >= 1)
{
echo "<tr><td align='center' class='linkTitel'><b>Subcategorie van $row8->cat_naam</b></td></tr>";


while ($row2 = mysql_fetch_object($result2))
{

echo "<tr><td><img src='pijlWit.jpg' border='0' align='left'><a href='?cat_id=$cat_id&sub_id=$row2->sub_id'>&nbsp;$row2->sub_naam</a></td></tr>";

}

$query9 = "SELECT * FROM subcategorie WHERE cat_id = '$cat_id' ORDER BY sub_naam ";
$result9 = mysql_query($query9) or die ("Sorry maar ik kan de subcategorie banner niet weergeven");
if ($row9 = mysql_fetch_object($result9))
{
echo "<tr><td height='150' valign='middle' align='center'>$row9->subBanner</td></tr>";
}
}
echo "</table>";
?>
Je doet volgens mij eerst de if() met de mysql_num_rows($result9) terwijl pas verderop de query wordt uitgevoerd met $result9 = mysql_query($query9)
Waarom doen de andere linken het wel en alleen het contact formulier het niet?
Het zijn allemaal pagina's die ik include.


<?php
//Query voor submenu oa. home, nieuwsbrief enz
if (isset ($_GET['id']))
{
$submenu_id = $_GET['id'];
$query = "SELECT * FROM submenu WHERE id = '$id' ";
$result = mysql_query($query) or die ("Sorry maar ik kan het submenu niet weergeven");
while ($row = mysql_fetch_object($result))
{
include($row->url);
}
// einde query submenu
?>
Wie kan er nog helpen?
Zo te zien aan de foutmelding, zit het probleem in de $result2. Blijkbaar is daar iets mis mee. Aangezien je daar geen code van hebt gepost, kan ik daar geen goede uitspraak over doen.

In de mysql_query()-regels die je wel hebt gepost, doe je steeds een "or die". Dat zou inhouden dat wanneer er iets mis gaat met de query, het script ermee stopt. Als je dat consequent doet, is het if-statement van Wes niet nodig. Ik heb trouwens net als SanThe mijn bedenkingen over de plaats waar je het if-statement hebt neergezet. Ik zou je dan ook adviseren om die regel weer weg te halen, want het enige wat je er op dit moment mee bereikt, is dat de rest van je code nooit(!) zal worden uitgevoerd.

Op dit moment kan ik de volgende oorzaken bedenken van je probleem:

1) Je hebt geen $result2 = mysql_query(blabla) in je code staan. Op het moment dat je $result2 gaat gebruiken (regel 312) krijg je dus een foutmelding

2) Je hebt een mooie query en dus een goede $result2, maar je overschrijft de waarde van $result2 voor je hem gebruikt in mysql_num_rows()

3) Je hebt een query die $result2 een waarde geeft, maar de query mislukt en je gebruikt geen "or die" om fouten mee af te vangen
Deze code staat helemaal boven aan in het script dus misschien moet ik het overnieuw plaatsen maar dan lager?

het hele script

<?php
//Query voor submenu oa. home, nieuwsbrief enz
if (isset ($_GET['id']))
{
$submenu_id = $_GET['id'];
$query = "SELECT * FROM submenu WHERE id = '$id' ";
$result = mysql_query($query) or die ("Sorry maar ik kan het submenu niet weergeven");
while ($row = mysql_fetch_object($result))
{
include($row->url);
}
// einde query submenu
}
else
{
//Als je op de pagina komt verschijnt de welkomstekst
if( !isset($_GET['cat_id']))
{
echo "<table class='intro'>";
echo "<tr>";
echo "<td><h1>Welkom op kijk-vergelijk.nl</h1></td></tr>";
echo "<tr>";
echo "<td class='introtekst'>U vergelijkt toch ook graag eerst de producten voordat u iets koopt?<br>Kijk & Vergelijk heeft speciaal voor u vele aanbieders geselecteerd zodat u eenvoudig een vergelijk kunt maken voordat u tot een aankoop overgaat.<br><br></td></tr>";
echo "<tr><td align='center'><script language='javascript' type='text/javascript' src='http://rotator.tradetracker.nl/877/js/4659/cp'></script></td></tr>";
echo "</table><br>";

}
else
{
//als er op een link in het menu geklikt is verschijnen de linken

$subcategorie_id = $_GET['cat_id'];
if (isset($_GET['letter9']) && $_GET['letter9'] != ""){
$letter9=$_GET['letter9'];
}
else {
$letter9="";
}
$query2 = "SELECT * FROM subcategorie WHERE cat_id = '$cat_id' ORDER BY sub_naam ";
$result2 = mysql_query($query2) or die ("Sorry maar ik kan de subcategorie niet weergeven");


//begin navigatie setup
$iPP = 10; // items per pagina
$noL = 7; // aantal links (default 7 / only required when you want an other number of links / use odd numbers)
$pn = ( !isset($_GET['pn']) || empty($_GET['pn']) ? 1 : $_GET['pn'] ); // pagina nummer (niet wijzigen!)
$offset = ($pn-1)*$iPP.",".$iPP; // SQL LIMIT offset (niet wijzigen!)
$navArr = explode("(|)",navGEN("SELECT count(*) FROM linken WHERE cat_id = '$cat_id' AND link_naam LIKE '".$_GET['letter9']."%'",$pn,$iPP,$noL)); // navGEN output (just change the SQL query
// === END navGEN setup




$query4 = ("SELECT * FROM linken WHERE cat_id = '$cat_id' AND link_naam LIKE '".$letter9."%' ORDER BY link_naam LIMIT ".$offset);
$result4 = mysql_query($query4) or die ("Sorry maar ik kan de linken niet weergeven");
//en worden de linken weergegeven




//Maak het alfabet voor de linken zonder subcategorie
if (isset ($_GET['cat_id']))
{
$query9=mysql_query("SELECT * FROM linken WHERE cat_id='$cat_id' ORDER BY link_naam");

while ($gegevens9=mysql_fetch_array($query9)){
// eerste letter als array maken
$alfabet9[]=substr($gegevens9['link_naam'],0,1);
}
$alfabet9=array_unique($alfabet9);
if (in_array($_GET['letter9'],$alfabet9)){
// wanneer goed
$letter9=$_GET['letter9'];
}
else{
// wanneer fout
$letter9="";
}

//einde alfabet maken voor linken zonder subcategorie

if (!isset($_GET['sub_id']))
{


//Begin paginanummering boven aan de pagina
echo"<table width='90%' border='0' cellpadding='0' cellspacing='0'><tr><td class='navigatie'>".$navArr[0]."</td><td class='navigatie' align='center'>".$navArr[1]."</td></tr></table>";
// normal query to generate output ('LIMIT ".$offset' must be in the query!)
//Einde pagina nummering


//Query 7 geeft een titel weer boven de linken van de categorie&euml;n
$query7 = "SELECT * FROM categorie WHERE cat_id = '$cat_id'";
$result7 = mysql_query($query7) or die ("Sorry maar ik kan de categorie&euml;n niet weergeven");
$row7 = mysql_fetch_object($result7);
//einde query 7

//Hier worden de linken weergegeven van de categorie
echo "<table class='tabelLinken' border='0' cellpadding='2' cellspacing='2' width='90%' align='center'>";
echo "<tr><td class='linkTitel' ><b>$row7->cat_naam</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Of zoek op alfabet: ";

//hier staat de code voor het weergeven van het alfabet bij de linken zonder subcategorie
foreach($alfabet9 as $letters9)
{
if ($letter9 == $letters9)
{
echo "<img src='http://www.kijk-vergelijk.nl/pijl.jpg'; 'border='0'><b>".$letters9."<img src='http://www.kijk-vergelijk.nl/pijlReverse.jpg'; 'border='0'></b>";
}
else
{
echo '<a href="?cat_id='.$_GET['cat_id'].'&letter9='.$letters9.'">'.$letters9.'</a>-';
}
}
//einde weergeven alfabet


echo "</td></tr>";

echo "<tr>";
echo "<td>";
echo "<table cellpadding='2' cellspacing='2' width='100%' >";

while ($row4 = mysql_fetch_object($result4))
{
if($row4->link_tekst)
{
echo "<tr><td class='titelLink' valign='middle'>$row4->link_naam</td><td class='linkTekst' align='left' valign='top'>$row4->link_tekst</td></tr>";
}
else
{
echo "<tr><td class='titelLink' valign='middle'>$row4->link_naam</td><td class='linkTekst' align='left' valign='top'>$row4->link_javascript</td></tr>";
}
}
echo "</tr></table>\n";
echo "</td>\n" ;
echo "</tr></table>";
//Einde weergeven linken van categorie (query7)


//Begin pagina nummering onderaan de pagina
echo"<table width='90%' border='0' cellpadding='0' cellspacing='0'><tr><td class='navigatie'>".$navArr[0]."</td><td class='navigatie' align='center'>".$navArr[1]."</td></tr></table>";
//Einde pagina nummering
}
}
}
}




//Als er op een subcategorie geklikt is verschijnen de winkels en kun je ook kiezen om op alfabet te kijken

if (isset ($_GET['sub_id']))
{
$query=mysql_query("SELECT * FROM linken WHERE sub_id='$sub_id' ORDER BY link_naam");

while ($gegevens=mysql_fetch_array($query)){
// eerste letter als array maken
$alfabet[]=substr($gegevens['link_naam'],0,1);
}
$alfabet=array_unique($alfabet);
if (in_array($_GET['letter'],$alfabet)){
// wanneer goed
$letter=$_GET['letter'];
}
else{
// wanneer fout
$letter="";
}

$query3 = ("SELECT * FROM linken WHERE sub_id = '$sub_id' AND link_naam LIKE '".$_GET['letter']."%' ORDER BY link_naam LIMIT ".$offset);
$result3 = mysql_query($query3) or die ("Sorry maar ik kan de subcategorie linken niet weergeven");



//Begin van navigatie boven de linken
$navArr = explode("(|)",navGEN("SELECT count(*) FROM linken WHERE sub_id = '$sub_id' AND link_naam LIKE '".$_GET['letter']."%'",$pn,$iPP,$noL)); // navGEN output (just change the SQL query
echo"<table width='90%' border='0' cellpadding='0' cellspacing='0'><tr><td class='navigatie'>".$navArr[0]."</td><td class='navigatie' align='center'>".$navArr[1]."</td></tr></table>";
//einde navigatie boven de linken

//Query 6 geeft een titel weer boven de linken van de subcategorie&euml;n
$query6 = "SELECT * FROM subcategorie WHERE sub_id = '$sub_id'";
$result6 = mysql_query($query6) or die ("Sorry maar ik kan de categorie&euml;n niet weergeven");
$row6 = mysql_fetch_object($result6);
echo "<table cellpadding='2' cellspacing='2' class='tabelLinken' border='0' width='90%' align='center'>";
echo "<tr><td class='linkTitel' ><b>$row6->sub_naam</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Of zoek op alfabet: ";
//einde query 6


//hier staat de code voor het weergeven van het alfabet
foreach($alfabet as $letters){

if ($letter == $letters){
echo "<img src='http://www.kijk-vergelijk.nl/pijl.jpg'; 'border='0'><b>".$letters."</b><img src='http://www.kijk-vergelijk.nl/pijlReverse.jpg'; 'border='0'>";
}
else{
echo '<a href="?cat_id='.$_GET['cat_id'].'&sub_id='.$_GET['sub_id'].'&letter='.$letters.'">'.$letters.'</a>-';
}
}

echo "</td></tr>";

echo "<tr>";
//einde weergeven alfabet


//Query 3 geeft de linken weer van de subcategorie
echo "<td>";
echo "<table cellpadding='2' cellspacing='2' width='100%' ><tr>";



while ($row3 = mysql_fetch_object($result3))
{
if($row3->link_tekst)
{
echo "<tr><td class='titelLink' valign='middle'>$row3->link_naam</td><td class='linkTekst' align='left' valign='top'>$row3->link_tekst</td></tr>";
}
else
{
echo "<tr><td class='titelLink' valign='middle'>$row3->link_naam</td><td class='linkTekst' align='left' valign='top'>$row3->link_javascript</td></tr>";
}
}
echo "</tr></table>\n";
echo "</td>\n" ;
echo "</tr></table>";
//einde query 3


//Begin pagina nummering onderaan de pagina
echo"<table width='90%' border='0' cellpadding='0' cellspacing='0'><tr><td class='navigatie'>".$navArr[0]."</td><td class='navigatie' align='center'>".$navArr[1]."</td></tr></table>";
//Einde pagina nummering
}

?></td>
<td width="160" align="left" valign="top" bgcolor="#FFFFFF" class="stippel"><?php


//Query 8 geeft de naam weer boven de subcategorie
$query8 = "SELECT * FROM categorie WHERE cat_id = '$cat_id'";
$result8 = mysql_query($query8) or die ("Sorry maar ik kan de categorie&euml;n niet weergeven");
$row8 = mysql_fetch_object($result8);
//einde query 8

echo "<table width='100%' >";

if (mysql_num_rows ($result2) == 0)
{
echo "<tr><td align='center'>$row8->catBanner</td></tr>";

}
else
echo "<tr><td align='center' class='linkTitel'><b>Subcategorie van $row8->cat_naam</b></td></tr>";


while ($row2 = mysql_fetch_object($result2))
{

echo "<tr><td><img src='pijlWit.jpg' border='0' align='left'><a href='?cat_id=$cat_id&sub_id=$row2->sub_id'>&nbsp;$row2->sub_naam</a></td></tr>";

}
$query9 = "SELECT * FROM subcategorie WHERE cat_id = '$cat_id' ORDER BY sub_naam ";
$result9 = mysql_query($query9) or die ("Sorry maar ik kan de subcategorie banner niet weergeven");
if ($row9 = mysql_fetch_object($result9))
{
echo "<tr><td height='150' valign='middle' align='center'>$row9->subBanner</td></tr>";
}
echo "</table>";




//einde query ?>
In stukken code van dit formaat vind ik het zelf altijd handiger om code die bij elkaar hoort zoveel mogelijk bij elkaar te houden. Ik zou die code van query2 dus vlak voor die mysql_num_rows($result2) plaatsen.

Dat heeft trouwens niet alleen met het overzicht te maken. Die query2 wordt uitgevoerd in een if-then constructie, en de mysql_num_rows() wordt ver daarbuiten pas uitgevoerd. Je hebt dus geen zekerheid dat query2 is uitgevoerd op het moment dat je die $result2 gaat gebruiken. Als je die code bij elkaar houdt, heb je dat probleem niet.

In dit geval vermoed ik, dat wanneer je op contact klikt, je cat_id niet wordt geset. De query2 wordt dan niet uitgevoerd, en dat geeft de foutmelding op mysql_num_rows().
@Willem vp

Je had helemaal gelijk, het lag te ver uit elkaar.
Ik heb er maar een query10 van gemaakt en het erboven geplaatst.

Het werkt nu goed.....bedankt voor jullie hulp :)

<?php
//Query 10 plaatst een banner in de rechter kolom als er geen subcategorie is
//en anders geeft hij de subcategorie weer met een kleine banner er onder
$query10 = "SELECT * FROM subcategorie WHERE cat_id = '$cat_id' ORDER BY sub_naam ";
$result10 = mysql_query($query10) or die ("Sorry maar ik kan de subcategorie niet weergeven");

if (mysql_num_rows ($result10) == 0)
{
echo "<tr><td align='center'>$row8->catBanner</td></tr>";

}
else
echo "<tr><td align='center' class='linkTitel'><b>Subcategorie van $row8->cat_naam</b></td></tr>";


while ($row10 = mysql_fetch_object($result10))
{

echo "<tr><td><img src='pijlWit.jpg' border='0' align='left'><a href='?cat_id=$cat_id&sub_id=$row10->sub_id'>&nbsp;$row10->sub_naam</a></td></tr>";

}
$query9 = "SELECT * FROM subcategorie WHERE cat_id = '$cat_id' ORDER BY sub_naam ";
$result9 = mysql_query($query9) or die ("Sorry maar ik kan de subcategorie banner niet weergeven");
if ($row9 = mysql_fetch_object($result9))
{
echo "<tr><td height='150' valign='middle' align='center'>$row9->subBanner</td></tr>";
}
echo "</table>";
?>

Reageren