PHP Comment savoir le nombre de reponse MYSQL

spylller Messages postés 441 Statut Membre -  
spylller Messages postés 441 Statut Membre -
Bonjour,
Je voudrais savoir comment compter le nombre de reponse il y a à une requete.
Par exemple que je fasse :
SELECT * FROM utilisateurs WHERE departement = :departement
Et qu'en retour j'ai 8 par exemple.
(j'avais pensé a une "for each" et incrementation à chaque fois mais c'est lourd)
Merci !
--
Have a nice day

4 réponses

  1. crapoulou Messages postés 28002 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 046
     
    Bonjour,

    Tu peux utiliser COUNT :
    https://sql.sh/fonctions/agregation/count

    SELECT COUNT (*) FROM utilisateurs WHERE departement = :departement
    0
    1. spylller Messages postés 441 Statut Membre 28
       
      Merci beaucoup !
      Et je retrouve le nombre comme ca : ?
      $req = $bdd->prepare('SELECT COUNT * FROM comptes WHERE id = :id');
      $req->execute(array('id'=>$id));
      $nombre = $req->fetch();
      0
      1. crapoulou Messages postés 28002 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 046 > spylller Messages postés 441 Statut Membre
         
        Essaye mais ça ne me semble pas mal.
        Je n'ai pas toutes les subtilités du PHP en tête :-)
        0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour
    Vu que tu es en pdo... tu fais ta requête normale en sélect *
    Puis tu fais un fetchAll
    Et un count (php) dessus
    0
    1. crapoulou Messages postés 28002 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 046
       
      Salut Jordane,

      Merci, je te laisse la suite :-)

      ++
      0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    La solution proposée par Crapoulou fonctionne aussi. (après ça dépend si tu veux uniquement connaitre le nombre.. ou si tu veux aussi pouvoir afficher les lignes concernées)

    les codes seraient :
    Avec le nombre uniquement :

    
    $sql = "SELECT COUNT(*) as NB 
                  FROM comptes 
                  WHERE id = :id ";
    
    $datas = array(':id'=>$id) ;
    
    try{
      $req = $bdd->prepare($sql);
      $req->execute($datas);
    }catch(Exception $e){
      echo "Erreur ! " . $e->getMessage();
    }
    
     // Première solution en utilisant un fetch
      $row = $req->fetch();
      $nb = $row['NB'];
    
     // deuxième solution utilisant directement un fetchColumn
      $nb = $req->fetchColumn()
    


    Deuxième possibilité ...avoir le nombre de résultats... + les résultats
    $sql = "SELECT *
                  FROM comptes 
                  WHERE id = :id ";
    
    $datas = array(':id'=>$id) ;
    
    try{
      $req = $bdd->prepare($sql);
      $req->execute($datas);
    }catch(Exception $e){
      echo "Erreur ! " . $e->getMessage();
    }
    
    //on stocke les resultats dans un array
    $resultats = $req->fetchAll();
    
    // Nombre de résultats
    $nb = count($resultats);
    
    
    //affichage des résultats :
    if(!empty($resultats)){
      foreach($resultats as $R){
        print_r($R);
      }
    }
    
    0
  4. spylller Messages postés 441 Statut Membre 28
     
    D'accord, merci beaucoup, j'ai plus qu'à appliqué =D
    0