PHP Comment savoir le nombre de reponse MYSQL

Fermé
spylller Messages postés 395 Date d'inscription dimanche 1 mars 2015 Statut Membre Dernière intervention 11 juillet 2019 - 3 nov. 2016 à 16:50
spylller Messages postés 395 Date d'inscription dimanche 1 mars 2015 Statut Membre Dernière intervention 11 juillet 2019 - 5 nov. 2016 à 20:17
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 !

4 réponses

crapoulou Messages postés 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
3 nov. 2016 à 18:27
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 dimanche 1 mars 2015 Statut Membre Dernière intervention 11 juillet 2019 28
Modifié par spylller le 4/11/2016 à 17:04
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 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990 > spylller Messages postés 395 Date d'inscription dimanche 1 mars 2015 Statut Membre Dernière intervention 11 juillet 2019
4 nov. 2016 à 18:56
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 nov. 2016 à 21:00
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 28158 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 16 avril 2024 7 990
4 nov. 2016 à 21:44
Salut Jordane,

Merci, je te laisse la suite :-)

++
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 nov. 2016 à 11:06
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 dimanche 1 mars 2015 Statut Membre Dernière intervention 11 juillet 2019 28
5 nov. 2016 à 20:17
D'accord, merci beaucoup, j'ai plus qu'à appliqué =D
0