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 :

[Dates] SQL | Lister dans une boucle toute les années diff d'un timestamp


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 96
    Points : 45
    Points
    45
    Par défaut [Dates] SQL | Lister dans une boucle toute les années diff d'un timestamp
    Salut, je souhaite à partir de mes news faire une page archives, en classant par année, puis mois
    Mon soucis, c'est que j'ai ma date de mes news au format timestamp (inséré avec time()) mais je ne veux pas me séparer de ce format .

    Donc je cherche désesperement une façcon de lister toutes les années, puis les mois pour chaque année à partir d'un nbre de secondes :/.

    J'avais pensé faire comme ca :

    Code : PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
       $req = "SELECT * FROM news"; // l'étoile est mise juste pour le test !
       $res = mysql_query($req);
       $nbre= 1;
       while($aff = mysql_fetch_object($res))
         {
             while($d = date('Y',$aff->date_news))
               {
                  echo $nbre." : ".$d."<br />";
                  $nbre++;
               }
         }
    ?>
    J'espéré qu'il allait juste me sortir pour chaque news son année(Year) mais non , boucle infinie .

    Bref je séche si vous avez des idées je prends.

  2. #2
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Bonjour,

    Donc je cherche désesperement une façcon de lister toutes les années, puis les mois pour chaque année à partir d'un nbre de secondes :/.
    MySQL possède de nombreuses fonction de manipulation de dates.

    Si tu veux uniquement lister les mois et les années
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct year(date_news) as annee, month(date_news) as mois from ...
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    Merci de ta réponse, je n'y aurai absolument pas pensé .

    Par contre ca amrche tjrs pas, cela n'affiche rien .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    	$req = "select DISTINCT YEAR(date_news) as annee, MONTH(date_news) as mois from news";
    	$res = mysql_query($req);
     
    	while($aff = mysql_fetch_object($res))
    		{
    			echo $aff->annee .' : '. $aff->mois .'<br />';
    		}
    ?>
    Le fait que mon date_news est au format timestamp n'empeche pas la focntion de convertir ?

    Edit : Je viens de tester la requete dans une fenetre SQL de phpmyadmin est ca me retourne NULL aux 2 champs.

    Edit 2 : finalement après des recherches dans la doc mysql (moins ergonomique que php), j'ai réussi à pondre ça.

    Code : 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <?php
    			$req = "select DISTINCT YEAR( FROM_UNIXTIME(date_news) ) as annee from news ORDER BY date_news DESC";
    			$res = mysql_query($req);
     
    			while($aff = mysql_fetch_object($res))
    			{
    				echo $aff->annee .' : ';
     
    			$req2 = "select DISTINCT MONTH( FROM_UNIXTIME(date_news) ) as mois from news WHERE YEAR( FROM_UNIXTIME(date_news)) = ".$aff->annee ." ORDER BY date_news ASC";
    			$res2 = mysql_query($req2);
     
    					while($aff2 = mysql_fetch_object($res2))
    					{
    						switch($aff2->mois)
    						{
    							case 1: $mois = 'Janvier';
    							break;
    							case 2: $mois = 'Février';
    							break;
    							case 3: $mois = 'Mars';
    							break;
    							case 4: $mois = 'Avril';
    							break;
    							case 5: $mois = 'Mai';
    							break;
    							case 6: $mois = 'Juin';
    							break;
    							case 7: $mois = 'Juillet';
    							break;
    							case 8: $mois = 'Aout';
    							break;
    							case 9: $mois = 'Septembre';
    							break;
    							case 10: $mois = 'Octobre';
    							break;
    							case 11: $mois = 'Novembre';
    							break;
    							case 12: $mois = 'Décembre';
    							break;
    							default: $mois = 'NC';
    						}
    						echo $mois. '-';
    					}
    				echo '<br />';
    			}
    			?>
    resultat :
    2017 : Mars-
    2006 : Mai-Juin-
    Ca à l'air de bien marcher, j'espère que c'est aps trop gourmand en proccessus...

Discussions similaires

  1. [XL-2007] modifier dans une plage toutes les cellules qui contiennent un mot précis en VBA
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/10/2010, 18h24
  2. Lancer une boucle toutes les secondes
    Par vaderetro33 dans le forum C
    Réponses: 28
    Dernier message: 07/10/2009, 10h35
  3. [LabView 7.0] Relancer une boucle toutes les X secondes
    Par mateo2486 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 04/09/2007, 11h27
  4. Réponses: 3
    Dernier message: 01/08/2007, 22h50
  5. Réponses: 1
    Dernier message: 16/05/2007, 15h52

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