raph Posté 13 Novembre 2006 Posté 13 Novembre 2006 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)
Message populaire. Neoxy Posté 14 Novembre 2006 Message populaire. Posté 14 Novembre 2006 (modifié) 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é 14 Novembre 2006 par Neoxy 1
baboon Posté 14 Novembre 2006 Posté 14 Novembre 2006 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....
raph Posté 14 Novembre 2006 Auteur Posté 14 Novembre 2006 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. 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
dpmix Posté 14 Novembre 2006 Posté 14 Novembre 2006 salut ! Ajoute ça sur la ligne 87 de ton script : echo mysql_error(); Et poste le résultat ici @+
raph Posté 14 Novembre 2006 Auteur Posté 14 Novembre 2006 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 Raph
iNCiTE Web Posté 14 Novembre 2006 Posté 14 Novembre 2006 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 ...
raph Posté 16 Novembre 2006 Auteur Posté 16 Novembre 2006 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
iyfniky Posté 31 Août 2012 Posté 31 Août 2012 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
Aenoa Posté 31 Août 2012 Posté 31 Août 2012 petit hors sujet, mais je te félicite pour ce déterrage de topic de quasiment 6 ans
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant