J'ai essayé de faire un petite pagination pour un affichage d'une table.
Mon soucis, c'est que ma pagination ne marche pas au premier affichage. La première fois que j'arrive sur l'affichage, j'ai tous mes enregistrements.
Si je clique sur les numéros de ma pagination, alors je passe bien à ma pagination de 1 à 1 enregistrement.
<?php require_once('../connexion/localhost.php'); ?>
<?php
$conn = mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error());
mysql_select_db($database_localhost, $conn);
//param modifiables
$nb_par_page=1;
//
if(isset($_POST['valider']) || isset($_GET['page'])){ //le bouton valider a été cliqué ou appel par pagination
//nom du script
$currentScript = $_SERVER["PHP_SELF"];
//recup id_produit sélectionné ou passé par l'url
if(isset($_POST['categories'])){
$categorie = $_POST['categories'];
}else{
$categorie = $_GET['categ'];
}
//recup page demandée passée par l'URL
if(isset($_GET['page'])){
$page_courante=$_GET['page'];
}else{
$page_courante=0;
}
//calcul nombre de pages
$sql = "SELECT * FROM produits WHERE id_categorie = '".$categorie."'";
$requete = mysql_query($sql) or die( mysql_error());
$nb_enr=mysql_num_rows($requete);
$nb_pages=ceil($nb_enr/$nb_par_page);
//calcul limites d'affichage
$debut=$page_courante*$nb_par_page;
//requette avec les limites
$sql = "SELECT * FROM produits WHERE id_categorie = '".$categorie."' LIMIT ".$debut.",".$nb_par_page." ";
$requete = mysql_query($sql) or die( mysql_error());
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Base de Données</title>
</head>
<body>
<?php
if(isset($_POST['valider'])){
$categorie = $_POST['categories'];
$sql = "SELECT * FROM produits WHERE id_categorie = '".$categorie."'";
$requete = mysql_query($sql) or die( mysql_error());?>
<table border="1">
<tr ><th> ID produit </th><th> Nom produit </th></tr>
<?php while ($result = mysql_fetch_array($requete)) {?>
<tr>
<td align="center" valign="middle"> <?php echo $result['ID_produit'];?> </td>
<td align="center" valign="middle"> <?php echo $result['nom_produit'];?> </td>
<td align="center" valign="middle"><input type="button" name="Supprimer" value="Supprimer" onclick="supprimer(<?php echo $result['ID_produit']; ?>)"/></td>
<td align="center" valign="middle">
</form>
<?php
//affichage
echo '<table border="1">'; //tableau
echo '<tr><th>ID produit</th><th>Nom produit</th></tr>';
while ($result = mysql_fetch_array($requete)) {
echo '<tr>'; //ligne
echo '<td>'.$result['ID_produit'].'</td>'; //colonne
echo '<td>'.$result['nom_produit'].'</td>';
echo '</tr>'; //fin ligne
}
echo '</table>';
//pagination:
// gestion numeros de page + page courante
$i=0;
$j=1;
if($nb_enr>$nb_par_page){
while($i<$nb_pages){
if($i!=$page_courante){
echo "<a href=\"".$currentScript."?page=".$i."&categ=".$categorie."\"> ".$j." </a>";
//on passe par l'URL le numero de page demandée (commence à 0) et l'id_produit selectionné
} else {
echo "<a href=\"".$currentScript."?page=".$i."&categ=".$categorie."\" > <b> ".$j." </b> </a>";
}
$i++;
$j++;
}
}
}
?>