Page 1 sur 1

Structurer l'affichage chronologiquement

Posté : 14 sept. 2007, 21:45
par stefane321
Bonjour,

Je veux faire afficher des citations (pensées) sur mon site Web de façon chronologique.

J'envisage en mettre 2 par semaine.

Elle seront enregistré dans une table:
CREATE TABLE `citations_archives` (
`id` int(255) NOT NULL auto_increment,
`nom` varchar(255) NOT NULL default '',
`description` text NOT NULL,
`date` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;
La date est inséré avec cette variable:
$date = date("d-m-Y");
Mon problème est que je ne sait pas comment faire la requête qui fera en sorte de voir les citations classées par mois et par années.

Exemple:
  • Septembre 2007
    • Citation bla bla bla ...
      Citation bla bla bla ...
      Citation bla bla bla ...
    Août 2007
    • Citation bla bla bla ...
      Citation bla bla bla ...
      Citation bla bla bla ...
    Juillet 2007
    • Citation bla bla bla ...
      Citation bla bla bla ...
      Citation bla bla bla ...
    ....
    ....
    Décembre 2006
    • Citation bla bla bla ...
      Citation bla bla bla ...
      Citation bla bla bla ...
    Novembre 2006
    • Citation bla bla bla ...
      Citation bla bla bla ...
      Citation bla bla bla ...
Pouvez-vous m'aidez svp?

Merci!

Posté : 15 sept. 2007, 00:33
par Ryle
Peut être commencé par utiliser un champ de type "DATE" pour stocker une date en utilisant le format adéquat : AAAA-MM-JJ (et si possible en lui donnant un nom qui n'est pas un mot clé réservé sql)
Ensuite tu pourras utiliser la clause ORDER BY dans tes requêtes pour trier les enregistrements.

La réorganisation par mois / année se fera ensuite, en php.. il y a de nombreux topics sur ce forum qui expliquent comment faire en utilisant une variable temporaire..

Posté : 17 sept. 2007, 22:37
par stefane321
et si possible en lui donnant un nom qui n'est pas un mot clé réservé sql
Là tu parle du nom de ma variable $date ?

Posté : 17 sept. 2007, 22:57
par Calimero
et si possible en lui donnant un nom qui n'est pas un mot clé réservé sql
Là tu parle du nom de ma variable $date ?
Non, il parle surtout du champ date de ta table... Qui d'ailleurs est de type varchar, ce qui est une erreur (toujours, car DATE est un mot-clé réservé en sql) et tout particulièrement pour ce que tu veux faire ;-)

Posté : 24 sept. 2007, 00:58
par stefane321
La solution à mon problème est:
		mysql_connect($host,$login,$password) or die("Impossible de connecter la bd");
		$base=mysql_select_db($db) or die("erreur de DB");
		$an='';$mois='';$day='';
		$res=mysql_query('SELECT id, auteur, description, DAYOFMONTH(date_arch) day, YEAR(date_arch) an, MONTH(date_arch) mois FROM `citations_archives` ORDER BY an DESC, mois DESC, day DESC') or die(mysql_error());
		while($ligne=mysql_fetch_assoc($res))
		{
    	  if(($ligne['mois'] != $mois) or ($ligne['an']!=$an))
		  {
          $an=$ligne['an'];
          $mois=$ligne['mois'];
		 // $day=$ligne['day'];
		  
		  		$sqlAR1 = "select * from mois where id=".$mois."";
				$resultAR1 = mysql_query($sqlAR1);
				$rowAR1=mysql_fetch_array($resultAR1);
		  
		  
          echo "<h4>".$rowAR1["nom"]." ".$an."</h4>\n";
          }
		  
		  
		 echo "<table CELLPADDING=0 CELLSPACING=0>\n";
		 echo "<tr><td>".$ligne['day']."/".$mois."/".$an."</td></tr>\n";
		 echo "<tr><td><p align=\"justify\">".stripslashes($ligne['description'])."</p><p align=\"center\"><i>".stripslashes($ligne['auteur'])."</i></p></td></tr>\n";
		 echo "</table>\n";
     	 } 

Posté : 24 sept. 2007, 01:11
par AB
Oui mais là tout le monde va te dire que c'est pas bien du tout de faire une requête dans la lecture d'une boucle d'une autre requête

Posté : 24 sept. 2007, 01:24
par stefane321
Tu me suggère quoi alors comme solution pour afficher le nom des mois en français?

Posté : 24 sept. 2007, 03:36
par AB
Tu fais le traitement de correspondance en php, par exemple avec un tableau.