Erreur: mysql_num_rows()

Signaler
Messages postés
151
Date d'inscription
vendredi 19 août 2005
Statut
Membre
Dernière intervention
21 février 2006
-
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
-
Bonjour à tous!
J'ai une erreur qui ma prend la tete depuis hier!
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\businesstun\rechsimple.php on line 24
<TR>voici mon code:

<? include "connb.php" ?>


<?$maxenreg = "4";
$rech= $HTTP_POST_VARS['rech'];
$critere= $HTTP_POST_VARS['critere'];
if($rech!="")
{if($critere=="societe")
{ $maquery=("select * from entreprise where nom like '%$rech%' And valide='oui' order by dateDerMaj") or die("selection impossible");}

else if($critere=="dirigeant"){
$maquery= ("select * from entreprise where dirigeant like '%$rech%' And valide='oui' order by dateDerMaj" ) or die("selection impossible");} }

$query1 = "$maquery";
$result = mysql_query($query1);
$monnbr = mysql_num_rows($result);
if ($debut)
{
$nb = $debut + $maxenreg - 1;
$mondebut=$debut - 1;
$query2 = "$maquery LIMIT $mondebut,$nb";
$result2 = mysql_query($query2);
}
else
{
$nb=$maxenreg;
$query2 = "$maquery LIMIT 0,$nb";
$result2 = mysql_query($query2);
} ?>
<tr><td>[accueil.php Business Center]&gt;&gt;Resultat de recherche</td></tr>
<?php
$nb = mysql_num_rows($result2);
$i=0;
if($nb!=0)
{ $echec="";
while (($i < $nb) &&($resultat=mysql_fetch_array($result2))){ ?>


// j'affiche le résultat ici
//puis la pagination:

<?
$nbrpage1 = number_format($monnbr / $maxenreg);
$nbrpage = $nbrpage1 + 1;


for ( $i = 1; $i <= $nbrpage; $i++ )
{
$debut = ((($i - 1) * 4) + 1);
echo (": $i :");
}?>

<TD>Je vérifie les champs de ma base, les noms des variables...
J'ai fait des recherches et je ne vois pas l'erreur.
Aidez moi SVP

13 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
salut ... il suffit de lire en anglais ! Tu ne lui donne pas un resultat de MySQL. Alors comment veux-tu qu'elle compte ?



Il y'a une chose à savoir : tout ce qui sotr de mysql_result n'est pas forcément un enregistrement.







$result = mysql_query($query);

if ( ! $result ) exit( ' ERREUR SQL
'.mysql_error() );

$nb = mysql_num_rows($result);
Messages postés
151
Date d'inscription
vendredi 19 août 2005
Statut
Membre
Dernière intervention
21 février 2006

Merci pour ta réponse J_G!
Mais tu peux etre plus explicite? je ne vois pas l'erreur!
J'utilise le meme code dans une autre page et ça ne me pose aucun problème!
Tu peux m'aider à corriger ce code(je suis débutante)!
Merci
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
$result = mysql_query($query1);

$monnbr = mysql_num_rows($result);



NON







$result = mysql_query($query1) or exit( 'ERREUR SQL
'.mysql_error() );

$monnbr = mysql_num_rows($result);



OUI
Messages postés
151
Date d'inscription
vendredi 19 août 2005
Statut
Membre
Dernière intervention
21 février 2006

oui! en fait j'ai essayé ta solution et j'ai le message d'erreur suivant:


ERREUR SQL
Something is wrong in your syntax près de 'LIMIT 4,8' à la ligne 1
qui est ça $query2 = "$maquery LIMIT $mondebut,$nb";(je suppose)!
Donc je vois maintenant ou ça bloque mais je n'arrive pas à corriger.
as tu une idée?
Merci!
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
$result = mysql_query($query1) or exit( 'ERREUR SQL
'.mysql_error().'
REQUETE :
'.$query1 );
Messages postés
151
Date d'inscription
vendredi 19 août 2005
Statut
Membre
Dernière intervention
21 février 2006

Maintenant ça m'affiche un seul enregistrement à la première page(alors qu'il faut 4) et puis lorsque je passe à la deuxième page j'ai l'erreur suivante:
ERREUR SQL
Query est vide
REQUETE :
Messages postés
151
Date d'inscription
vendredi 19 août 2005
Statut
Membre
Dernière intervention
21 février 2006

Voila le code complet:
<? $maxenreg = "4"; ?>
<? include "connb.php" ?>


<?
$rech= $HTTP_POST_VARS['rech'];


$critere= $HTTP_POST_VARS['critere'];
if($rech!="")
{if($critere=="societe")
{ $maquery=("select * from entreprise where nom like '%$rech%' And valide='oui' order by dateDerMaj ") or die("selection impossible");}

else if($critere=="dirigeant"){
$maquery= ("select * from entreprise where dirigeant like '%$rech%' And valide='oui' order by dateDerMaj" ) or die("selection impossible");} }

$query1 = "$maquery"; $result $result mysql_query($query1) or exit( ' ERREUR SQL
'.mysql_error().'
REQUETE :
'.$query1 );
$monnbr = mysql_num_rows($result);
if ($debut)
{
$nb = $debut + $maxenreg - 1;
$mondebut=$debut - 1;
$query2 = "$maquery LIMIT $mondebut,$nb";
$result2 = mysql_query($query2);
}
else
{
$nb=$maxenreg;
$query2 = "$maquery LIMIT 0,$nb";
$result2 = mysql_query($query2);
} ?>
<tr><td>[accueil.php Business Center]&gt;&gt;Resultat de recherche</td></tr>
<?php
$result2 = mysql_query($query2) or exit( ' ERREUR SQL
'.mysql_error().'
REQUETE :
'.$query2 );
$nb = mysql_num_rows($result2);
$i=0;
if($nb!=0)
{ $echec="";
while (($i < $nb) &&($resultat=mysql_fetch_array($result2))){ ?>


"><? echo $resultat['nom'];

?> ,
">Fiche,
">Carte visite,
<?php if(!empty($resultat['pagevitrine']))
{ ?>
" target="_blank">page vitrine, <? } ?>
<?php if(!empty($resultat['web']))
{ ?>
http://<?php echo $resultat["web"] ; ?>" target="_blank">Site web, <? } ?>

<?php
$requete=mysql_query(\"SELECT DISTINCT logo, nentreprise FROM entreprise where valide='oui' ORDER BY RAND() LIMIT 6\");

while($resultat=mysql_fetch_row($requete))
{
echo ', ';

}
?>


<?
$nbrpage1 = number_format($monnbr / $maxenreg);
$nbrpage = $nbrpage1 + 1;


for ( $i = 1; $i <= $nbrpage; $i++ )
{
$debut = ((($i - 1) * 4) + 1);
echo (": $i :");
}


?>

<?php }}
else
{$echec ="Aucune entreprise correspondante à votre critère de recherche";
echo $echec;} ?>



<?php $echec; ?>,

----
Autre recherche, Recherche Avancée

<? mysql_close(); ?>



</html>
merci
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Oui oui, je comprend ton problème...





J'ai même vu l'erreur dans ton code. Mais, dans un but "didactique" je
ne souhaite pas te dire où est cette erreur. Car cela ne t'aiderai en
rien. Tu reviendrais toutes les deux heures avec une nouvelle
erreur du même tonneau.



Il faut :

* que tu lises de bon tutotiaux sur PHP (tape PHP tuto dans moteur de recherche préféré)

* que tu apprenne à débugger (ex : comme je viends de faire avec des
sorties d'erreurs affichant les variables mises en causes, puis tu
remonte à la source... ici : qui rempli $query 2 ?)

* que tu lises toujours la documentation d'une fonction PHP avant de l'utiliser (fr.php.net ou nexen.net)
Messages postés
151
Date d'inscription
vendredi 19 août 2005
Statut
Membre
Dernière intervention
21 février 2006

Bon, Merci pour le fait tu t'interresse à ma question et tu me mène à la solution pas à pas!
Maintenant j'arrive à se débarrasser de :ERREUR SQL
Query est vide
REQUETE :
c'etait plutot une erreur logique: c'etait l'accolade fermante de mon premier if(if($rech!="")
Maintenant dès que je passe à la deuxième page ça ne m'affiche rien; en plus il génère un nombre de page double et qui ne contiennent mon message "echec"
je travaille la dessus mais STP si tu vois l'erreur dis moi!
Mais j'ai beaucoup apprécié ta méthode de répondre à ma question,
merci
Messages postés
151
Date d'inscription
vendredi 19 août 2005
Statut
Membre
Dernière intervention
21 février 2006

Bonjour,
Je suis encore bloquée, je vous prie de voir avec moi ou se pose le problème; le code me semble correcte, il m'affiche la première page avec tous les enregistrement voulus, mais dès que je passe au pages suivantes il m'affiche "aucune entreprise.....".
Je veux savoir s'il ya un problème entre $rech= $HTTP_POST_VARS['rech'];


$critere= $HTTP_POST_VARS['critere'];
et le passage d'une page à l'autre?
Merci de m'aider!
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Pour faire un passage de variable dans l'URL, il faut faire :

xxx.php?variable=valeur

Pour récupérer le contenu d'une variable transmise par URL :
$_GET['variable'] = valeur.

A toi de voir la suite :)
Messages postés
151
Date d'inscription
vendredi 19 août 2005
Statut
Membre
Dernière intervention
21 février 2006

Merci pour votre réponse,
Mais je récupère bien mes variables, et ça reste le meme pb.
Dès que je passe à la deuxième page ça ne m'affiche rien!
Merci de m'aider
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Vérifie tes données avant, puis tes données après (via des echo() ).

Essaye avec les sessions également :/