Comment transformer les résultats d'un group by sur month en texte type janvier,

Résolu
atolldecolombo Messages postés 6 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 10 juillet 2008 - 3 juin 2008 à 17:47
atolldecolombo Messages postés 6 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 10 juillet 2008 - 5 juin 2008 à 17:42
bonjour
voici mon pb : avec une extraction groupé par mois j'obtient le résulat suivant 


REPPARTION,
TOTAL ADHERENTS,
75

désignation |
nbre |
% |


PAR MOIS D'ADHESION
1, 22, 29.3, ----
2, 32, 42.7, ----
3, 13, 17.3, ----
4, 7, 9.3, ----
5, 1, 1.3

je désirerais voir apparaitre le nom des mois au lieu de leurs valeurs
j'ai créé 2 variables d'extraction (afin qu'il n'y est pas de confusion avec un résultat sur le nombre d'adhésion est s'il est compris entre 1 et 12)
 j'ai essayé avec la fonction switch sur la variable $resultadmois sans résultat

ci-dessous écriture actuelle
//calcul reppartion par mois
echo "PAR MOIS D'ADHESION";
$reqadhesion= "select month(datecotisation), count(*),round(((count(*)/$totalres)*100),1)  from renseignements where (month(datecotisation)) group by(month(datecotisation))";
mysql_select_db("membres3e");
$resultad = mysql_query($reqadhesion);$resultadmois mysql_query($reqadhesion);$nbrlig mysql_numrows ($resultad);

echo "\";

echo
 
\"".mysql_result($resultadmois, $lig, 0).",
".mysql_result($resultad, $lig, 1).",  
".mysql_result($resultad, $lig, 2).", \";
echo \"\";
}
echo "
";
echo "
";

si vous connaissé une solution je suis preneur
 merci d'avance

atoll

4 réponses

atolldecolombo Messages postés 6 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 10 juillet 2008
5 juin 2008 à 17:42
merci
le prg fonctionne, j'ai juste remplacé les cotes simples pour le titre par des cotes doubles et inséreé une case vide dans le array pour décalé d'un  cran les mois
voici l'écriture et son aperçu

//calcul reppartion par mois
$aMoisFR = Array(' ','Janvier', 'Fevrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Decembre');
echo " PAR MOIS D'ADHESI0N ";
mysql_select_db('membres3e');
$rQuery = mysql_query('SELECT MONTH(`datecotisation`), COUNT(*), ROUND(((COUNT(*)/'.((int) $totalres).')*100),1) FROM `renseignements` GROUP BY MONTH(`datecotisation`)');


?><?php
 while ($aRes = mysql_fetch_row($rQuery)) {
?>
----

    <?php echo $aMoisFR[$aRes[0]]; ?>,
    <?php echo $aRes[1]; ?>,
    <?php echo $aRes[2]; ?>,

<?php
 }

echo"

";


REPPARTION,
TOTAL ADHERENTS,
75

désignation |
nbre |
% |



PAR MOIS D'ADHESI0N
Janvier,
22,
29.3,

----

Fevrier,
32,
42.7,

----

Mars,
13,
17.3,

----

Avril,
7,
9.3,

----

Mai,
1,
1.3


maintenant je vais esayer de comprendre l'écriture et le cheminement

merci encore pour cette précieuse aide
atoll
3
winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 1
3 juin 2008 à 21:11
Salut!

$aMoisFR = Array('Janvier', 'Fevrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Decembre');

$iMois = 3; // Mois n°3

echo $aMoisFR[$iMois-1]; // -1 car on est dans un tableau

Sinon, au lieu de t'embeter avec mysql_num_rows, for & mysql_result, tu pourrais faire

while ($aRes = mysql_fetch_row($reqadesion)) {
 echo $aRes[0]; // Colonne 1
 echo $aRes[1]; // Colonne 2
 echo $aRes[2]; // Colonne 3
}

Voir meme remplacer mysql_fetch_row par mysql_fetch_assoc pour utiliser le nom du champs plutot que son numero de plus que t'y gagne en temps d'execution

Tout ça, ce ne sont que des exemples, à toi de les remanier =)

win
0
atolldecolombo Messages postés 6 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 10 juillet 2008
4 juin 2008 à 16:37
bonjour,
merci pour ta réponse
 mais petit probléme ce tableau doit servir toute l'année et si j'inscrie $iMois = 12; pour avoir un tableau annuel, j'ai des erreurs car la requete n'obtient pas de valeur sur les mois futurs (je pense avoir le même résultat si un mois n'a pas d'adhésion)
idem si j'enleve mysql_num_rows
donc désolé mais je n'est pas pu ou su mettre en place tes solutions
atoll
nb je débute sous ce langage
0
winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 1
4 juin 2008 à 21:33
Hum..

Voici ton code allegé .. essaye de le comprendre..

<?php
$aMoisFR = Array('Janvier', 'Fevrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Decembre');
echo 'PAR MOIS D'ADHESION';
mysql_select_db('membres3e');
$rQuery = mysql_query('SELECT MONTH(`datecotisation`), COUNT(1), ROUND(((COUNT(1)/'.((int) $totalres).')*100),1) FROM `renseignements` GROUP BY MONTH(`datecotisation`)');

?><?php
 while ($aRes = mysql_fetch_row($rQuery)) {
?>
----

    <?php echo $aMoisFR[$aRes[0]]; ?>,
    <?php echo $aRes[1]; ?>,
    <?php echo $aRes[2]; ?>,

<?php
 }
?>

win
0
Rejoignez-nous