Diviser ma liste de news sur plusieurs pages

Diviser ma liste de news sur plusieurs pages - PHP - Programmation

Marsh Posté le 13-03-2013 à 19:47:43    

Bonjour à tous  
 
Je possède une page web avec une commande include qui permet d'intégrer un document .txt sur mon site avec dans ce documents les news de celui-ci
 
Ma problématique :
 
J'aurais aimer que par exemple par page je soit limité a trois news (limité de façon automatique ou je peux le faire manuellement) et avoir "page : 1 2 3 4 ..." etc  
 
Le tous pour alléger ma page d'accueil et pas avoir dix news sur la page pour pas avoir à utilisé la scrollbar  
 
J'ai penser au fait de faire une page news-1.php , news-2.php etc mais ce n'est pas le plus pratique.
 
en gros sur ma page d'accueil j'aimerais pouvoir avoir trois news, pour voir la 4eme il faut passer sur la page 2, que les news soit de la plus récente à la plus vieille et si possible que lorsque j'ajoute une news dans mon fichier .txt tout se mettent en place
 
Merci d'avance :)

Reply

Marsh Posté le 13-03-2013 à 19:47:43   

Reply

Marsh Posté le 14-03-2013 à 01:39:05    

Hello
Pour faire ça, tu as besoin de 2 variables de plus.

 

Comme tu ne donnes pas de code, je t'explique le principe.

 

1) tu dois compter le nb total de news

 

Pour compter : $query = "SELECT COUNT(id) FROM news";
Ca te donne par exemple $total = 17;

 

2) tu dois savoir combien de news par page tu veux afficher.
Par exemple $nb_news_par_page = 3;

 

3) tu peux maintenant calculer le nb de pages :

Code :
  1. $nb_pages = ceil($total / $nb_news_par_page); // donnera l'arrondi de 17/3=6
 


4) Maintenant il ne te reste plus qu'à afficher les news ainsi que les numéros de page :

 
Code :
  1. // on determine la page en cours. Page 1 par defaut.
  2. $page = (isset($_GET['p'])) ? abs(intval($_GET['p'])) : 1;
  3. $page = ($page == 0) ? 1 : $page; // antibug si page à zéro
  4. // on détermine les news affichées sur cette page
  5. $premiereNews = ($page -1) * $nb_news_par_page;
  6. $derniereNews = $nb_news_par_page;
  7. // la requête
  8. $query = sprintf("SELECT id, titre, auteur, dateheure FROM news ORDER BY dateheure DESC LIMIT %d,%d;", $premiereNews, $derniereNews);
  9. // je te laisse le soin de trier comme tu veux, et afficher ensuite
 

5) le système de pagination

 
Code :
  1. // on supposera ici que la page est ainsi dans l'URL : mon_fichier.php?p=30 par exemple
  2. if ($nb_pages > 1) // pour une page unique, ça ne sert pas des masses ^^
  3. {
  4.     // afficher page précédente ?
  5.     if ( $page > 1)
  6.         echo '<a href="?p='.($page -1).">&amp;raquo; Préc.</a> - ';
  7.     // afficher tous les numéros de page
  8.     for($a = 1; $a <= $nb_pages; $a++)
  9.     {
  10.         if ($a == $page) // permet de ne pas mettre de lien sur la page en cours
  11.             echo ' ['.$a.'] - ';
  12.         else
  13.             echo '<a href="?p='.$a.'">'.$a.'</a> - ';
  14.     }
  15.     // afficher page suivante ?
  16.     if ($page < $nb_pages)
  17.         echo '<a href="?p='.($page +1).">Suiv. &amp;raquo;</a> - ';
  18. }
 


Ce code pourrait être optimisé, si tu as peu de pages c'est intéressant, si tu as 6000 pages évidemment va falloir l'améliorer...
Pas testé mais ça doit marcher.

 



---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 14-03-2013 à 14:18:37    

Je m'aperçois que tes news sont dans un fichier texte et pas dans une base de données :/ je t'ai répondu tard cette nuit, mea culpa, mais le principe pourra servir à quelqu'un d'autre.

 

Pour lire ton fichier texte, c'est la même chose, un Fread (ou file() de php) et puis une lecture ligne par ligne.

 

Donne la structure du fichier texte si tu as besoin d'aide pour le lire.


Message édité par NewsletTux le 14-03-2013 à 14:19:00

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 14-03-2013 à 20:27:11    

Pas de soucis
 
Le fichier .txt est assez brut avec un include sur la page principale , quelque petites mises en formes .
 
En gros c'est juste pour éviter d'avoir a modifier mon index.php et ca permet aux autres personnes mené à ajouté des news de pouvoir le faire "simplement"  
 
Après je sais pas si il y aurais un système qui comprendrais systèmes de news "simple" (visuellement) et aussi d'utilisation (les personnes menés à ajouté de news n'ont pas de connaissance en html / php) et aussi sans "pub" du genre "powered by ..."  
 

Reply

Marsh Posté le 15-03-2013 à 14:21:17    

si tu as créé ton site, tu peux très bien créer un formulaire "ajouter une actu" qui te fait un insert dans la base.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 16-03-2013 à 10:49:09    

Le soucis étant que je ne m'y connais pas du tout en base SQL :s

Reply

Sujets relatifs:

Leave a Replay

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