Partage
  • Partager sur Facebook
  • Partager sur Twitter

PhP-MySql - Compter le nombre d'enregistrements

Table/Champ/ nbre commençant pas A, B, C, etc.

Sujet résolu
    19 octobre 2018 à 19:08:29

    Bonjour,

    Après avoir galérer un bon moment, je me tourne vers vous avant de perdre tous mes cheveux.

    J'ai une table "villes" et des champs de type "id", "nom ville", "code postal", etc.
    Je souhaiterais simplement pouvoir calculer le nombre de villes commençant par chaque lettre de l'alphabet, sans devoir effectuer 26 requêtes. (exemple de résultat : A=>6, B=>12, etc).
    Je ne suis pas assez calé ni en PhP, ni en MySql (PDO) pour réaliser cela tout seul.  Quelqu'un pourrait-il m'aider?

    Un grand merci d'avance!
    :)

    • Partager sur Facebook
    • Partager sur Twitter
      19 octobre 2018 à 19:17:01

      Bonjour,

      en php je te laisse découvrir le tuto pour exécuter une requête et afficher le résultat ;) en SQL, la requête pour avoir cela utilise SUBSTR :

      SELECT substr(nom_ville, 1, 1) AS lettre, count(*) AS nombre
      FROM table
      GROUP BY substr(nom_ville, 1, 1);



      • Partager sur Facebook
      • Partager sur Twitter
        19 octobre 2018 à 22:11:39

        Génial!  La requête fonctionne parfaitement!  Exactement ce que je souhaitais!

        Maintenant, je galère (à nouveau :/)  car le résultat de ma requête est un tableau dans un tableau.  Et je ne parviens pas à extraire ce que souhaite.  Un simple tableau (A -> 5, B -> 7,...)

        Pour le moment j'ai ceci :
        Array ( [0] => Array ( [lettre] => # [0] => # [nombre] => 1 [1] => 1 ) [1] => Array ( [lettre] => ' [0] => ' [nombre] => 2 [1] => 2 ) [2] => Array ( [lettre] => - [0] => - [nombre] => 1 [1] => 1 ) [3] => Array ( [lettre] => A [0] => A [nombre] => 116 [1] => 116 ) [4] => Array ( [lettre] => B [0] => B [nombre] => 274 [1] => 274 ) [5] => Array ( [lettre] => C [0] => C [nombre] => 93 [1] => 93 ) [6] => Array ( [lettre] => D [0] => D [nombre] => 79 [1] => 79 ) [7] => Array ( [lettre] => E [0] => E [nombre] => 100 [1] => 100 ) [8] => Array ( [lettre] => F [0] => F [nombre] => 93 [1] => 93 ) [9] => Array ( [lettre] => G [0] => G [nombre] => 126 [1] => 126 ) [10] => Array ( [lettre] => H [0] => H [nombre] => 226 [1] => 226 ) [11] => Array ( [lettre] => I [0] => I [nombre] => 20 [1] => 20 ) [12] => Array ( [lettre] => J [0] => J [nombre] => 33 [1] => 33 ) [13] => Array ( [lettre] => K [0] => K [nombre] => 82 [1] => 82 ) [14] => Array ( [lettre] => L [0] => L [nombre] => 184 [1] => 184 ) [15] => Array ( [lettre] => M [0] => M [nombre] => 232 [1] => 232 ) [16] => Array ( [lettre] => N [0] => N [nombre] => 85 [1] => 85 ) [17] => Array ( [lettre] => O [0] => O [nombre] => 121 [1] => 121 ) [18] => Array ( [lettre] => P [0] => P [nombre] => 84 [1] => 84 ) [19] => Array ( [lettre] => Q [0] => Q [nombre] => 9 [1] => 9 ) [20] => Array ( [lettre] => R [0] => R [nombre] => 118 [1] => 118 ) [21] => Array ( [lettre] => S [0] => S [nombre] => 234 [1] => 234 ) [22] => Array ( [lettre] => T [0] => T [nombre] => 94 [1] => 94 ) [23] => Array ( [lettre] => U [0] => U [nombre] => 8 [1] => 8 ) [24] => Array ( [lettre] => V [0] => V [nombre] => 129 [1] => 129 ) [25] => Array ( [lettre] => W [0] => W [nombre] => 157 [1] => 157 ) [26] => Array ( [lettre] => X [0] => X [nombre] => 3 [1] => 3 ) [27] => Array ( [lettre] => Y [0] => Y [nombre] => 3 [1] => 3 ) [28] => Array ( [lettre] => Z [0] => Z [nombre] => 49 [1] => 49 ) ) 

        Avec la requête suivante :
        $requete = "SELECT substr(nom_ville, 1, 1) AS lettre, count(*) AS nombre FROM villes GROUP BY substr(nom_ville, 1, 1)";
        
        $resultat = $connexion->query($requete);
        $montableau = $resultat->fetchAll();
        print_r($montableau);

        Je ne vois plus clair...  :(

        -
        Edité par Ludwig v. Beeth 19 octobre 2018 à 22:17:04

        • Partager sur Facebook
        • Partager sur Twitter
          20 octobre 2018 à 11:02:39

          Salut,

          Avec la fonction fetchAll(), PDO te renverra un tableau, il ne te reste alors plus qu'à le manipuler pour en extraire tes données. Tu devrais regarder la partie tableaux et boucles du cours PHP.

          Le plus dur étant de récupérer les données comme tu les veux en renseignant la bonne requête SQL, il est relativement simple d'afficher tes données par la suite, à l'aide d'une simple boucle :

          foreach ($montableau as $donnee)
          {
            echo 'Il y a ' . $donnee['nombre'] . ' villes commençant par la lettre ' . $donnee['lettre'];
          }



          -
          Edité par Linon 20 octobre 2018 à 11:27:18

          • Partager sur Facebook
          • Partager sur Twitter
            7 novembre 2018 à 11:16:28

            Super!  Cela fonctionne parfaitement! :)
            Grand merci à vous et désolé pour la réponse tardive!

            :honte:

            • Partager sur Facebook
            • Partager sur Twitter

            PhP-MySql - Compter le nombre d'enregistrements

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown