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 lignes d'une requête SELECT


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut Compter le nombre de lignes d'une requête SELECT
    C'est déjà traité là => Compter le nombre de lignes d'une requête SELECT

    Citation Envoyé par http://be2.php.net/manual/fr/function.PDOStatement-rowCount.php
    «Pour la plupart des bases de données, PDOStatement->rowCount() ne retourne pas le nombre de lignes affectées par une requête SELECT. À la place, utilisez PDO->query() pour faire une requête SELECT COUNT(*), puis utilisez PDOStatement->fetchColumn() pour récupérer le nombre de lignes retournées. Votre application peut ainsi effectuer la bonne action.»
    Mais, personnellement, je ne sais pas comment faire (sauf avec 2 requêtes ) pour compter combien une requêtes SELECT reverra de ligne?

    par exemple, comment faire pour savoir combien de ligne reverra:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, titre, contenu FROM `articles` WHERE etat='1'
    J'ai testé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $stmt = $db->query("SELECT id, titre, contenu FROM `articles` WHERE etat='1'");
    echo $stmt->rowCount(); // affichera 0, base de donnée MySQL 5
    for ($i = 0; $i < 5; $i++) { // j'aimerai me débarrasé du 5 pour le faire varié dans le cas ou le nombre d'entrées est inférieur
      $articles[] = $stmt->fetch(PDO:FETCH_ASSOC); // $articles contiendra 5 entrées
    }

    Voilà, donc je cherche à savoir comment avec $stmt je peux connaitre le nombre de ligne qu'il reverra sans devoir faire une autre requêtes avec COUNT(*).

    Je vous remerci d'avance pour votre aide, personnellement, j'avoue que là, je sèche comme une ..... sur un truc fondamentale et qui doit vraiment être tout bête.

  2. #2
    Membre régulier Avatar de randimby
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Points : 72
    Points
    72
    Par défaut
    Au lieu de faire avec une boucle for, fais avec une boucle do.

    Pour arrêter la boucle, teste la valeur de retour de $stms->fetch()

    du genre (en supposant $stmt->fetch() retourne false en cas d'inexistence d'une autre ligne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $i = 0;
    $articles = array();
    do
    {
     $one_row = $stmt->fetch(PDO:FETCH_ASSOC);
     if ($one_row) 
     {
      $articles[] = $one_row;
     }
    }
    while ($one_row);
     
    echo count($articles);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    ou meme plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // $cnx est la connexion a ta base
    $cnx->prepare("SELECT [une colonne de a table] FROM [ta table]");
    $cnx->execute();
    $row = $cnx->fetchAll();	
    echo (count($row));
    Voili voila

  4. #4
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 018
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 018
    Points : 1 776
    Points
    1 776
    Par défaut
    Je connais tres peu PDO. N'y a t'il pas d'équivalent à mysql_num_rows ?

    $handle = mysql_query ("SELECT [une colonne de a table] FROM [ta table]");
    echo mysql_num_rows ($handle);

Discussions similaires

  1. Requête pour compter le nombre de lignes d'une procédure stockée?
    Par toutounesan dans le forum Développement
    Réponses: 13
    Dernier message: 06/06/2012, 12h59
  2. [AC-2007] Compter le nombre de lignes d'une requête
    Par marco_t dans le forum IHM
    Réponses: 2
    Dernier message: 13/10/2010, 14h37
  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. 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
  5. Réponses: 4
    Dernier message: 05/05/2006, 23h52

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