Aller au contenu
raph

pb requete Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Noter ce sujet :

Recommended Posts

Bonjour,

Dans la page d'un moteur de recherche (la page se nomme mod_recherche) d'un script annuaire dont voici le code:

<?
if ($off==""){$off=0;}
$off2=$off*10;
$recherche=chop($recherche);
$recherche=trim($recherche);
$mot=explode(" ",$recherche);
$taille=count($mot);
if (($taille>0) and ($recherche<>"")){?>


<?
$i=0;$requete="select * from frac_moteur where (";
$taille--;
while ($i<$taille)
{
$requete=$requete." (commentaire like '%$mot[$i]%' or commentaire like '%$mot[$i]%') or";
$i++;
}
$requete=$requete." (commentaire like '%$mot[$i]%' or commentaire like '%$mot[$i]%')";

$sql=$requete.") and (id_webmaster='$s_webmaster' and valid=0) order by id_moteur";
$res=mysql_query($sql);
$num = mysql_num_rows($res);
$i=0;$liste="";
while ($i < $num)
{
if ($i>0){$liste=$liste.",".mysql_result($res,$i,"id_moteur");}
else {$liste=mysql_result($res,$i,"id_moteur");}
$i++;}

$liste2=$liste;
if ($liste<>"")
{
$sql0="select * from frac_moteur where id_moteur in (".$liste.") and id_webmaster='$s_webmaster' and valid=0 order by id_moteur desc";
$sql1=$sql0." limit $off2,10";
$res=mysql_query($sql1);
$num = mysql_num_rows($res);
}
else
{$num=0;}
$i=0;
while ($i < $num)
{
$site=mysql_result($res,$i,"site");
$id_moteur=mysql_result($res,$i,"id_moteur");
$categoriepr=mysql_result($res,$i,"categoriepr");
$commentaire=mysql_result($res,$i,"commentaire");
$titre=mysql_result($res,$i,"titre");
$langue=mysql_result($res,$i,"langue");
$date=mysql_result($res,$i,"date");
$date=explode("-",$date);
if ($date[1]=="01"){$mois="Janvier";}
if ($date[1]=="02"){$mois="Février";}
if ($date[1]=="03"){$mois="Mars";}
if ($date[1]=="04"){$mois="Avril";}
if ($date[1]=="05"){$mois="Mai";}
if ($date[1]=="06"){$mois="Juin";}
if ($date[1]=="07"){$mois="Juillet";}
if ($date[1]=="08"){$mois="Aout";}
if ($date[1]=="09"){$mois="Septembre";}
if ($date[1]=="10"){$mois="Octobre";}
if ($date[1]=="11"){$mois="Novembre";}
if ($date[1]=="12"){$mois="Décembre";}

?>

<? if ($categoriepr=="site"){?>
<?include("mod_affiche_site.php");?>
<?;} else {?>
<?include("mod_affiche_flux.php");?>
<?;}?>

<?$i++;}?>


<? if ($num==0){$num=(10*($off+1));} else
{
$q2="select count(*) as num from moteur where id_moteur in (".$liste2.") and id_webmaster='$s_webmaster' and valid=0";
$r2=mysql_query($q2);
$n = mysql_num_rows($r2);
$j=0;
while ($j < $n)
{
$num=mysql_result($r2,$j,"num");
$j++;
}

?>
<CENTER>
<TABLE>
<TR>
<!-- traitement de l'affichage des offset (code identique àcelui du haut -->
<?
# decoupage page
$tranche=10;
# $nb: nombre d'offset total de tranche
$num_image=$num;
$nb=$num_image/$tranche;
$tampon=(int)($nb);
if ($tampon==$nb){$tampon=$tampon-1;}
echo" ";

# gauche
# fleche dizaine
if ($dz>0) {$tmp=$dz-1;$offt=($dz-1)*10+9?><TD><IMG SRC="gd.gif" WIDTH="28" HEIGHT="31" BORDER="0"></TD><? ; }?>
<?
#fleche unite
if ($off>0)
{if ($off==$dz*10)
{$tmp=$dz-1;$offt=($dz-1)*10+9?><TD><IMG SRC="fg.gif" WIDTH="28" HEIGHT="31" BORDER="0"></TD><? ;
}
else
{?><TD><IMG SRC="fg.gif" WIDTH="28" HEIGHT="31" BORDER="0"></TD><?;}
}
# gauche (fin)
?>

<?
$debut=$dz*10;

$a=$num_image-($tranche*10*($dz+1));
$d=(int)($num_image/$tranche);

# test utile pour dessous
if ($d*$tranche<>$num_image){$e=$d+1;} else {$e=$d;};

if ($a>0){$cste=10;} else {$cste=$e-10*$dz;}

$fin=($dz*10)+$cste;

# affichage des pages de l'offset en cours
for ($i=$debut;$i<$fin;$i++)
{
$j=$i+1;

if ($i<>$off)
{
?><TD><a href="recherche.php?kw=<?echo $kw?>&dz=<? echo $dz ?>&off=<?echo $i?>&tranche=<? echo $tranche ?>"><IMG SRC="hulk4.gif" BORDER="0" WIDTH="28" HEIGHT="31"></a></TD>
<? ; } else { ?><TD><IMG SRC="hulk5.gif" BORDER="0" WIDTH="28" HEIGHT="31"></TD><?;} ?>
<?
}
# affichage des pages de l'offset en cours (fin)
?>

<?
#droite
#fleche unite
if ($off<$tampon)
{if ($off==$dz*10+9)
{
$tmp=$dz+1;$offd=($dz+1)*10;?><TD><IMG SRC="fd.gif" WIDTH="28" HEIGHT="31" BORDER="0"></TD><? ;
}
else
{?><TD><IMG SRC="fd.gif" WIDTH="28" HEIGHT="31" BORDER="0"></TD><?;}
}?>
<?#fleche dizaine
if ($a>0){$tmp=$dz+1;$offd=($dz+1)*10;?><TD><IMG SRC="dd.gif" WIDTH="28" HEIGHT="31" BORDER="0"></TD><? ; }
# droite (fin)
#decoupage page (fin)
?>
<!-- traitement de l'affichage des offset -->
</TR>

<TR>
<!-- traitement de l'affichage des offset (code identique àcelui du haut -->
<?

# decoupage page
$tranche=10;
# $nb: nombre d'offset total de tranche
$num_image=$num;
$nb=$num_image/$tranche;
$tampon=(int)($nb);
if ($tampon==$nb){$tampon=$tampon-1;}
echo" ";

# gauche
# fleche dizaine
if ($dz>0) {$tmp=$dz-1;$offt=($dz-1)*10+9?><TD ALIGN="CENTER"><a href="recherche.php?kw=<?echo $kw?>&dz=<? echo $tmp ?>&tranche=<? echo $tranche ?>&off=<? echo $offt?>"><IMG SRC="gd2.gif" WIDTH="15" HEIGHT="12" BORDER="0"></a></TD><? ; }?>
<?
#fleche unite
if ($off>0)
{if ($off==$dz*10)
{$tmp=$dz-1;$offt=($dz-1)*10+9?><TD ALIGN="CENTER"><a href="recherche.php?kw=<?echo $kw?>&dz=<? echo $tmp ?>&tranche=<? echo $tranche ?>&off=<? echo $offt?>"><IMG SRC="fg2.gif" WIDTH="15" HEIGHT="12" BORDER="0"></a></TD><? ;
}
else
{?><TD ALIGN="CENTER"><a href="recherche.php?kw=<?echo $kw?>&dz=<? echo $dz ?>&tranche=<? echo $tranche ?>&off=<? echo ($off-1)?>"><IMG SRC="fg2.gif" WIDTH="15" HEIGHT="12" BORDER="0"></a></TD><?;}
}
# gauche (fin)
?>

<?
$debut=$dz*10;

$a=$num_image-($tranche*10*($dz+1));
$d=(int)($num_image/$tranche);

# test utile pour dessous
if ($d*$tranche<>$num_image){$e=$d+1;} else {$e=$d;};

if ($a>0){$cste=10;} else {$cste=$e-10*$dz;}

$fin=($dz*10)+$cste;

# affichage des pages de l'offset en cours
for ($i=$debut;$i<$fin;$i++)
{
$j=$i+1;

if ($i<>$off)
{
?><TD ALIGN="CENTER"><a href="recherche.php?kw=<?echo $kw?>&dz=<? echo $dz ?>&off=<?echo $i?>&tranche=<? echo $tranche ?>"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="2" color="#767676"><B><? echo"$j"; ?></B></FONT></a></TD>
<? ; } else { ?><TD ALIGN="CENTER"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="2" color="#000000"><B><?echo $j?></B></FONT></TD><?;} ?>
<?
}
# affichage des pages de l'offset en cours (fin)
?>

<?
#droite
#fleche unite
if ($off<$tampon)
{if ($off==$dz*10+9)
{
$tmp=$dz+1;$offd=($dz+1)*10;?><TD ALIGN="CENTER"><a href="recherche.php?kw=<?echo $kw?>&dz=<? echo $tmp ?>&tranche=<? echo $tranche ?>&off=<? echo $offd ?>"><IMG SRC="fd2.gif" WIDTH="15" HEIGHT="12" BORDER="0"></a></TD><? ;
}
else
{?><TD ALIGN="CENTER"><a href="recherche.php?kw=<?echo $kw?>&dz=<? echo $dz ?>&tranche=<? echo $tranche ?>&off=<? echo ($off+1)?>"><IMG SRC="fd2.gif" WIDTH="15" HEIGHT="12" BORDER="0"></a></TD><?;}
}?>
<?#fleche dizaine
if ($a>0){$tmp=$dz+1;$offd=($dz+1)*10;?><TD ALIGN="CENTER"><a href="recherche.php?kw=<?echo $kw?>&dz=<? echo $tmp ?>&tranche=<? echo $tranche ?>&off=<? echo $offd ?>"><IMG SRC="dd2.gif" WIDTH="15" HEIGHT="12" BORDER="0"></a></TD><? ; }
# droite (fin)
#decoupage page (fin)

}
?>
</td>
</tr>
</table>
<?;}?>

Qaund je tape une requete dans le moteur de recherche, il affiche le ou les site(s) correspondant mais en dessous me marque "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in mod_recherche.php on line 80"

Quand je tape une requete qui ne correspond à aucun site, cela n'affiche pas ça !!

Pourquoi ? que dois-je corriger ? Attention je n'y connais rien du touten php :( alors soyez indulgent et clairs dans vos réponses ! ;)

Merci

Raph

[Edit captain_torche]Merci d'utiliser les balises CODE(pour les codes courts) et CODEBOX(pour les codes longs)

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

Tu devrais voir le code, notamment la partie qui execute ta requete et qui t'affiche ce fameux : mysql_num_rows().

En effet, ce genre d'erreur est généré lorsque il ya une erreur sur la requete et que mysql_num_rows() ne permet pas de determiner le nombre de tuples retourné.

Ajoute une gestion d'erreur lors de l'execution d'une requete :

Dans tes lignes mysql_query($rqt) or die(mysql_error());

Cela permettra de mieux cerner ton problèmes.

Modifié par Neoxy
  • Vote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Pour completer ce que dis Neoxy, tu peux aussi faire afficher la requête qui est executée..

echo "$sql";

puis copie et colle la requête dans phpmyadmin par exemple et regarde ce que ça donne....

Partager ce message


Lien à poster
Partager sur d’autres sites

bonjour..

euh merci à vous les gars mais je n'y connais rien en php et je sais pas ou ajouter ce que vous m'avez dit. :unsure:

Le script d'annuaire c'est fractalum et sur des sites utilisant fractalum cette erreur n'apparait pas !!!

Pourriez-vous plus m'aider ?

Merci

Raph

Partager ce message


Lien à poster
Partager sur d’autres sites

Voilà je l'ai mis sur la ligne 87 et cela me dit:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /mod_recherche.php on line 80

Table 'essai.moteur' doesn't exist

Kesako ?

Merci :thumbsup:

Raph

Partager ce message


Lien à poster
Partager sur d’autres sites

Et bien voilà : mySQL t'informe que dans la base de données "essai", la table "moteur" n'existe pas...

Vérifies donc si elle existe et si ça s'écrit bien comme ça (genre avec un "s" à la fin ou autre).

Le warning juste avant t'indique que le tableau de résultats est invalide, et pour cause ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci !

Je viens de me rendre compte qu'une erreur dans le script de base... ligne 87 il etait ecrit "from moteur" alors qu'il devait etre ecrit "from frac_moteur"

Merci beaucoup pour votre aide !

Raph

Partager ce message


Lien à poster
Partager sur d’autres sites

Cette réponse m'a beaucoup aidée

Salut,

Tu devrais voir le code, notamment la partie qui execute ta requete et qui t'affiche ce fameux : mysql_num_rows().

En effet, ce genre d'erreur est généré lorsque il ya une erreur sur la requete et que mysql_num_rows() ne permet pas de determiner le nombre de tuples retourné.

Ajoute une gestion d'erreur lors de l'execution d'une requete :

Dans tes lignes mysql_query($rqt) or die(mysql_error());

Cela permettra de mieux cerner ton problèmes.

Raison pour laquelle je me suis inscrit en même temps sur ce site, en tant que passionné du web, afin d'apprendre et partager aussi.

Merci encore une fois de plus

Partager ce message


Lien à poster
Partager sur d’autres sites

petit hors sujet, mais je te félicite pour ce déterrage de topic de quasiment 6 ans thumbup.gif

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×