PHP Comment savoir le nombre de reponse MYSQL

spylller Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   -  
spylller Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

4 réponses

crapoulou Messages postés 28195 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 013
 
Bonjour,

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

SELECT COUNT (*) FROM utilisateurs WHERE departement = :departement
0
spylller Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   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
crapoulou Messages postés 28195 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 013 > spylller Messages postés 395 Date d'inscription   Statut Membre Dernière intervention  
 
Essaye mais ça ne me semble pas mal.
Je n'ai pas toutes les subtilités du PHP en tête :-)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
crapoulou Messages postés 28195 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 013
 
Salut Jordane,

Merci, je te laisse la suite :-)

++
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
spylller Messages postés 395 Date d'inscription   Statut Membre Dernière intervention   28
 
D'accord, merci beaucoup, j'ai plus qu'à appliqué =D
0