Problème de pagination

Problème de pagination - PHP - Programmation

Marsh Posté le 14-04-2006 à 07:46:55    

Bonjour à tous.
 
Voici mon problème.
 
Je suis en train de faire un système de pagination.
Le problème est par exemple dans ma base il y a 116 images, je demande à ce qu'il y est 15 images par page, ce qui fait donc 8 pages au total (voir ici http://www.meteo-world.com/webcams/45.php , on constate qu'apres la page 3 il n'y a plus rien)
Moi je voudrais uniquement avoir une certaines catégorie d'image et non pas toutes les images.
Comment faire pour que le système de pagination prenne ceci en compte ?
 
Je veut que seule les images ayant
le champs   departement=aucun    soit affichées, ce qi est le cas, mais le nombre de page prend toutes les images de la base en compte ce qui fait qu'en fait j'ai trop de pages qui s'affichent
 
Voici le code actuel  
 
 

Code :
  1. <?php
  2. mysql_connect('', '', '');  // Connexion à MySQL
  3. mysql_select_db("" ); // Sélection de la base coursphp
  4. $nombreDeMessagesParPage = 15; // Le nombre de news sur chaque page
  5. // On récupère le nombre total de messages
  6. $retour = mysql_query('SELECT COUNT(*) AS nb_ville FROM webcams');
  7. $donnees = mysql_fetch_array($retour);
  8. $totalDesMessages = $donnees['nb_ville'];
  9. // On calcule le nombre de pages à créer
  10. $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
  11. if (isset($_GET['num_page']))
  12. {
  13.     $page = $_GET['num_page']; // On récupère le numéro de la page indiqué dans l'adresse (news.php?num_page=4)
  14. }
  15. else // La variable n'existe pas, c'est la première fois qu'on charge la page
  16. {
  17.     $page = 1; // On se met sur la page 1 (par défaut)
  18. }
  19. // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
  20. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  21. $reponse = mysql_query("SELECT id, image, pays, ville, source FROM webcams WHERE departement='aucun' AND approved='YES' ORDER BY id DESC LIMIT  " . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
  22. // Requête SQL
  23. $i = 0;
  24. ?>
  25.     <table>
  26.       <tr>
  27.         <?php
  28. // On fait une boucle pour lister tout ce que contient la table :
  29. while ($data = mysql_fetch_array($reponse) )
  30. {
  31. $i++;
  32. echo '<p id="'.$data['id'].'">';
  33. echo '<td><h3>'.$data['ville'].'<br/>'; //ici on rajoute le "<br/>"
  34. echo '<a href="'.$data['image'].'"><img src="'.$data['image'].'" width="140" height="100" alt="webcam '.$data['ville'].'" border="0" style="filter:alpha(opacity=100); -moz-opacity: 1;" onMouseover="makevisible(this,0)" onMouseout="makevisible(this,1)"></a></h3></td> ';
  35.    if($i == 4)
  36.                         {
  37.                                 echo "</tr><tr>";
  38.                                 $i = 0;
  39.                         }
  40.                 }
  41.                 ?>
  42.       </tr>
  43.     </table>
  44.    Page :
  45.       <?
  46. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  47. {
  48.     echo '<a href="45.php?num_page=' . $i . '">' . $i . '</a> ';
  49. }
  50. ?> <?php
  51. mysql_close(); // Déconnexion de MySQL
  52. ?>


Message édité par wydook le 14-04-2006 à 08:36:30
Reply

Marsh Posté le 14-04-2006 à 07:46:55   

Reply

Marsh Posté le 14-04-2006 à 09:41:01    

avec Limit, c'est bon. Tu inclus tous les paramètres (conditions) dans ta clause Where de ta requête et tu dois avoir une autre requête qui te renvoie le nb total d'enregistrement (la même requête à quelques détails près sans le limit mais avec un count). A l'affichage, t'as 2 liens précédent et suivant qui ont dans leur url le paramètre "page" qui contient le n° de la page à afficher. Dans le limit de ta requête, tu dois prendre en compte ce paramètre page pour afficher les bons enregistrements.

Reply

Marsh Posté le 14-04-2006 à 12:52:42    

j'ai trouvé la solution à mon problème.
 
Maintenant j'ai un souci.  je ne sait pas comment faire pour inserer "suivant" et précédent".
 
actuellement j'ai ceci:
 
page: 1-2-3-4
 
 
et moi je voudrais
 
Précédent  1-2-3-4  Suivant

Reply

Marsh Posté le 14-04-2006 à 14:27:42    

ben 2 bêtes balises <a href="AfficheTableau.php?Page=i"> où i représente le n° de page à afficher.

Reply

Sujets relatifs:

Leave a Replay

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