Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1319 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Diviser ma liste de news sur plusieurs pages

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Diviser ma liste de news sur plusieurs pages

n°2180297
guilla
Posté le 13-03-2013 à 19:47:43  profilanswer
 

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 :)

mood
Publicité
Posté le 13-03-2013 à 19:47:43  profilanswer
 

n°2180340
NewsletTux
<Insérez ici votre vie />
Posté le 14-03-2013 à 01:39:05  profilanswer
 

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
n°2180457
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 14-03-2013 à 14:18:37  profilanswer
 

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
n°2180604
guilla
Posté le 14-03-2013 à 20:27:11  profilanswer
 

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 ..."  
 

n°2180730
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 15-03-2013 à 14:21:17  profilanswer
 

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
n°2180853
guilla
Posté le 16-03-2013 à 10:49:09  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Diviser ma liste de news sur plusieurs pages

 

Sujets relatifs
Problème affichage date dans le module de newsListe déroulante liée sur plusieurs onglets [Résolu]
macro pour rechercher/remplacer sur plusieurs fichiersfaire apparaitre des pages sur une seule page
Imprimer plusieurs url automatiquementRequete http qui prend plusieurs minutes
gmail - importation automatique liste de contactsErreur sur un script PHP affichant plusieurs
Position d'une liste avec counter et :before 
Plus de sujets relatifs à : Diviser ma liste de news sur plusieurs pages


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR