IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Probleme avec mysql_num_rows


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Par défaut Probleme avec mysql_num_rows
    Bonjour,
    En utilisant le code qui suit j'obtiens un Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource...

    J'ai essayé beaucoup de solution mais là je suis vraiment bloqué,
    Est-ce que quelqu'un pourrait m'expliquer la cause de ce message ?

    Merci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    $debut = ($page - 1) * $limit; // start (requete mysql)
    
    // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
    $requete=mysql_db_query("$sql_bdd","select count(*) from recherches where (produit like $phrase order by produit",$db_link);
    $nb_total=mysql_result($requete,0,"count(*)");
    
    $requete=mysql_db_query("$sql_bdd","select * from recherches where (produit like $phrase limit $debut,$limit",$db_link);
    $num=mysql_num_rows($requete);
    
    
    // DEFINITION DU MESSAGE A AFFICHER
    if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$motSaisi</b>...";} /* chang  la variable appel*/
    else if ($mot=="") 	{echo "";}
    else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
    	
    // AFFICHAGE DES RESULTATS
    else {
    
    echo "<b>$nb_total</b> r&eacute;ponse";
    if ($nb_total>1) {echo "s";}
    echo "<br>$texte";
    
    $i=0;
    while($i<$num)
    	{
    	$produit=mysql_result($requete,$i,"produit");
    	{echo "<br><br>$produit<br><br> \n";
    }
    	$i++;

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    mysql_db_query() ne s'utilise plus.

    Il manque des guillemets a ton LIKE et faire un ORDER sur un COUNT unique ne sert a rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("select count(*) from recherches where produit like '%$phrase%'");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je suis d'accord sur la solution, mais j'ai quand même une question pour toi Sabotage : pourquoi la fonction qui exécute la requête ne renvoie pas un warning pour dire que la requête a foiré ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    mysql_query() ne renvoit pas les erreurs, il faut utiliser mysql_error() pour les voir.
    A mon avis, c'est pour eviter que des informations sur la base de données soient affichées ; bien qu'en production on n'affiche normalement jamais les erreurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Par défaut
    Merci Sabotage pour ta réponse,

    J'ai fait les modifications mais maintenant en plus du message d'erreur précedent, j'ai un nouveau message d'erreur:
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource ...
    ce qui correspond à la ligne:
    $nb_total=mysql_result($requete,0,"count(*)");
    J'ai peut-être une piste de solution : Quand je modifie la première ligne qui est:
    $debut = ($page - 1) * $limit;
    pour la ligne:
    $debut =$page*$limit;
    en utilisant le code de mon premier message, je n'ai plus aucun message d'erreur mais alors ma pagination en bas des pages est décalée d'une page, ce qui ne règle rien. Par contre, ça ne change rien si j'utilises le code ci-dessous.

    Je vous remet le code en incluant les modifications de Sabotage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $debut = ($page - 1) * $limit; // start (requete mysql)
     
    // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
    $requete=mysql_query("select count(*) from recherches where produit like '%$phrase%'");
    $nb_total=mysql_result($requete,0,"count(*)");
     
    $requete=mysql_query("select * from recherches where produit like '%$phrase%' limit '%$debut%','%$limit%'");
    $num=mysql_num_rows($requete);
     
     
    // DEFINITION DU MESSAGE A AFFICHER
    if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$motSaisi</b>...";} /* chang  la variable appel*/
    else if ($mot=="") 	{echo "";}
    else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
     
    // AFFICHAGE DES RESULTATS
    else {
     
    echo "<b>$nb_total</b> r&eacute;ponse";
    if ($nb_total>1) {echo "s";}
    echo "<br>$texte";
     
    $i=0;
    while($i<$num)
    	{
    	$produit=mysql_result($requete,$i,"produit");
    	{echo "<br><br>$produit<br><br> \n";
    }
    	$i++;
    Est-ce que quelqu'un à une idée ?

    Merci!

    P.S.J'utilise Easyphp 3.0.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Toutes les explications pour bien debuguer :
    http://php.developpez.com/faq/?page=...ysql_ressource
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Probleme de comparaison avec mysql_num_rows
    Par terry90 dans le forum MySQL
    Réponses: 7
    Dernier message: 22/07/2009, 20h25
  2. probleme avec mysql_num_rows
    Par mawy18 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 29/05/2009, 12h30
  3. [SGBD] Problème avec mysql_num_rows
    Par jpduches dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 16/10/2005, 20h12
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo