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

Langage PHP Discussion :

[Tableaux] affichage des dates ok et titrage avec le nom des mois d'un tableau


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 16
    Points
    16
    Par défaut [Tableaux] affichage des dates ok et titrage avec le nom des mois d'un tableau
    Bonjour,

    J'utilise php 4 et je souhaiterai avoir ce resultat suite à une requete dans mysql :

    Janvier

    01/01/2007
    24/01/2007

    Février

    04/02/2007
    06/02/2007
    25/02/2007

    Mars

    01/03/2007
    02/03/2007
    etc...


    pour l'affichage des dates au format jj/mm/yyyy, pas de problème par contre pour afficher le mois en lettre (partie en rouge), la c'est plus compliqué.

    j'ai créé un tableau comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lesmois = array("01"=>"Janvier", "02"=>"Fevrier","03"=>"Mars","04"=>"Avril","05"=>"Mai","06"=>"Juin","07"=>"Juillet","08"=>"Août","09"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Decembre");
    ici j'ai ma boucle pour afficher les dates (format jj/mm/yyyy)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php  
    do { echo date("d",$row_Recordset1["ladate"])."/".date("m",$row_Recordset1["ladate"])."/".date("Y",$row_Recordset1["ladate"]); ?> - </span><?php echo utf8_encode($row_Recordset1['descriptif'])."\n"; ?><?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));  mysql_free_result($Recordset1); ?>
    comment faire pour intégré au début de chaque date ce fameux mois en lettre ?
    en plus je suis presque sur que c'est pas difficile mais je bloque...

    Merci d'avance pour votre aide !

    cdt,

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Oh là tu paies pas à la ligne, aère un peu le code parce que là

    L'idée ça va être je pense d'avoir une variable contenant le numéro du mois de la dernière date affichée, de tester si la date courante est dans le même mois et d'agir en conséquence (mettre un nouveau mois et mettre à jour ensuite la variable si c'est pas le même mois). Et tu récupères dans ton tableau associatif le nom en faisant $lesmois['$mois'] je pense.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre habitué Avatar de Aliosha
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 124
    Points : 138
    Points
    138
    Par défaut
    Vui. Pas mieux qu'Amara. J'ai passé cinq jours à effectuer ce type de code (afficher un mois pour X évènements se déroulant dans ce mois, afficher un évènement pour X évènements qui se passent dans ce mois..., etc :p)
    « Le vécu-plat excite le chaos-rêve. » Traité de l'inactivité, Dimitri Grouchkch.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 16
    Points
    16
    Par défaut suite
    salut,

    merci pour votre réponse à tous les 2 les gars mais ca fait un moment que je bidouille sur ce code et je galère vraiment...je ne suis pas expert non plus.

    en fait pour l'idée à amara concernant la "variable contenant le numéro du mois" j'ai fait déjà sauf que je n'ai pas trouvé après de longues heures à chercher, ou mettre cette ligne.

    dans ma boucle do while j'ai fait :

    echo $lesmois[date("m",$row_Recordset1["ladate"])];

    le problème est qu'a chaque ligne de date, ca m'affichait :

    Janvier
    01/01/2007
    Janvier
    02/01/2007
    Janvier
    25/01/2007
    Février
    01/02/2007
    Février
    02/02/2007
    Février
    25/02/2007
    etc....

    alors que je veux :

    Janvier
    01/01/2007
    02/01/2007
    25/01/2007
    Février
    01/02/2007
    02/02/2007
    25/02/2007
    etc....

    svp vous n'auriez pas une piste plus précise ?
    un fragment de code, un titi morceau de rien du tout qui puisse m'éclaircir un peu plus ?


    sinon merci encore !
    cdt,

  5. #5
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $old_mois = "";
    while(parcours des dates)
    {
       if($row_Recordset1["ladate"] != $old_mois)
       {
          echo $lesmois[date("m",$row_Recordset1["ladate"])] . "<br/>";
          $old_mois = $row_Recordset1["ladate"]);
       }
       echo $row_Recordset1["ladate"] . "<br/>";
    }
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    ca ne marche pas...
    pitié ne me dit pas que je suis chiant...oh puis si vas y...

    j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $old_mois = "";
     
    while($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {  
    if($row_Recordset1["ladate"] != $old_mois)  {  
    echo $lesmois[date("m",$row_Recordset1["ladate"])] . "<br />"; 
    $old_mois = $row_Recordset1["ladate"]; 
    }  
    echo date("d",$row_Recordset1["ladate"])."/".date("m",$row_Recordset1["ladate"])."/".date("Y",$row_Recordset1["ladate"]); . "<br />"; 
    }
    et si j'ai bon par rapport a ce que tu dis alors ca ne va pas car ca m'affiche toujours un truc du style

    Fevrier
    09/02/2009
    Fevrier
    13/02/2009
    Fevrier
    09/02/2009
    Mars
    03/03/2007
    Mars
    24/03/2007
    Mars
    14/03/2007
    Mars
    11/03/2007
    Mars
    28/03/2007
    Mars
    31/03/2007
    Mars
    28/03/2007
    28/03/2007
    Mars
    10/03/2007
    Mars
    28/03/2007

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Ah oui c'est le mois qu'il faut mettre dans $old_mois pas la date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    old_mois = "";
     
    while($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {  
    if(date("m", $row_Recordset1["ladate"]) != $old_mois)  {  
    echo $lesmois[date("m",$row_Recordset1["ladate"])] . "<br />"; 
    $old_mois = date("m", $row_Recordset1["ladate"]); 
    }  
    echo $row_Recordset1["ladate"] . "<br />"; 
    }
    Mais comme tu as plusieurs années faut voir, là tu vas regrouper les données par mois / année, si tu veux les données pour un mois mais toutes les années (mars 2007, mars 2008, mars 2009 ensemble) il va falloir agir sur la requête avec un GROUP BY peut-être.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  8. #8
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    ta requete pour les dates ressemble a quoi?
    tu fais un group by ou un order by?

    Je me demandais aussi si tu veux mettre comme pour le mois de janvier...tout les date de janvier (tout année inclue) ou encore par année seulement(2007)
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  9. #9
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 16
    Points
    16
    Par défaut suite
    grand merci pour ton aide, il y a du mieux (nettement)

    cependant le code étant casse c....... par principe, il y a encore un problème, assez inexplicable d'ailleurs.

    voici mon code définitif (avec mise en page) :
    j'utilise tout d'abord, comme tu me la rappelé, "group by" pour la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_Recordset1 = "SELECT * FROM ybdata GROUP BY ladate ASC";
    ensuite la bouboucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $old_mois = "";
    echo "texte=<p class=\"letexte\">"; 
    while($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {  
    if(date("m",$row_Recordset1["ladate"]) != $old_mois)  {  
    echo "<span class=\"lesmois\">".$lesmois[date("m",$row_Recordset1["ladate"])] . "</span><br />"; 
    $old_mois = date("m",$row_Recordset1["ladate"]); 
    }  
    //echo $row_Recordset1["ladate"] . "<br />"; 
    echo "<span class=\"gras\">".date("d",$row_Recordset1["ladate"])."/".date("m",$row_Recordset1["ladate"])."/".date("Y",$row_Recordset1["ladate"]). "</span>". utf8_encode($row_Recordset1['descriptif'])."<br />";
    }
    echo "</p>";
    ?>
    <?php mysql_free_result($Recordset1); ?>

    et devines quoi ?

    il m'affiche toute les entrées db sauf une.

    c'est assez incroyable s'affaire !!!

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Si tu fais un GROUP BY sur la date ça va pas te donner grand chose, il faut le faire sur le mois des dates pour obtenir un truc au final du genre :

    Janvier
    01/01/2007
    08/01/2008
    14/01/2009
    Février
    04/02/2008
    ...

    Mais je sais pas si c'est ce que tu veux...

    D'ailleurs en y repensant c'est peut-être un ORDER BY sur le mois qu'il faut... mais là vendredi soir pas évident de réfléchir
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    yep c'est vrai que j'abuse la un peu...c'est le WE...

    en fait tout va bien désormais mis a part le fait qu'il y a une entrée mysql qui ne s'affiche pas, c'est la première de la boucle, que je fasse group ou order, asc ou desc

    si je fait par exemple ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_Recordset1 = "SELECT * FROM ybdata ORDER BY ".date("m","ladate")." ASC";
    ca m'affiche toutes les entrées moins une, avec les jour dans le désordre.

    c'est étrange des fois la prog...

    bon bein je vais essayer d'y repasser quelques heures de plus et peut-être que je trouverai a force...

    en tout cas grand merci a toi l'ami, car tu m'as sortie une bonne épine du pied.

    passes un agréable WE !

  12. #12
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    hey question comme ca
    si tu fait un while(mysql_fecth_assoc()) ben t'as pas besoin de while...
    ce serait pas plus un mysql_fetch_array() ?
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  13. #13
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    ca y est j'ai trouvé le problème, enfin....

    en fait il ne m'affichait pas toute les entrée car je faisais deux fois mysql_fetch_array ().

    merci encore à tous...


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/05/2012, 12h48
  2. [Toutes versions] Confusion de résultats dans recherche des occurrences d'une valeur avec Find sur des dates
    Par iperkut dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/11/2011, 20h07
  3. Réponses: 3
    Dernier message: 20/08/2009, 15h35
  4. probleme avec l filtre des date
    Par kroma23 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/05/2007, 17h32
  5. [Dates] Additionner des dates en PHP comme avec ADDTIME
    Par jeremie74 dans le forum Langage
    Réponses: 12
    Dernier message: 18/08/2006, 16h26

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