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 les resultats d'une requetes malgré un LIMIT. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut Compter les resultats d'une requetes malgré un LIMIT.
    Bonjour,

    J'ai une requete avec un systeme de gestion page par page donc j'utilise la "clause" LIMIT dans cette requete.

    Cependant, je souhaiterais pouvoir compter le nombre de resultats de cette requete sans tenir compte du limit. C'est possble ?

    Sinon suis-je obliger de refaire une 2eme fois la meme requete avec un count ?

    MERCI de votre aide.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Non ce n'est pas nécessaire de faire une deuxième requête : la fonction mysql_num_rows peut également le faire. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $query = mysql_query('SELECT * FROM ma_table WHERE ... LIMIT ...;');
    // Nombre de résultats
    $nb = mysql_num_rows($query);
    echo "Il y a $nb résultats";
    // Traitement des lignes
    while ($array = mysql_fetch_assoc($query)) {
        // ...
    }
    Elle existe aussi sous le nom de mysqli_num_rows pour les utilisateurs de l'extension mysqli.


    Julp.

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    J'ai cru avoir testé cela, mais ca m'affiche le nombre qu'il y a avait dans le LIMIT.
    Je vais retester.

    Merci

  4. #4
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    Voila ma requete :

    SELECT id_artist FROM artistes WHERE auth = 1 AND nb_image > 0 ORDER BY vus DESC LIMIT 0,10

    le 0,10 evolue (affichage page par page...) : 0,10 puis 10,20, puis 20,30 ...

    mysql_num_rows() me renvoie toujours 10

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    J'avais compris le contraire (cf même requête dans votre post). Il vous faut effectivement une requête supplémentaire faisant appel à la fonction d'aggrégation COUNT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $query = mysql_query('SELECT COUNT(*) FROM ma_table;');
    $array = mysql_fetch_row($query);
    $nb = $array[0];
    echo "Il y a $nb résultats";
     
    $query = mysql_query("SELECT * FROM ma_table WHERE ... LIMIT ...;");
    while ($array = mysql_fetch_array($query)) {
        // ...
    }
    C'est guère plus lourd ainsi.


    Julp.

  6. #6
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    we dommage ...

    Je vais donc copier-coller le WHERE... et faire un beau count...

    C'est bete, que le limit ecrase le truc

  7. #7
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Salut

    J'avais déjà posté un script à ce sujet....à adapter selon ses besoins.
    Peut-être pourrais-tu t'en inspirer ?
    C'est hyper simple à tester dés lors que tu as installé la table.

    A toi de voir

    ==>>Pagination

  8. #8
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    merci mais c'est bon, le principe de la pagination je l'ai, c'etait juste le comptage du total. Je voulais eviter d'avir 2 requetes, c'est tout

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

Discussions similaires

  1. modifier les resultats d'une requete SQL
    Par billyboy dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/05/2006, 06h22
  2. [MySQL] mettre les resultats d'une requete dans un select
    Par Ludo75 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 18/01/2006, 16h19
  3. afficher les resultats d'une requete mysql sur 3 colonnes
    Par harlock59 dans le forum Requêtes
    Réponses: 7
    Dernier message: 24/12/2005, 14h38
  4. [debutant]compter les resultat d'une requete
    Par christophebmx dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/02/2005, 17h11
  5. [VB.NET] Compter les enregistrements d'une requete
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/10/2004, 18h46

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