Probleme pagination

latino58 -  
gaerebut Messages postés 1060 Statut Membre -
Bonjour,
Merci pour votre réponse concernant : session start
Le code que j'ai due trouver etait un peut plus subtil
<?php
session_start();
if(isset($_POST['metier'])) $_SESSION['metier'] = $_POST['metier'];
if(empty($_SESSION['metier'])) $_SESSION['metier'] = $metier;
else $metier = $_SESSION["metier"];
?>
Il me reste une chose à régler : la pagination
impossible d'afficher la pagination : page en cours et surtout : precedant / suivant
Merci de me dire ce qui ne va pas et voici le code en question :
style : style1:
.pagination {
height: 35px;
width: 700px;
background-color: #FFFFFF;

}
et page php :
<?php
//==============================================================================
// Configuration à modifier avec vos propres paramètres
//==============================================================================
// Connexion à la base de données
$host = "localhost";
$user = "xx"
$pass = "xxx";
$data = "xxx"; // Nommer ici la base de données
$connect = mysql_connect($host, $user, $pass)
or die("Connexion au serveur impossible !");
$db = mysql_select_db($data, $connect)
or die("Sélection de la base impossible !");
// Paramétrage de la requête (ne pas modifier le nom des variable)
$table = "offre"; // Table à sélectionner dans la base
$champ = "metier"; // Champ de la table à afficher pour tester ce script
$champ2 = "fonction";
$champ3 = "secteur";
$champ4 = "localisation";
$champ5 = "contrat";
$champ6 = "annonce";
$champ7 = "date";
$sql = "SELECT * FROM $table WHERE metier='".$metier."' ORDER by metier ASC"; // Requête initiale (à compléter si nécessaire)
$parpage = 4; // Nombre d'enregistrements par page à afficher
//==============================================================================
// Déclaration et initialisation des variables (ici ne rien modifier)
//==============================================================================
// On définit le suffixe du lien url qui affichera les pages
// $_SERVEUR['PHP_SELF'] donne l'arborescence de la page courante
$url = $_SERVER['PHP_SELF']."?limit=";
$total = mysql_query($sql); // Résultat total de la requête $sql
$nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
// On calcule le nombre de pages à afficher en arrondissant
// le résultat au nombre supérieur grâce à la fonction ceil()
$nbpages = ceil($nblignes/$parpage);
//==============================================================================
// Exemple d'affichage HTML
//==============================================================================
// On teste en affichant la valeur des variables (facultatif)
echo '<table width="700px" height="30" style="background-image: url(img/fondResultatOffert4.png)"background-repeat:no-repeat">'."\n";
echo '<tr width="700px">';
echo '<td width="70px"><td width="630" height="30px"></td><tr>';
echo '<td width="70px"><td width="630" height="30px"><font color=\"#000000\"font size="2">Nombre de résultats pour votre recherche :'.$nblignes.' annonces.</font></td><tr>';
echo '<td width="70px"><td width="630" height="15px"></td><tr>';
echo '</tr>'."\n";
//echo "<br />\n"."On affiche <b>".$parpage." enregistrements</b> par page, ";
//echo "soit un total de <b>".$nbpages." pages</b>.</p>\n";
// Si une valeur 'limit' est passée par url, on vérifie la validité de
// cette valeur par mesure de sécurité avec la fonction validlimit()
// cette fonction retourne automatiquement le résultat de la requête
$result = validlimit($nblignes,$parpage,$sql);
// On affiche le résultat de la requête
// On crée donc ici son propre tableau pour lequel on souhaite une pagination
//echo '<table bgcolor="#FFFFFF">'."\n";
echo '<table width="700px" height="235" style="background-image: url(img/fondResultatOffert3.png)"background-repeat:no-repeat">'."\n";
//echo '<table width="770px" height="225px" style="background-image: url(img/1.png)"background-repeat:no-repeat">'."\n";
// première ligne on affiche les titres dans 4 colonnes
//echo '<tr>';
//echo '<td bgcolor="#669999"><b><u>Date</u></b></td>';
//echo '<td bgcolor="#669999"><b><u>Type</u></b></td>';
//echo '<td bgcolor="#669999"><b><u>Désignation</u></b></td>';
//echo '<td bgcolor="#669999"><b><u>Lieu</u></b></td>';
//echo '</tr>'."\n";
while ($ligne = mysql_fetch_array($result)) {
echo '<tr width="700px">';
echo '<td width="70px"></td><td width="630" height="20px"></td><tr>';
echo '<td width="70px"></td><td width="630" height="20px"><font color=\"#006600\"font size="5">'.$ligne[$champ2].'</font></td><tr>';
echo '<td width="70px"></td><td width="630" height="20px"><font color=\"#000000\"font size="2"><b>Région :</b>'.$ligne[$champ4].'</font></td><tr>';
echo '<td width="70px"></td><td width="630" height="20px"><font color=\"#000000\"font size="2"><b>Type de contrat :</b>'.$ligne[$champ5].'</font></td><tr>';
echo '<td width="70px"></td><td width="630" height="50px"><font color=\"#000000\"font size="2">'.$ligne[$champ6].'</font></td><tr>';
echo '<td width="70px"></td><td width="630" height="20px"><font color=\"#000000\"font size="2"><b>Offre publiée le :</b>'.$ligne[$champ7].'</font></td><tr>';
//echo '<td width="70px"><td width="700">'.$ligne[$champ3].'</td><tr>';
echo '<td width="70px"><td width="630" height="40px"></td><tr>';
echo '</tr>'."\n";
}
echo '</table>'."\n";

// Menu de pagination que l'on place après la requête
echo "<div class='pagination'>";
echo pagination($url,$parpage,$nblignes,$nbpages);
echo "</div>";
mysql_free_result($result); // Libère le résultat de la mémoire
function pagination($url,$parpage,$nblignes,$nbpages)
{
// On crée le code html pour la pagination
$html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
// On vérifie que l'on a plus d'une page à afficher
if ($nbpages > 1) {
// On boucle sur les numéros de pages à afficher
for ($i = 0 ; $i < $nbpages ; ++$i) {
$limit = $i * $parpage; // On calcule le début de la valeur 'limit'
$limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
// On affiche les liens des numéros de pages
echo"<center><br>";
$html .= "<a href=\"".$url.$limit."&metier=".$metier."\">".($i + 1)."</a> <font color=\"#000000\">|</font> " ;
}
}
// Si l'on a qu'une page on affiche rien
else {
$html .= "";
}
$html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
// On retourne le code html
return $html;
}
function validlimit($nblignes,$parpage,$sql)
{
// On vérifie l'existence de la variable $_GET['limit']
// $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
if (isset($_GET['limit'])) {
$pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
$debut = $pointer[0];
$fin = $pointer[1];
// On vérifie la conformité de la variable $_GET['limit']
if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
// Si $_GET['limit'] est valide on lance la requête pour afficher la page
$limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
$sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
$result = mysql_query($sql); // Nouveau résultat de la requête
}
// Sinon on affiche la première page
else {
$sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
$result = mysql_query($sql); // Nouveau résultat de la requête
}
}
// Si la valeur 'limit' n'est pas connue, on affiche la première page
else {
$sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
$result = mysql_query($sql); // Nouveau résultat de la requête
}
// On retourne le résultat de la requête
return $result;
}
function precedent($url,$parpage,$nblignes)
{
// On vérifie qu'il y a au moins 2 pages à afficher
if ($nblignes > $parpage) {
// On vérifie l'existence de la variable $_GET['limit']
if (isset($_GET['limit'])) {
// On scinde la variable 'limit' en utilisant la virgule comme séparateur
$pointer = split('[,]', $_GET['limit']);
// On récupère le nombre avant la virgule et on soustrait la valeur $parpage
$pointer = $pointer[0]-$parpage;
// Si on atteint la première page, pas besoin de lien 'Précédent'
if ($pointer < 0) {
$precedent = "";
}
// Sinon on affiche le lien avec l'url de la page précédente
else {
$limit = "$pointer,$parpage";
$precedent = "<a href=\"".$url.$limit."&metier=".$metier."\"></a> <font color=\"#000000\">|</font> " ;
}
}
else {
$precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
}
}
else {
$precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
}
return $precedent;
}
function suivant($url,$parpage,$nblignes)
{
// On vérifie qu'il y a au moins 2 pages à afficher
if ($nblignes > $parpage) {
// On vérifie l'existence de la variable $_GET['limit']
if (isset($_GET['limit'])) {
// On scinde la variable 'limit' en utilisant la virgule comme séparateur
$pointer = split('[,]', $_GET['limit']);
// On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
$pointer = $pointer[0] + $parpage;
// Si on atteint la dernière page, pas besoin de lien 'Suivant'
if ($pointer >= $nblignes) {
$suivant = "";
}
// Sinon on affiche le lien avec l'url de la page suivante
else {
$limit = "$pointer,$parpage";
$suivant = "<a class='style1' href=\"".$url.$limit."&metier=".$metier."\"></a>";
}
}
// Si pas de valeur 'limit' on affiche le lien de la deuxième page
if (@$_GET['limit']== false) {
$suivant = "<a href=\"".$url.$parpage."&metier=".$metier.",".$parpage."\"></a>";
}
}
else {
$suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
}
return $suivant;
}
// Fin du script
?>

1 réponse

gaerebut Messages postés 1060 Statut Membre 171
 
code niquel !
Super indenté en plus !
Compréhension facile !

Bravo

A+

Gaerebut
-1