Se connecter avec
S'enregistrer | Connectez-vous

Modification script pagination

Dernière réponse : dans Programmation

Bonjour à tous !
Voici un script trouvé ailleurs, mais qui ressemble à ceux qu'on peut trouver un peu partout :

  1. <?php
  2. function barre_navigation ($nb_total,
  3. $nb_affichage_par_page,
  4. $saison,
  5. $nb_liens_dans_la_barre)
  6. {
  7. $barre = '';
  8. // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'saison' qui jouera le role du premier élément de notre LIMIT
  9. if ($_SERVER['QUERY_STRING'] == "") {
  10. $query = $_SERVER['PHP_SELF'].'?saison=';
  11. }
  12. else {
  13. $tableau = explode ("saison=", $_SERVER['QUERY_STRING']);
  14. $nb_element = count ($tableau);
  15. if ($nb_element == 1) {
  16. $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&saison=';
  17. }
  18. else {
  19. if ($tableau[0] == "") {
  20. $query = $_SERVER['PHP_SELF'].'?saison=';
  21. }
  22. else {
  23. $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'saison=';
  24. }
  25. }
  26. }
  27.  
  28. // on calcul le numéro de la page active
  29. $page_active = floor(($saison/$nb_affichage_par_page)+1);
  30. // on calcul le nombre de pages total que va prendre notre affichage
  31. $nb_pages_total = ceil($nb_total/$nb_affichage_par_page);
  32.  
  33. // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($saison_deb et $saison_fin)
  34. // exemple : 2 3 4 5 6 7 8 9 10 11 << $saison_deb = 2 et $saison_fin = 11
  35. if ($nb_liens_dans_la_barre%2==0) {
  36. $saison_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
  37. $saison_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
  38. }
  39. else {
  40. $saison_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
  41. $saison_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
  42. }
  43.  
  44. if ($saison_deb1 <= 1) {
  45. $saison_deb = 1;
  46. $saison_fin = $nb_liens_dans_la_barre;
  47. }
  48. elseif ($saison_deb1>1 && $saison_fin1<$nb_pages_total) {
  49. $saison_deb = $saison_deb1;
  50. $saison_fin = $saison_fin1;
  51. }
  52. else {
  53. $saison_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
  54. $saison_fin = $nb_pages_total;
  55. }
  56. if ($nb_pages_total <= $nb_liens_dans_la_barre) {
  57. $saison_deb=1;
  58. $saison_fin=$nb_pages_total;
  59. }
  60.  
  61. // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
  62. if ($saison_deb != 1) {
  63. $cible = $query.(0);
  64. $lien = '<A HREF="'.$cible.'"><<</A>  ';
  65. }
  66. else {
  67. $lien='';
  68. }
  69. $barre .= $lien;
  70. // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
  71. for ($saison = $saison_deb; $saison <= $saison_fin; $saison++) {
  72. if ($saison == $page_active) {
  73. if ($saison == $nb_pages_total) {
  74. $barre .= $saison;
  75. }
  76. else {
  77. $barre .= $saison.' - ';
  78. }
  79. }
  80. else {
  81. if ($saison == $saison_fin) {
  82. $barre .= "<A HREF='".$query.(($saison-1)*$nb_affichage_par_page);
  83. $barre .= "'>".$saison."</A>";
  84. }
  85. else {
  86.  
  87. $barre .= "<A HREF='".$query.(($saison-1)*$nb_affichage_par_page);
  88. $barre .= "'>".$saison."</A> - ";
  89. }
  90. }
  91. }
  92.  
  93. $fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
  94. if (($nb_total % $nb_affichage_par_page) == 0) {
  95. $fin = $fin - $nb_affichage_par_page;
  96. }
  97. // si $saison_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
  98. if ($saison_fin != $nb_pages_total) {
  99. $cible = $query.$fin;
  100. $lien = '  <A HREF="'.$cible.'">>></A>';
  101. }
  102. else {
  103. $lien='';
  104. }
  105. $barre .= $lien;
  106. return $barre;
  107. }
  108. ?>
  109.  
  110. <html>
  111. <head>
  112. <title>Les livres de la bibliothèque</title>
  113. </head>
  114. </body>
  115. Les différents livres de la bibliothèque :<br /><br />
  116. <?php
  117. require ("configt2.php");
  118. mysql_connect("$dbhost", "$dblogi", "$dbpass"); // Connexion a MySQL
  119. mysql_select_db("$dbbase"); // Selection de la base
  120.  
  121. // on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
  122. $sql = 'SELECT count(*) as saisonsh, id FROM saisonsh';
  123.  
  124. // on exécute cette requête
  125. $resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  126.  
  127. // on récupère le nombre d'éléments à afficher
  128. $nb_total = mysql_fetch_array($resultat);
  129.  
  130. // on teste si ce nombre de vaut pas 0
  131. if (($nb_total = $nb_total[0]) == 0) {
  132. echo 'Aucune réponse trouvée';
  133. }
  134. else {
  135. echo '<table><tr><td><td>Description</td></tr>';
  136.  
  137. // sinon, on regarde si la variable $saison (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
  138. if (!isset($_GET['saison'])) $_GET['saison'] = 0;
  139. $saison1=substr($_GET['saison'], 0, 4);
  140.  
  141. $nb_affichage_par_page = 1;
  142.  
  143. // Préparation de la requête avec le LIMIT
  144. $sql = 'SELECT saisonsh FROM saisonsh ORDER BY saisonsh ASC LIMIT '.$saison1.','.$nb_affichage_par_page;
  145.  
  146. // on exécute la requête
  147. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  148.  
  149. // on va scanner tous les tuples un par un
  150. while ($data = mysql_fetch_array($req)) {
  151. // on affiches les résultats dans la <table>
  152. echo '<tr><td><td>' , htmlentities(trim($data['saisonsh'])) , '</td></tr>';
  153. }
  154.  
  155. // on libère l'espace mémoire alloué pour cette requête
  156. mysql_free_result ($req);
  157. echo '</table><br />';
  158.  
  159. // on affiche enfin notre barre
  160. echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $saison1, 3).'</span>';
  161. }
  162. // on libère l'espace mémoire alloué pour cette requête
  163. mysql_free_result ($resultat);
  164. // on ferme la connexion à la base de données.
  165. mysql_close ();
  166. echo '</table><br />';
  167. ?>
  168.  
  169. </body>
  170. </html>


Mais je souhaiterai modifier ce script ...

Je souhaiterai que la variable saison soit remplacer par la valeur de la saison (description ici) dans la barre d'adresse, mais aussi dans la barre de navigation en bas. Éventuellement, je peux ne reprendre que la première année de la saison.
J'ai beau chercher, je ne vois pas comment faire ...

j'espère avoir été clair, merci de votre aide ...

Autres pages sur : modification script pagination

Lassé par la pub ? Créez un compte
Lassé par la pub ? Créez un compte