Aller au contenu

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


Sujets conseillés

Posté

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)

Posté

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....

Posté

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

Posté

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

Posté

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 ...

Posté

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

  • 5 years later...
Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...