Ce système de pagination ne fonctionne pas !?

Crétinus Totalus
Invité n'ayant pas de compte PHPfrance

22 sept. 2012, 14:03

Bonjour,

Je suis en train d'apprendre à faire un système de pagination, mais ça ne marche pas. J'ai ma table "pagination" qui contient 11 entrées. J'ai fait un lien vers chaque page en bas, mais ça ne marche pas. Logiquement, il y a 3 lien (parce qu'il y a 11 entrées dans ma table). Quand je veux aller par exemple sur ma page 2 et que je clique sur le lien "2" en bas, ça n'affiche rien (juste les liens en bas) et ça me met ça comme url -> http://localhost:8888/pagination.php?page= au lien de http://localhost:8888/pagination.php?page=2. Par contre quand je change ma page en modifiant l'url (en mettant un chiffre après le signe égal du lien), ça marche très bien. Comment faire ?
Merci d'avance.
<?php
try
{
     $db = new PDO('mysql:host=localhost;dbname=test2', 'root', 'root'); // Connexion à la BDD
}
catch (Exception $error)
{
     die('Erreur : ' . $error->getMessage()); // Si il y a une erreur, ça l'affiche.
}
?>
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Untitled Document</title>
    </head>

    <body>
    	<?php
			$message_par_page = 4; // Je veux 4 messages par pages
			
			$request = $db->query('SELECT COUNT(*) AS total FROM pagination'); // Je fais une requête pour savoir combien d'entrées il y a en tout (11)
			$data = $request->fetch();
			
			$total = $data['total']; // Je récupère le nombre d'entrées dans total.
			
			$nombre_de_pages = ceil($total/$message_par_page); // Je calcule le nombre de pages qu'il doit y avoir avec la fonction ceil qui arrondi au nombre entier supérieur.
			
			if (isset($_GET['page'])) // Si $_GET['page'] existe...
			{
				$page_actuelle = intval($_GET['page']); // Ma page actuelle...
				
				if ($page_actuelle > $nombre_de_pages) Si je suis à la page 53 par exemple alors qu'il y en a seulement 3...
				{
					$page_actuelle = 1; // ... Ça me ramène à la page 1.
				}
			}
			else
			{
				$page_actuelle = 1; // Sinon la page actuelle sera la page 1.
			}
			
			$premier_message = ($page_actuelle-1) * $message_par_page; // Je calcule le premier message à afficher sur la page.
			
			$messages_a_lire = $db->query('SELECT * FROM pagination ORDER BY id DESC LIMIT ' . $premier_message . ', ' . $message_par_page . '');
			while ($donnees = $messages_a_lire->fetch())
			{
				echo $donnees['nom'] . '<br />'; // J'affiche tous mes messages
			}
			
			for ($i = 1; $i<= $nombre_de_pages; $i++) // Je fais ma pagination...
			{
				echo '<a href="pagination.php?page="' . $page_actuelle . '">' . $i . ' </a>';
			}
		?>
    </body>
</html>

Eléphant du PHP | 343 Messages

22 sept. 2012, 20:10

Et que donne la source html de echo '<a href="pagination.php?page="' . $page_actuelle . '">' . $i . ' </a>'; ?
Développeur web