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 :

Compter le nombre de résultat d'une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Points : 38
    Points
    38
    Par défaut Compter le nombre de résultat d'une requête
    Bonjour,
    Je cherche avoir le nombre de résultat que va retourner cette requête mais je ne sais comment faire. En fesant avec mysql_num_rows(), cela ne fonctionne pas :
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

    Voilà la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     $search_cour = "SELECT * FROM #__peoplebook WHERE ".stripslashes(urldecode($_REQUEST['search']))." AND published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order $limit_str";
      	      $database->setQuery($search_cour);
        	      $srows = $database->loadObjectList();

  2. #2
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
    Ta requête ne c'est pas exécutée. vérifie que tu n'as pas d'erreurs

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Points : 38
    Points
    38
    Par défaut
    Le problème vient d'ici : stripslashes(urldecode($_REQUEST['search']))
    Pourtant quand j'enleve la fonction mysql_num_rows(), il n'y a plus d'erreur sur la requête. Je ne comprends pas.
    Ce n'est pas moi qui est fait la requête, elle était deja existante dans le composant peoplebook de joomla.
    Je cherche juste à savoir combien de résultat cette requête va-t-elle afficher. N'existe-t-il pas un autre moyen pour récupérer le nombre de résultat? ( adapté à LoadObjectList() ? )

  4. #4
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    bjrs,
    et si tu fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_count_values ( $srows  );
    ?

  5. #5
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    En fait, apres avoir jeter un coup d'oeil a l'PAI de joomla, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $database->getNumRows();
    voir

    http://help.joomla.org/content/view/531/60/

    Voilou

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Points : 38
    Points
    38
    Par défaut
    Je ne connaissais pas cette fonction mais apparement ca ne fonctionne pas ..
    Warning: array_count_values() [function.array-count-values]: The argument should be an array :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       $search_cour = "SELECT * FROM #__peoplebook WHERE ".stripslashes(urldecode($_REQUEST['search']))." AND published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order $limit_str";
      	      $database->setQuery($search_cour);
        	      $srows = $database->loadObjectList();
    	      $nb_total = array_count_values ($srows);

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Points : 38
    Points
    38
    Par défaut
    Merci beaucoup Bartrik, cela fonctionne avec $database->getNumRows().
    Cependant j'ai toujours un problème lors de l'affichage de mes pages : quand je fais une recherche, la 1ère page s'affiche correctement et dès que je passe à la page 2 ou plus, cela m'affiche l'annuaire entier à la page 2.
    Comment garder la recherche en mémoire pour toutes les pages ?
    voici le script :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
     
    // affichage multipage
    // récupération du nombre de résultat (variable selon la recherche)
     
          if( !isset($search) || $search == '' ) {
    	   $database->setQuery("SELECT * FROM #__peoplebook WHERE published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order $limit_str");
              $nb_total = $database->getNumRows();
     
     
          }
          else {
          	   if ( !is_array($search) ) {
    	     $database->setQuery($search." AND published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order $limit_str");
    		  if (!$database->query()) {
       			 echo $database->stderr();
        		 return false;
      }
      	     $nb_total = $database->getNumRows();
               }
               else {
           	      foreach ($search as $search_line) {
    	         $database->setQuery($search_line." AND published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order $limit_str");
      	      	 if (!$database->query()) {
        			echo $database->stderr();
       			 	return false;
      }
      	     	$nb_total = $database->getNumRows();
    	      }
               }
          }
     
    $page = isset($_GET['page']) ? $_GET['page'] : ''; 
     
    // Variable nombre d'enreg par page
    $limit=30;
    if($debut==""){$debut=0;}
    $debut=$page*$limit;
     
    // Requete
     
    $limite=mysql_query("$requete limit $debut,$limit");
     
     
    // Affiche le page par page avec ses liens
    if ($page>0) {
    $precedent=$page-1;
    echo "<a href=\"index.php?option=com_peoplebook&Itemid=47&page=$precedent\">Precédent</a>&nbsp;";
    }
     
    $i=0;
    $j=1;
     
    if($nb_total>$limit) {
    while($i<($nb_total/$limit)) {
    if($i!=$page){echo "<a href=\"index.php?option=com_peoplebook&Itemid=47&page=$i\">$j</a> ";}
    else { echo "<b>$j</b>";}
    $i++;$j++;
    }
    }
     
    if($debut+$limit<$nb_total) {
    $suivant=$page+1;
    echo "&nbsp;<a href=\"index.php?option=com_peoplebook&Itemid=47&page=$suivant\">Suivant</a>";
    }
     
    $limit_str = "LIMIT ". $page * $limit .",$limit";
     
    //Affichage résultat
          if( !isset($search) || $search == '' ) {
    	    $database->setQuery("SELECT * FROM #__peoplebook WHERE published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order $limit_str");
                $srows = $database->loadObjectList();
          }
          else {
          	   if ( !is_array($search) ) {
    	      $search_cour = $search." AND published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order $limit_str";
      	      $database->setQuery($search_cour);
        	      $srows = $database->loadObjectList();
               }
               else {
           	      foreach ($search as $search_line) {
    	         $search_cour = $search_line." AND published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order $limit_str";
      	      	 $database->setQuery($search_cour);
        	      	 $srows += $database->loadObjectList();
    	      }
               }
          }

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Points : 38
    Points
    38
    Par défaut
    C'est bon j'ai résolu le problème, il suffisait de récupérer les variables correspondant à la recherche dans l'url des boutons suivant et précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href=\"index.php?sort=active&Itemid=$Itemid&option=$option&func=list&search=$search_url&previous_term=$previous_term_url&previous_field=$previous_field_url&search_status=$search_status_url&search_category=$search_category_url&search_fonction=$search_fonction_url&search_secteur=$search_secteur_url&search_pays=$search_pays_url&search_region=$search_region_url&option=com_peoplebook&Itemid=47&page=$i\">$j</a>
    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Compter le nombre de lignes d'une requête SELECT
    Par juJuv51 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/02/2008, 13h49
  2. [PEAR][DB] Nombre de résultat d'une requête
    Par vannhi dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/07/2007, 11h04
  3. [PDO] Compter le nombre de lignes d'une requête SELECT
    Par WerKa dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/06/2007, 20h57
  4. [MySQL] Tester le nombre de résultats d'une requête
    Par ksper92 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/02/2007, 15h13
  5. Compter le nombre de lignes d'une requête sélection
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/07/2006, 12h11

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