page avec bouton suivant/précédent

gagnier
Invité n'ayant pas de compte PHPfrance

04 juin 2010, 15:10

Bonjour,

je fait un petit site ou j'affiche les produit en vente d'une boutique.

voici mon code :
<?php
require_once('bdd/connexion.php'); //récupère les variables de connexion à la base de donnée
$page = $_GET['page'];
if($page == 1) {
    $nb = 0;
}
else {
    $nb_magique = 9;
    $nb = $page*$nb_magique-8;
}
$error = $_GET['error'];
if($page == '') { header('Location:?page=1'); }
else { ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Liste des produits</title>
</head>
<body>
<div class="page">
<?php 
include 'produit.php';
if($page == 1) {}
else {
    echo'<a href="?page=',$page-1,'"><< Précédent </a>';
}
echo "Page $page";
echo '<a href="?page=',$page+1,'"> Suivant >></a>';
$produit->closeCursor(); // Termine le traitement de la requête
?>
</div>
</body>
</html>
<?php
} 
?>
Et la page produit.php :
<?php
$produit = $bdd->query("SELECT * FROM `produit` ORDER BY `produit` ASC LIMIT $nb, 9 "); //on sélectionne tout dans la table produit

while ($get = $produit->fetch()) //on récupère les données
{
?>
<table align="center" width="410" border="0">
<tr>
<td width="200" rowspan="2">
<img align="middle" width="199px" height="199px" src="<?php if ($get['image_produit'] == '')  echo 'c_images/no_image.jpg'; else echo $get['image_produit'];  ?>" style="border-color:#000; border-style:groove; border-width:medium;"></td>
<td height="100">Produit :<br><?php echo $get['produit']; ?><br><i><?php echo $get['desc']; ?></i></td>
</td>
<tr>
<td height="100">Prix :<br><?php echo $get['prix']; ?>$</td>
</tr>
</table>
<br>
<?php
}
?>

Mon problème est que j'ai le lien précédent partout sauf a la premiere page, ce qui est parfait. j'aimerais que s'il n'y a pas d'autre page, le bouton suivant ne soit pas afficher...


Merci beaucoup :)

Mammouth du PHP | 672 Messages

04 juin 2010, 15:28

Bonjour.

En fait, il faut procéder plus ou moins comme pour le lien précédent...

Code : Tout sélectionner

1. Compter le nombre de pages 2. SI $page < nombre de page Afficher lien "suivant"
Au passage :
1. Si $_GET['page'] n'est pas renseigné, ça génére une erreur.
2. Si $page est négatif/nul, là encore erreur.
3. Le test sur if($page == ''), fais-le avant de faire le test sur la valeur de $page. Par contre, pas besoin de faire une redirection, il suffit d'affecter 1 par défaut...
4. Récupérer tôt (au début du script) le nombre de page permet de gérer le cas où on demande une page plus grande...
5. Evite d'utiliser $get pour le résultat de ta requête. A un moment ou un autre tu vas le confondre avec $_GET :oops:
6. Au niveau de la table, il vaut mieux éviter d'utiliser le même nom (produit) pour la table et un champ.
7. ... Et il vaut mieux préciser ce qu'on veut récupérer SELECT produit, image_produit.... Ca évite de récupérer des données qu'on n'utilise pas, et ça aide à maintenir le code.

gagnier
Invité n'ayant pas de compte PHPfrance

04 juin 2010, 19:55

Merci de ta réponse rapide...

Peut-tu me dire comment compter les pages stp? :?