Pagination

Pagination - PHP - Programmation

Marsh Posté le 04-07-2005 à 16:51:04    

Je viens de finir mon script de pagination permettant d'etaler mes résultats sur plusieurs pages, en fonction du nombre maxi de résultats par page ($numNews).
 
Le script marche parfaitement mais j'aimerai tout de même avoir quelques avis pour savoir si il  est possible de simplifier la chose.  :jap:
 
En voici la source

Code :
  1. <?php
  2. include('./includes/sql.php');
  3. $numNews = 5; // Nombre de news à afficher
  4. $requete = mysql_unbuffered_query("SELECT COUNT(id_article) FROM Articles" ) or die("Echec lors de l'envoi de $requete" );
  5. $numRows = mysql_fetch_row($requete); // Calcul du nombre de news total sous forme de tableau
  6. $numPages = ceil($numRows[0] / $numNews); // Calcul du nombre de pages total
  7. // on genere les requetes pour afficher les pages précedentes et suivantes
  8. if(!isset($_GET['num']) or !is_numeric($_GET['num']))
  9. {
  10. $page = 1;
  11. $position = 0;
  12. }
  13. else
  14. {
  15. $page = $_GET['num'] + 1;
  16. $position = $numNews * ($page - 1);
  17. }
  18. if($page != $numPages) // Si il y a encore des pages apres cette page on affiche le bouton Suivant
  19. {
  20. $next = '<a href="pagination.php?num='.$page.'">Suivant</a>';
  21. }
  22. else //sinon on affiche "Suivant"  
  23. {
  24. $next = 'Suivant';
  25. }
  26. if($page != 1) // Si il y a des pages avant cette page on affiche le bouton Précedent
  27. {
  28. $prec = '<a href="pagination.php?num='.($page - 2).'">Précedent</a>';
  29. }
  30. else // sinon on affiche "Précedent"
  31. {
  32. $prec = 'Précedent';
  33. }
  34. if($numPages > 1) // Si il y a plusieurs pages on affiche la barre de pagination
  35. {
  36. $pagination = "$prec - $next";
  37. }
  38. else // Si il n'y a qu'une page, on affiche rien
  39. {
  40. $pagination = '';
  41. }
  42. $requete_article = mysql_query("SELECT title_article FROM Articles ORDER BY time_article AND date_article DESC LIMIT $position, $numNews" ) or die("echec de la requ&ecirc;te MYSQL" );
  43. while($article = mysql_fetch_array($requete_article))
  44. {
  45. //Affichage le titre des articles
  46. echo'<h2>',$article['title_article'],'</h2>';
  47. }
  48. echo $pagination;
  49. ?>


 
le résultat est visible a l'adresse suivante : pagination


Message édité par snarky le 04-07-2005 à 18:02:05
Reply

Marsh Posté le 04-07-2005 à 16:51:04   

Reply

Marsh Posté le 04-07-2005 à 17:45:26    

On sait pas à quelle page on est exactement :o
Faudrait un accès direct à un minimum de pages :o
Puis c'est confusionant de continuer d'afficher le texte alors qu'il n'est plus cliquable :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 04-07-2005 à 17:58:02    

hmm oui la navigation reste a amelioré. mais que pensé du code en lui même  ?

Reply

Marsh Posté le 04-07-2005 à 18:00:09    

Citation :


"Echec lorsque de l'envoi de $requete"


 
...

Reply

Marsh Posté le 04-07-2005 à 18:01:35    

en effet :whistle:

Reply

Marsh Posté le 04-07-2005 à 18:04:33    

Lis bien cette page, en entier, puis affiche la correction, je pense que ça va t'aider quand il parle de la pagination.
http://www.siteduzero.com/php/tp/livreor.php

Reply

Marsh Posté le 04-07-2005 à 18:05:40    

Paracetamol a écrit :

Lis bien cette page, en entier, puis affiche la correction, je pense que ça va t'aider quand il parle de la pagination.
http://www.siteduzero.com/php/tp/livreor.php


 
sympa d'la lecture pour avant de :sleep:

Reply

Marsh Posté le 04-07-2005 à 18:36:30    

Alors, tu as vu l'histoire de pagination ?

Reply

Marsh Posté le 04-07-2005 à 18:45:12    

Code :
  1. <?php
  2. include('./includes/sql.php');
  3. $numNews = 5; // "Variable a mettre dans config" - Nombre de news a afficher
  4. $requete = mysql_unbuffered_query("SELECT COUNT(id_article) FROM Articles" ) or die('Echec lors de l\envoi de $requete');
  5. $numRows = mysql_fetch_row($requete); // Calcul du nombre de news total sous forme de tableau
  6. $numPages = ceil($numRows[0] / $numNews); // Calcul du nombre de pages total
  7. //Recuperation du numero de la page
  8. if(!isset($_GET['page']) or !is_numeric($_GET['page'])) // si ?page= n'a pas de valeur alors on est en premiere page
  9. {
  10. $page = 1;
  11. $position = 0;
  12. }
  13. else // sinon on recupere le numero de la page a afficher
  14. {
  15. $page = $_GET['page'];
  16. $position = $numNews * ($page - 1);
  17. }
  18. $requete = mysql_query("SELECT id_article, author_article, text_article, date_article, time_article FROM Articles ORDER BY id_article DESC LIMIT $position, $numNews" ) or die("echec de la requete" );
  19. while($comment = mysql_fetch_array($requete))
  20. {
  21.  //Formatage de la date Jour %A %d %B %Y
  22.  list($year, $month, $day) = explode("-", $comment['date_article']);
  23.  $months = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" );
  24.  $days = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" );
  25.  $timestamp = mktime (0, 0, 0, $month, $day, $year);
  26.  //formatage BBcode
  27.  $text = $comment['text_article'];
  28.  require('./includes/bbcode.php');
  29.  //Affichage des commentaires      
  30.  echo'<div id="comments">
  31.    <h2>',$comment['id_article'], ' | ', $comment['author_article'] ,'</h2>
  32.    <div class="message"><span class="justify">', $text ,'</span></div>
  33.    <h3>Post&eacute; le ', $days[date("w",$timestamp)], ' ', $day ,' ', $months[$month-1] ,' ', $year , ' &agrave; ', $comment['time_article'] ,'.</h3>
  34.   </div>';
  35. }
  36. mysql_close();
  37. //Pagination
  38. for($i = 1; $i <= $numPages; $i++)
  39. {
  40. echo '<a href="index.php?page=',$i,'">',$i,'</a>';
  41. }
  42. ?>


 
http://sn4rky.free.fr/guestbook/index.php


Message édité par snarky le 04-07-2005 à 18:46:02
Reply

Marsh Posté le 05-09-2005 à 22:17:18    

salut snarky,
je me suis servi de ton script et enfin compris comment faire une pagination lol..... Par contre, personel, j'ai un souci car pour moi je récupere une variable:
  $id = isset($_GET['VARsponsorID']) ? $_GET['VARsponsorID'] : die('Erreur');  pour l'instant OK, apres je modifie donc ta requete avec le WHERE :
WHERE photosponsor.sponsor= "' . $id . '" pour le select
Par contre, j'ai un probleme et m'affiche 'echec de la requete' pourtant j'ai l'impression que c bon.
Mes 2 requetes:
- 'SELECT COUNT(*) FROM photosponsor WHERE photosponsor.sponsor= "' . $id . '"'
- 'SELECT * FROM photosponsor WHERE photospnsor.sponsor=\"' . $id . '\" LIMIT $position, $numNews'
E mo lien <a class="tahoma12" href="?VARsponsor=',$id,'&page=',$i,'">',$i,'&nbsp;&nbsp;</a>
 
As tu une idée ?
Bonne soirée à tous
 

Reply

Marsh Posté le 05-09-2005 à 22:17:18   

Reply

Marsh Posté le 05-09-2005 à 23:03:48    

$sql = 'select ...';
echo $sql;


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 05-09-2005 à 23:22:19    

bourin77 a écrit :

salut snarky,
je me suis servi de ton script et enfin compris comment faire une pagination lol..... Par contre, personel, j'ai un souci car pour moi je récupere une variable:
  $id = isset($_GET['VARsponsorID']) ? $_GET['VARsponsorID'] : die('Erreur');  pour l'instant OK, apres je modifie donc ta requete avec le WHERE :
WHERE photosponsor.sponsor= "' . $id . '" pour le select
Par contre, j'ai un probleme et m'affiche 'echec de la requete' pourtant j'ai l'impression que c bon.
Mes 2 requetes:
- 'SELECT COUNT(*) FROM photosponsor WHERE photosponsor.sponsor= "' . $id . '"'
- 'SELECT * FROM photosponsor WHERE photospnsor.sponsor=\"' . $id . '\" LIMIT $position, $numNews'
E mo lien <a class="tahoma12" href="?VARsponsor=',$id,'&page=',$i,'">',$i,'&nbsp;&nbsp;</a>
 
As tu une idée ?
Bonne soirée à tous


 
 
$req = sprintf("SELECT * FROM photosponsor WHERE photospnsor.sponsor='%s' LIMIT $position, $numNews", mysql_real_escape_string($id));
 
$requete = mysql_query($req);
 
:jap:

Reply

Marsh Posté le 06-09-2005 à 10:39:02    

Des fois je me demande a quoi ça sert d'avoir la fonction recherche sur ce forum ! j'avais fais un topic ou j'en propose une complète. :/
Et pas de mensonge parce qu'il y en a des réponse  :sarcastic:  
http://forum.hardware.fr/forum1.ph [...] deration=0


Message édité par Berceker United le 06-09-2005 à 10:40:35
Reply

Marsh Posté le 06-09-2005 à 12:58:39    

desolé je 'ai vu apres mon post
merci @ vous

Reply

Sujets relatifs:

Leave a Replay

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