gestion d'affichage par page...

gestion d'affichage par page... - PHP - Programmation

Marsh Posté le 30-07-2004 à 10:32:05    

Bonjour a vous.
 
je suis en train de faire un script de gestion d'article avec une base SQL a 4 champs (ID ,date, Titre , Articles)
 
cependant, il maffiche tout les articles Dans une page entiere. moi je voudrai qu'au bout d'un certain nombre de caractere il puisse segmenter en plusieur page et gardr cette ordre de page.
 
Vla le code...
 
 

Code :
  1. <style type="text/css">
  2. <!--
  3. body {
  4. background-image: url(bg.jpg);
  5. }
  6. -->
  7. </style><body>
  8. <HTML>
  9. <style type="text/css">
  10. <!--
  11. .Style1 {
  12. font-size: 14px;
  13. font-family: Verdana, Arial, Helvetica, sans-serif;
  14. color: #FF9900;
  15. }
  16. -->
  17. </style>
  18. <link href="catalog/stylesheet.css" rel="stylesheet" type="text/css">
  19. <blockquote><span class="Style1"><strong>Actualités</strong></span></blockquote>
  20. <?php
  21. //bare des articles
  22. include("../admin_site/config.php" );
  23. $connection= mysql_connect($host_db,$user_db,$password_db,$bdd_db);
  24. $db=mysql_select_db($bdd_db,$connection);
  25. $sql = "SELECT * FROM articles ORDER by id DESC";
  26. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  27. while ($data = mysql_fetch_array($req)) {
  28. $id = $data['id'];
  29. $titre = $data['titre'];
  30. $texte = $data['texte'];
  31. $date = $data['date'];
  32. echo $date.' <A HREF=affarticles.php?sid='.$id.'>'.$titre.' </div>';
  33. }
  34. mysql_free_result ($req);
  35. mysql_close ();
  36. ?>
  37. </tr>
  38. </body>
  39. </HTML>


---------------
p4w4
Reply

Marsh Posté le 30-07-2004 à 10:32:05   

Reply

Marsh Posté le 30-07-2004 à 11:22:56    

Ce que je ferais :
 
- récupérer le nombre d'entrée et le diviser par le nombre d'article que tu veux par page
- afficher, comme pour le forum un lien vers chaque page (en fait c la même page biensur, mais tu récupère le numéro en GET par exemple)
- faire la requete dans la base en fonction de ce nombre :
 - par défaut tu affiche les x premier articles
 - si la page y est sélectionnée, tu affiche de l'article y*x à l'article y*x + x

Reply

Marsh Posté le 30-07-2004 à 11:33:27    

personnelement , je ferai plutot :
$query = "SELECT * FROM articles ORDER by id DESC LIMIT $inf,$sup"  
avec $inf et $sup deux variables passés soit par l'url ( ( et $_GET ) , soit par un formulaire ( $_POST )
 
tes requetes seront moins lourdes  

Reply

Marsh Posté le 30-07-2004 à 11:38:17    

Oui oui,
 
c'est ce que je fais en calculant la born inf et la born sup en fonction de mon numéro de page.

Reply

Marsh Posté le 30-07-2004 à 11:43:15    

ok  , j'avais pas compris :jap:


Message édité par fb@alphalog le 30-07-2004 à 11:43:21
Reply

Marsh Posté le 30-07-2004 à 12:07:46    

C'est ma faute quand je vois comment je me suis exprimé. Je la refais, moins crispé :
 
soit X le nb d'articles par page
soit Y le numéro de la page a afficher
 
- le nb total de page s'obtient en divisant (merci euclide) le nb total d'articles par X auquel on ajoute 1 si la division ne tombe pas juste
- avec la page à afficher (Y) on calcul les bornes pour la requète. On affiche les articles de Y*X à Y*X+X (et on a donc X articles sur notre page). Par défaut, on affiche les X premiers artcles (page 1). Attention pour la dernière page qui comporte probablement moins de X articles ;)
 
C'est simple et je pense assez efficace, du moment que tu stocke ton nombre d'articles (pour ne pas faire une requète pour calculer le nombre d'entrées à chaque fois)

Reply

Marsh Posté le 30-07-2004 à 14:50:14    

En fait jai pas de pb dfe gestion des articles.
 
je veut juste qu'un article qui soit trop long puisse se diiviser en plusieur page et c'zest ca que jarrive pas a faire.
 
 
si vous avez une idee...
 

Reply

Marsh Posté le 30-07-2004 à 14:54:30    

Ah oki ! j'avais pas compris.
 
Bah, pourquoi tu veux qu'il soit sur plusieurs pages ? c pour l'imprimer ? sinon c'est plus facile de dérouler.
 
Enfin sinon, moi j'appliquerai le même principe sur la longueur du texte, à la différence près qu'au moment ou tu coupes, tu coupes pas au milieu d'un mot (normal)

Reply

Marsh Posté le 30-07-2004 à 14:56:36    

ouais mais c quoi la fonction pour decoupper, et surtout comment la mettre en place dans ma page???


---------------
p4w4
Reply

Marsh Posté le 30-07-2004 à 15:19:46    

J'y ai jamais réfléchis.
utilises les fonctions de manipulation de chaines de caractères qui vont bien.
 
sans y réfléchir, j'aurais le réflexe de faire de la façon suivante :
- je calcul un nombre moyen de caractères par page
- dans une variable, je met le texte en commençant au caractère 0 et en allant jusqu'au ième caractère (i caractères en moyenne par page)
- en suite, je récupère l'emplacement du dernier espace de cette nouvelle chaine
- dans la nouvelle variable, je supprime tout de cet emplacement du dernier caractère jusqu'à la fin (je supprime donc l'éventuel mot qui est tronqué) et je l'affiche (j'ai une première page).
- dans mon texte d'origine je supprime tout ce qui est avant cet espace (et je garde ainsi le reste du texte qui n'a pas encore été affiché)
- je recommence sur le reste du texte, jusqu'à arriver au bout

Reply

Marsh Posté le 30-07-2004 à 15:19:46   

Reply

Marsh Posté le 30-07-2004 à 15:25:23    

pour les fonctions regarde l'aide de :
 
strripos()
substr()
strlen()
 
et plein d'autres
 
on trouve souvent facilement dans l'aide surtout que la documentation sur le php est bien faite

Reply

Marsh Posté le 30-07-2004 à 15:39:03    

ouais
 
jvai voir mais si ta un peu code tout fait ca mavancerai bien
 
merci deja...§!!

Reply

Marsh Posté le 30-07-2004 à 17:23:26    

bon jai deja chier ca :
 

Code :
  1. //definition des pages
  2. $page1 = substr("$texte", 0, 200);
  3. $page2 = substr("$texte", 200, 400);
  4. $page3 = substr("$texte", 400, 600);
  5. $page4 = substr("$texte", 600, 800);
  6. $page5 = substr("$texte", 1000, 1200);
  7. $page6 = substr("$texte", 1200, 1400);
  8. $page7 = substr("$texte", 1400, 1600);
  9. $page8 = substr("$texte", 1600, 1800);
  10. $page9 = substr("$texte", 1800, 2000);
  11. $page10 = substr("$texte", 2000, 2200);
  12. $page11 = substr("$texte", 2200, 2400);
  13. $page12 = substr("$texte", 2400, 2600);
  14. $page13 = substr("$texte", 2600, 2800);
  15. $page14 = substr("$texte", 2800, 3000);
  16. $page15 = substr("$texte", 3000, 3200);
  17. $page16 = substr("$texte", 3200, 3400);
  18. $page17 = substr("$texte", 3400, 3600);
  19. $page18 = substr("$texte", 3600, 3800);
  20. $page19 = substr("$texte", 3800, 4000);
  21. $page20 = substr("$texte", 4000, 4200);
  22. $page21 = substr("$texte", 4200, 4400);
  23. $page22 = substr("$texte", 4400, 4600);
  24. $page23 = substr("$texte", 4600, 4800);
  25. $page24 = substr("$texte", 4800, 5000);
  26. $page25 = substr("$texte", 5000, 5200);
  27. //affichage
  28. $numpage=$_GET['numpage'];
  29. if ($numpage==1)
  30. {
  31. echo $page1;
  32. }
  33. if ($numpage==2)
  34. {
  35. echo $page2;
  36. }
  37. if ($numpage==3)
  38. {
  39. echo $page3;
  40. }
  41. if ($numpage==4)
  42. {
  43. echo $page4;
  44. }
  45. if ($numpage==5)
  46. {
  47. echo $page5;
  48. }
  49. if ($numpage==6)
  50. {
  51. echo $page6;
  52. }
  53. if ($numpage==7)
  54. {
  55. echo $page7;
  56. }
  57. if ($numpage==8)
  58. {
  59. echo $page8;
  60. }
  61. if ($numpage==9)
  62. {
  63. echo $page9;
  64. }
  65. if ($numpage==10)
  66. {
  67. echo $page10;
  68. }
  69. if ($numpage==11)
  70. {
  71. echo $page11;
  72. }
  73. if ($numpage==12)
  74. {
  75. echo $page12;
  76. }
  77. if ($numpage==13)
  78. {
  79. echo $page13;
  80. }
  81. if ($numpage==14)
  82. {
  83. echo $page14;
  84. }
  85. if ($numpage==15)
  86. {
  87. echo $page15;
  88. }
  89. if ($numpage==16)
  90. {
  91. echo $page16;
  92. }
  93. if ($numpage==17)
  94. {
  95. echo $page17;
  96. }
  97. if ($numpage==18)
  98. {
  99. echo $page18;
  100. }
  101. if ($numpage==19)
  102. {
  103. echo $page19;
  104. }
  105. if ($numpage==20)
  106. {
  107. echo $page20;
  108. }
  109. if ($numpage==21)
  110. {
  111. echo $page21;
  112. }
  113. if ($numpage==22)
  114. {
  115. echo $page22;
  116. }
  117. if ($numpage==23)
  118. {
  119. echo $page23;
  120. }
  121. if ($numpage==24)
  122. {
  123. echo $page24;
  124. }
  125. if ($numpage==25)
  126. {
  127. echo $page25;
  128. }
  129.     //recup idmax
  130. $result = mysql_query("SELECT * FROM articles ORDER BY id DESC LIMIT 0,1" );
  131. $req2 = mysql_fetch_array($result);
  132. $idmax = $req2["id"];
  133. //condition idmax
  134. if ($id==$idmax)
  135. {
  136. echo "<ol><A HREF=articles.php>Retour au sommaire<ol>";
  137. }
  138. else
  139. {
  140. echo '<ol><A HREF=affarticles.php?sid='.$idma.'>articles suivante</ol>';
  141. }
  142. //recup idmin
  143. $result2 = mysql_query("SELECT * FROM articles ORDER BY id ASC LIMIT 0,1" );
  144. $req3 = mysql_fetch_array($result2);
  145. $idmin = $req3["id"];
  146. //condition idmin
  147. if ($id==$idmin)
  148. {
  149. echo "<ol><A HREF=articles.php>Retour au sommaire<ol>";
  150. }
  151. else
  152. {
  153. echo '<ol><A HREF=affarticles.php?sid='.$idmi.'>Brève précédente</ol>';
  154. }
  155. }
  156. $numpagep=$numpage+1;
  157. $numpagem=$numpage-1;
  158. echo '<ol><A HREF=affarticles.php?sid='.$id.'&numpage='.$numpagem.'>page précédente</ol>';
  159. echo '<ol><A HREF=affarticles.php?sid='.$id.'&numpage='.$numpagep.'>page suivante</ol>';


 
par contre comme tu ma dit il coupe des mot en deux et jai l'impression qu'il en opublie quelque un en route.
 
ta une idee?

Reply

Marsh Posté le 30-07-2004 à 18:15:18    

Citation :

jvai voir mais si ta un peu code tout fait ca mavancerai bien  


 
mais le plus rigolo c'est de le faire toi même ! En plus tu sais on a tous des trucs à faire ;) !
 
bon petites indications :
 - essaye de gérer automatiquement la découpe de tes pages. T'imagines si tu as 1000 pages à afficher, comment tu vas faire ?
 - pour la découpe des mots, je t'ai donné la solution : strripos() te permettra de trouver l'emplacement du dernier espace par exemple. Te reste plus qu'à supprimer ce qu'il y a après, mais faut bien sur le mettre dans la page suivante, c'est pour ça que c'est pas bon de tout découper comme ça. Essayes de suivre les étapes que je t'ai donné.
 
En tout cas il n'existe pas une seule solution, tu en trouveras peut-être une plus efficace.
 
amuses toi bien

Reply

Sujets relatifs:

Leave a Replay

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