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 :

Connaitre le nombre de "rows" dans une requête de type SELECT ? [Fait] [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut Connaitre le nombre de "rows" dans une requête de type SELECT ?
    Bonjour,

    J'utilise un CMS comme "couche interface" pour accéder à ma base de données où j'ai une requête du type (en PHP) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $database->setQuery(
        "SELECT nation_id, vc_clubname, vc_clubcity, vc_zipcode, ......... ".
        "FROM gcx_main ".
        "WHERE region_id=30 ".
        "ORDER BY nation_id DESC, vc_clubcity DESC");
     
    $rows = $database->loadObjectList();
    Avant d'afficher les données, je veux restreindre le nombre de "records" en fonction du type d'utilsateur, ce qui implique que je dois connaitre le nombre total.

    1) A part faire une 2eme requête identique juste avant en remplaçant "SELECT" par "COUNT (*)", existe-il une commande en PHP qui pourrait agir sur le variable "rows" pour savoir le nombre de records, ou bien une façon en MySQL qui permettrait d'ajouter "COUNT(*)" quelque part dans la requête ?

    2) Si la fonction PHP existe, comment faire pour tronquer "rows" après 'n' records ? (similaire à "LIMIT n" en MySQL).

    En vous remerciant par avance pour toute aide.
    David.

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 110
    Par défaut
    En php tu as la fonction mysql_num_rows (voir ici le tutoriel http://fr3.php.net/manual/fr/functio...l-num-rows.php)
    qui te permet de récupérer le nombre de lignes contenues dans le résultat d'une requête (il faut donc que tu mettes ta variable $rows en paramètre).

    Sinon je ne vois pas...

    Pour tronquer ta variable rows après je ne sais pas...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    Merci pour la réponse.

    J'ai essayé la fonction, mais ça m'a donné une erreur :
    mysql_num_rows(): supplied argument is not a valid MySQL result resource

    J'ai regardé la fonction loadObjectList() du CMS, et il utilise le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		$array = array();
    		while ($row = mysql_fetch_object( $cur )) {
    			if ($key) {
    				$array[$row->$key] = $row;
    			} else {
    				$array[] = $row;
    			}
    		}
    		mysql_free_result( $cur );
    		return $array;
    Donc, j'imagine que mon "rows" est juste un array d'objets et donc le nombre d'objets = nombre de rows, c'est ça ? Si oui, comment compter les objets dans un array ?

    Merci encore.

  4. #4
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 110
    Par défaut
    Essaye la fonction array_count_values() (tutoriel)
    Ou bien tout simplement la fonction count() (tutoriel)

  5. #5
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    passe tes requêtes comme dans ma signature, et lis le tuto associé.

  6. #6
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 110
    Par défaut
    Pour tronquer le tableau je ne sais pas trop comment tu veux t'y prendre mais tu as la fonction array_slice qui te permet de récupérer N éléments d'un tableau à partir d'un élément numéro X

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    Ça marche ! Merci beaucoup.

    Pour info :

    J'ai mis la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nbrecords = count($rows);
    pour compter le nombre de records.
    (La commande "array_count_values()" génère une erreur, disant qu'elle ne traitent que des intégers et chaines).


    Pour tronquer les résultats, j'ai mis la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rows = array_slice($rows, 0, 10);
    pour garder que les 10 premiers records.

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

Discussions similaires

  1. [AC-2007] Calculer le nombre de jours d'extraction dans une requête access.
    Par shakapouet dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 29/04/2014, 11h15
  2. Sorte de if dans une requete de type select
    Par shaun_the_sheep dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/04/2010, 17h55

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