Prob de débutant avec mysql_num_rows

Résolu/Fermé
nicoheaven - 9 nov. 2010 à 18:42
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 - 12 nov. 2010 à 22:30
Bonjour,
je débute sur php et je tente de créer un moteur de recherche pour mon site (sans succès...). J'ai suivi un tutoriel, l'ai modifié à ma sauce (la source du problème surement :). Je demande à compter les réponses positives à une recherche par la fonction mysql_num_rows et elle renvoie une erreur de type:
Warning: mysql_num_rows() expects parameter 1 to be resource, object given

Merci d'avance de votre aide!

Voici mon script:
$requete = htmlspecialchars($_POST['requete']);
$query = $bdd->query("SELECT * FROM fiches WHERE titre LIKE '%$requete%' ORDER BY id DESC") or die (mysql_error());
$nb_resultats = mysql_num_rows($query);

if($nb_resultats != 0)
{
?>
<h3>Résultats de votre recherche.</h3>
<p>Nous avons trouvé <?php echo $nb_resultats;
if($nb_resultats>1)?> {<?php echo "résultats";?> } else { <?phpecho "résultat";?> }
dans notre base de données. Voici les fiches que nous avons trouvées :<br/>
<br/>
<?php
while ($donnees = $query->fetch())
{
?>
<?php echo $donnees['titre']; ?>
<?php echo $donnees['contenu']; ?><br/>
<?php
}
$query->closeCursor();
?>
<br/>
<br/>
<a href="annuaire.php">Faire une nouvelle recherche</a></p>
<?php
}
else
{
?>
<h3>Pas de résultats</h3>
<p>Nous n'avons trouvé aucun résultat pour votre requête "<?php echo $_POST['requete']; ?>". <a href="annuaire.php">Réessayez</a> avec autre chose.</p>
<?php
}


6 réponses

Merci lunebebe56 pour l'info mais je n'ai besoin que d'un code simple pour ce que je veux faire et c'est un site qui restera en local.
Mon code est vraiment simple et je pense qu'il n'y a qu'un bug et c'est ce mysql_num_rows qui me le pose...
0
Bonjour,
Modifie ton script comme ceci :
$query = $bdd->query("SELECT * FROM fiches WHERE titre LIKE '%$requete%' ORDER BY id DESC") or die (print_r($bdd->errorInfo())); // Permet d'afficher une erreur compréhensible dans la requête
$nb_resultats = $query->num_rows();

-------------------------------------------------------------------------------------------------------------------------------------------------
<* Suivez-moi sur FesseS-BouC *>
0
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 339
11 nov. 2010 à 16:36
<?php
$requete = htmlspecialchars($_POST['requete']);
$query = $bdd->query("SELECT * FROM fiches WHERE titre LIKE '%$requete%' ORDER BY id DESC") or die(mysql_error());
if($nb_resultats = $query->num_rows)
{
	echo("<h3>Résultats de votre recherche.</h3>\n<p>Nous avons trouvé $nb_resultats résultat", ($nb_resultats>1?"s":""), " dans notre base de données. Voici les fiches que nous avons trouvées :<br/><br/>");
	while ($donnees = $query->fetch())
		echo("<b>{$donnees['titre']}</b> &nbsp;&nbsp;{$donnees['contenu']}<br/>");
	$query->closeCursor();
	echo("<br/><br/><a href=\"annuaire.php\">Faire une nouvelle recherche</a></p>");
}
else
{
	echo("<h3>Pas de résultats</h3><p>Nous n'avons trouvé aucun résultat pour votre requête <i>{$_POST['requete']}</i> <a href=\"annuaire.php\">Réessayez</a> avec autre chose.</p>");
} 
?>
0
Merci de votre aide, mon moteur de recherche focntionne... mais le code final est légèrement différent. Tu m'as fait réfléchir sur la fonction. Je me suis aperçu que comme je travaille sous PDO, mysql_num_rows n'était pas une fonction valide, il faut utiliser rowCount! Mission accomplie!
A bientôt pour de nouvelles découvertes!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Comment puis-je mettre que mon problème est résolu sur ce forum?
0
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 339
12 nov. 2010 à 22:30
C'est fait (lien à côté du nom du sujet)
0
lunebebe56 Messages postés 181 Date d'inscription jeudi 9 septembre 2010 Statut Membre Dernière intervention 21 août 2013 10
9 nov. 2010 à 18:46
-1