Archives des données

Archives des données - PHP - Programmation

Marsh Posté le 06-04-2004 à 01:23:40    

Bonjour tout le monde !
 
Je bosse actuellement sur un site qui comporte une partie qui permet de poster des articles (quelque chose de très simple : id, nom, prénom, date, titre et texte). La page qui affiche ces articles prend seulement les 5 plus récents. Mais j'aimerai comme même faire des archives afin de pouvoir consulter les vieux messages. Je sais pas du tout comment faire.
 
J'aimerai qu'ils soient classés par année ou par mois (je sais pas encore quelle sera la fréquence des posts).
 
Si quelqu'un a une petite idée pour réalisé ça, ça m'intéresse  :) .

Reply

Marsh Posté le 06-04-2004 à 01:23:40   

Reply

Marsh Posté le 06-04-2004 à 01:52:12    

hem, si tu attends le scrip tout fait, ça va chauffer pour tes oreilles :D
 
Plus sérieusement, c'est vraiment pas difficile, donc dis nous ce que tu as déjà fait (et le sgbd utilisé aussi, Mysql et Mssql c'est pas la même chose pour ce genre de chose :D)

Reply

Marsh Posté le 06-04-2004 à 01:54:33    

je vois pas le problème. tu tries sur la date d'insertion de façon descendante en limitant le nombre d'élément à retourner
 
ex : SELECT * FROM table ORDER BY madate LIMIT (0, 5)

Reply

Marsh Posté le 06-04-2004 à 01:55:34    

>>naceroth : php & MSSQL... je connais pas beaucoup d'hébergeurs !

Reply

Marsh Posté le 06-04-2004 à 02:01:20    

JagStang a écrit :

>>naceroth : php & MSSQL... je connais pas beaucoup d'hébergeurs !


 
Moi non plus, mais il a jamais précisé que c'était destiné au net :D
 
(déjà eu un truc du genre pour l'intranet d'une bibliothèque, php & mssql comme config, donc bon  :hello: )

Reply

Marsh Posté le 06-04-2004 à 02:05:44    

il bosse sur un site avec des news. c'est pas pour le faire tourner en local. bref


Message édité par jagstang le 06-04-2004 à 02:06:34
Reply

Marsh Posté le 06-04-2004 à 02:08:42    

ben oui, et alors ?
 
PHP tourne en local comme sur le net et avec autre chose que mysql, et ce serait toujours dans la catégorie php, et ca serait toujours un site, pas un pot de lait...


Message édité par naceroth le 06-04-2004 à 02:09:19
Reply

Marsh Posté le 06-04-2004 à 02:13:16    

arrète tu t'enfonces :D
 
le couple php/mysql est _largement_ plus répandu que php/mssql ...
 

Reply

Marsh Posté le 06-04-2004 à 02:18:38    

Ca j'ai jamais dit le contraire :D
 
Mais largement ne signifie pas uniquement, et ça coute rien de poser la question avant, s'il répond mysql tant mieux, s'il répond mssql t'as pas l'air idiot avec ton limit :D

Reply

Marsh Posté le 06-04-2004 à 02:21:04    

il a pas encore précisé la bdd. Mais je suis confiant ;)

Reply

Marsh Posté le 06-04-2004 à 02:21:04   

Reply

Marsh Posté le 06-04-2004 à 11:44:46    

mysql.
 

JagStang a écrit :


ex : SELECT * FROM table ORDER BY madate LIMIT (0, 5)


 
Non, ça c'est ce que j'ai déjà utilisé pour l'affichage des articles récents. Là, je veux mettre les archives.
 
Voici ce que j'ai fait :
 
La première page qui liste les années :
 
<?
 if($rang!=1 && $rang!=2)
     {
     include('partie_privee/badpass.php3');
     }
 else {
  CONNEXION A LA BDD
 
  $sql= "SELECT DISTINCT YEAR(date) FROM tbl_articles ORDER by date DESC";
  $result= mysql_query ("$sql" );
  while ($row=mysql_fetch_row($result)){
?>
<a href="index.php3?rep_rubrique=partie_privee/commentaires/archives&page_centre=<? echo ($row[0]); ?>">Les archives de l'année <? echo ($row[0]); ?></a><br />
<?
  }
 }
?>
 
 
Ca, ça marche, y a pas de problème. Maintenant je vais créer des pages qui afficheront tous les articles d'une année. C'est pas pratique parce que je dois créer des pages pour chaque année, mais bon, je peux très bien en faire jusqu'en 2047, histoire d'être tranquille :
 
 
<?
 if($rang!=1 && $rang!=2)
     {
     include('partie_privee/badpass.php3');
     }
 else  
  {
  CONNEXION A LA BDD
 
  $res= mysql_query ("$sql" );
   
  $sql = "select * from tbl_articles where date=XXXXXXX ORDER by date DESC";
   
  while ($val = mysql_fetch_array($res))
     {
   $d1 = $val[date];
   $d1 = chunk_split($d1,2,"-" );
   $val[article]=str_replace("\n","<br>",$val[article]);
   list($c_annee,$c_mois,$c_jour,$c_heure,$c_minute) = explode("-",$d1);
   $moments=$c_jour."/".$c_mois."/".$c_annee." @ ".$c_heure.":".$c_minute;
     echo "
    <h2>$val[titre]</h2>
    <div class='nom'>$val[nom],  
    $val[prenom], le $moments</div><br />
    <div>$val[article]</div>
    <hr>";
     }
 mysql_close();
   
   
  }
?>
 
 
Le problème qui se pose, c'est que je sais pas quoi mettre dans :
$sql = "select * from tbl_articles where date=XXXX ORDER by date DESC";
 
Dans ma BDD la date se présente comme ça :
0104061103 (année / mois / jour / heure / minute).
 
J'espère que c'est clair et que quelqu'un pourra m'aider  :sweat: .

Reply

Marsh Posté le 06-04-2004 à 12:15:30    

Ben dans ton lien de la première page, tu as la variable page_centre qui a la valeur de l'année selectionnée.
 
Tu peux donc récupérer l'année dans le $_GET['page_centre']
 
Donc
 

Code :
  1. If (!empty($_GET['page_centre']))
  2. {$date_archive=$_GET['page_centre']));
  3. et
  4. $sql="SELECT * FROM tbl_articles where YEAR(date)=$date_archive ORDER BY date DESC";


non ?

Reply

Marsh Posté le 06-04-2004 à 12:42:07    

J'suis vraiment trop con...  :sleep:  
 
Merci deliriumtremens  :jap: . Etant donné le format de la date dans ma BDD je pensais que ça pouvait pas passer, mais visiblement c'est bon. Je vous tiens au courant.
 
En tout cas merci  :jap: .

Reply

Marsh Posté le 07-04-2004 à 11:03:10    

Voilà, c'est bon j'ai terminé mon système d'archives, merci tout le monde  :) .
 
naceroth >> J'attendais pas un script tout fait. Par contre je savais pas que je pouvait recupérer les données avec "2001", "2002" etc, étant donné le format de la date dans ma BDD (ex : 0104061103).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed