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 :

Comment compter le nombre d'éléments groupés par (GROUP BY)


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    Par défaut Comment compter le nombre d'éléments groupés par (GROUP BY)
    Bonjour,

    Je fais un sélect qui utilise GROUP BY

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT fd_city_manif, fd_date_end, fd_nom_manif,id, fd_canton_manif 
    FROM manifestations 
    WHERE fd_date_end >= "'.date("Y-m-d").'" 
    AND fd_canton_manif LIKE "'.$key.'" 
    GROUP BY fd_city_manif 
    ORDER BY fd_city_manif ASC
    C'est utile car si j'ai trois ville "Chancy" et 5 "Bernex", il m'affichera 1x Chancy et 1x Bernex.

    Simplement, devant chancy, j'aimerais bien afficher un nombre "3" qui correspond au 3 enregistrement de Chancy, et devant "Bernex" , le nombre 5, car il y a 5 enregistrement Concernant "Bernex"

    Vu que j'utilise GROUP BY,

    il y a pas un moyen de compter le nom d'élément groupé?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(fd_city_manif), ....
    non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    Par défaut
    Ben avant même d'essayé, je ne pense pas.

    Il ne va pas me compter toutes les villes?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT COUNT(fd_city_manif)
    alors que dans fd_city_manif, j'ai 3 Chancy, 5 Bernex, 7 Avully et j'aimerais avoir le nombre par ville, soit par ville groupée par GROUP BY

    Ou es-ce que je me prononce trop vite?

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Ouh là ! Quelle curieuse utilisation du GROUP BY... Sur un autre SGBD que MySQL, une telle requête se serait soldée par une erreur.
    La question est donc : que souhaitez-vous faire exactement ?
    Pour pouvoir vous aider, il nous faudrait des éléments un peu plus clairs : schéma de la table manifestation, quelques données en exemple, ce que vous souhaiter obtenir comme résultat...

    Parce que là, c'est difficile de savoir ce que vous voulez avec une telle syntaxe SQL

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    Par défaut
    Ok ben alors j'explique plus en profondeur.
    J'ai une table qui contient plusieur field

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    fd_canton_manif
    fd_city_manif
    fd_nom_manif
    fd_date
    fd_etencore
    Dans une colonne de mon site, je souhiate faire une requete mySQL de maniere que tout ceci s'affiche ainsi, sachant que le chiffre entre parentèse correspond au nom de manifestation enregistré pour le village (city):

    Geneve
    (4) city 1
    (2) city 2
    (1) city 3

    Vaud
    (7) city 1
    (1) city 2

    Valais
    (1) city 1
    Ci dessus, sous geneve, j'ai 4 enregistrement pour le city 1. Et grace a GROUP BY, city 1 s'affiche 1 x.

    NB: J'ai essayé avec SELECT DISTINCT fd_city_manif, mais ca marche pouas


    DEUXIEME PROBLEME,
    Le résulata s'affiche en colonne. Pour encore mieux compliqué la chose, quand , par exemple, 10 village (city) s'affichent, le onzième et les suivant s'affiche dans une deuxième colonne.
    (je traduis city, le mot village, car j'ai appeler fd_city_manif, le leiu des manifestations, qui peut etre une ville comme un village ]
    Pour encore meiux compliqué la chose, quand ceci sera règlé

    Pour faire les colonnes, ca c'est pas compliqué, mais comment faire pour que ma requette s'affiche dans un autre <div> ou <td>

    Pour plus d'info voila comment est mon code:

    Fonction faisant la requete :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    function Extract_location_from_db($key,$value){
    	global $tb_canton;
    	global $i;
    	$nb="";
     
    	$sql = 'SELECT DISTINCT fd_canton_manif FROM manifestations WHERE fd_date_end >= "'.date("Y-m-d").'" AND fd_canton_manif LIKE "'.$key.'" ORDER BY fd_canton_manif ASC';
    	$query = mysql_query($sql)or die(mysql_error());
     
    	while($data = mysql_fetch_assoc($query))
    	{
    		// on affiche les informations de l'enregistrement en cours
    		echo '<p><b><a href="index.php?manifestations-et-loisirs-sur='.Remove_accent_minuscule($tb_canton[$data['fd_canton_manif']]).'" title="Toutes les manifestations et loisirs sur '.utf8_encode($tb_canton[$data['fd_canton_manif']]).'">'.utf8_encode($tb_canton[$data['fd_canton_manif']]).'</a></b></p>';
    	}
     
    	$sql = 'SELECT fd_city_manif,fd_date_end,fd_nom_manif,id,fd_canton_manif FROM manifestations WHERE fd_date_end >= "'.date("Y-m-d").'" AND fd_canton_manif LIKE "'.$key.'" GROUP BY fd_city_manif ORDER BY fd_city_manif ASC';
    	$query = mysql_query($sql)or die(mysql_error());
    	//$nb = mysql_num_rows($query);
     
    	while($data = mysql_fetch_assoc($query)){		
    			echo '- <a title="'.stripslashes($data['fd_nom_manif']).'" href="index.php?manifestations-et-loisirs-a='.Remove_accent_minuscule($data['fd_city_manif']).'&sur='.Remove_accent_minuscule($data['fd_canton_manif']).'">'.$data['fd_city_manif'].'</a><br>';		
    	}
     
    }

    J'ai un tableau ou je liste quelque canton, je fais appelle a ce tableau, plus loin
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tb_canton = array(
    	'fr'=>'Fribourg',
    	'ge'=>'Genève',
    	'ne'=>'Neuchâtel',
    	'vd'=>'Vaud',
    	'vs'=>'Valais'
    );

    Et voci comment je l'ance ma requette MySQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach($tb_canton as $key => $value){
     
    	Extract_location_from_db($key,$value);
     
    }
    Dans ma base de donné, mais canton sont enregistré avec les codes:
    ge,vd,vs,fr,ne,

    $key est donc utilisé dans ma requete mySQL pour faire le tri. A cahque passe dans la boucle foreach(), il fait une requete a ma base

    Voilà j'espere avoir été précis

    Milles mercis

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ben avant même d'essayé, je ne pense pas.
    Temps pour tester < Temps pour me repondre que tu n'as pas testé
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    Par défaut
    Ben ouias en effet, j'aurais di essayé,
    je l'ai fait mais le problème ce que maintenant je n'ai que le nombre de resultat mais plus le nom de ville.

    Donc avant j'avais
    -Geneve (5 enregistrement)
    -Vaud (3 enregistrement)
    -Valais (2 enregistrement)


    maintenant j'ai
    -5
    -3
    -2

    Alors que je souhaite
    -5 Geneve
    -3 Vaud
    -2 Valais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql = 'SELECT COUNT(fd_city_manif) fd_city_manif,fd_date_end,fd_nom_manif,id,fd_canton_manif FROM manifestations WHERE fd_date_end >= "'.date("Y-m-d").'" AND fd_canton_manif LIKE "'.$key.'" GROUP BY fd_city_manif ORDER BY fd_city_manif ASC';
    	$query = mysql_query($sql)or die(mysql_error());
    	//$nb = mysql_num_rows($query);
     
    	while($data = mysql_fetch_assoc($query)){		
    			echo $data['fd_city_manif'].'- <a title="'.stripslashes($data['fd_nom_manif']).'" href="index.php?manifestations-et-loisirs-a='.Remove_accent_minuscule($data['fd_city_manif']).'&sur='.Remove_accent_minuscule($data['fd_canton_manif']).'">'.$data['fd_city_manif'].'</a><br>';		
    	}

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/11/2012, 12h51
  2. Compter le nombre d'élément dans un tableau
    Par cryptorchild dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 13h01
  3. Réponses: 6
    Dernier message: 11/02/2005, 06h41
  4. Compter le nombre d'enreg retournés par un DBExtract
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 02/11/2004, 14h15
  5. Comment compter le nombre de lettre identique ?
    Par divableue dans le forum ASP
    Réponses: 3
    Dernier message: 07/11/2003, 15h01

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