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


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
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