le 06/08/2011 à 22:11
pagination php
Bonjour !
Voici mon code :
Sur ce système de pagination je voudrais que la dernière page affiche les messages restants, au lieu de 5 messages dont certains était contenus dans la page d'avant.
Vous me suivez ??? :D
Donc par exemple dans ma BDD j'ai 6 billets. Sur la page 1, les 5 premiers messages sont affichés, sur la deuxième, les 5 dernier messages, dont 4 d’entre eux étaient déja affiché sur la page 1.
Comment faire pour affciher seulement le dernier message ???
Merci ;) !!!
Voici mon code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Mon blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="design.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Mon super blog !</h1>
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=tests', 'root', '', $pdo_options);
if(isset($_GET['page']) AND preg_match("#[0-9]{1,}#", $_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$nb_mail_page = 5;
$req = $bdd-> query('SELECT COUNT(*) AS nb_mail FROM billets');
$donnees = $req-> fetch();
$req-> closeCursor();
$nb_mail_total = $donnees['nb_mail'];
$nb_page = ceil($nb_mail_total / $nb_mail_page);
$limit_start = ($page - 1) * $nb_page;
$req = $bdd-> prepare('SELECT id, titre, message, DATE_FORMAT(date_message, \'%d/%m/%Y à %Hh%imin%ss\') AS date_message_fr FROM billets ORDER BY date_message DESC LIMIT :limit_start, :nb_mail_page');
$req-> bindValue('limit_start', $limit_start, PDO::PARAM_INT);
$req-> bindValue('nb_mail_page', $nb_mail_page, PDO::PARAM_INT);
$req-> execute();
while($donnees = $req-> fetch())
{
?>
<div class="news">
<h3>Billet n° : <?php echo $donnees['id'];?> --> <?php echo htmlspecialchars($donnees['titre']);?> / le <?php echo htmlspecialchars($donnees['date_message_fr']);?></h3>
<p>
<?php echo nl2br(htmlspecialchars($donnees['message']));?><br/>
<em><a href="commentaires.php?billet=<?php echo $donnees['id'];?>">Commentaires</a></em>
</p>
</div>
<?php
}
$req-> closeCursor();
echo 'Page : ';
for ($page_actuelle = 1 ; $page_actuelle <= $nb_page ; $page_actuelle++)
{
echo '<a href="billets.php?page=' . $page_actuelle . '">' . $page_actuelle . '</a> ';
}
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
</body>
</html>
Sur ce système de pagination je voudrais que la dernière page affiche les messages restants, au lieu de 5 messages dont certains était contenus dans la page d'avant.
Vous me suivez ??? :D
Donc par exemple dans ma BDD j'ai 6 billets. Sur la page 1, les 5 premiers messages sont affichés, sur la deuxième, les 5 dernier messages, dont 4 d’entre eux étaient déja affiché sur la page 1.
Comment faire pour affciher seulement le dernier message ???
Merci ;) !!!