begin process at 2010 03 22 04:24:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP

PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP


 Information sur la source

Note :
9 / 10 - par 11 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :pagination, php, script, fonction, page Niveau :Débutant Date de création :01/09/2006 Date de mise à jour :01/09/2006 23:37:21 Vu / téléchargé :33 792 / 2 179

Auteur : gigaprint

Ecrire un message privé
Site perso
Commentaire sur cette source (37)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce script permet de créer une pagination automatique par appel de fonctions php à partir d'une quelconque requête SQL.
Le mode d'affichage est celui du page à page incluant des liens précédent et suivant. Il se présente sous la forme d'un menu de liens < |1|2|3|... > que vous pouvez bien-sûr personnaliser à votre convenance.

Source

  • <?
  • //==============================================================================
  • // # PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP #
  • //==============================================================================
  • ?>
  • <html>
  • <head>
  • <title>Script de pagination automatique en php</title>
  • <!-- Styles CSS -->
  • <style type="text/css">
  • html {font-size: 1.4em;}
  • .pagination a {color: black;}
  • .pagination a:hover {color: red; text-decoration: none;}
  • .pagination a:visited {color: red; text-decoration: none;}
  • </style>
  • </head>
  • <body>
  • <?
  • //==============================================================================
  • // Configuration à modifier avec vos propres paramètres
  • //==============================================================================
  • // Connexion à la base de données
  • $host = "localhost";
  • $user = "root";
  • $pass = "";
  • $data = "mabase"; // 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 = "matable"; // Table à sélectionner dans la base
  • $champ = "champtest"; // Champ de la table à afficher pour tester ce script
  • $sql = "SELECT * FROM $table"; // Requête initiale (à compléter si nécessaire)
  • $parpage = 5; // 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 "<p>La table <b>".$table."</b> compte ".$nblignes." <b>".$champ."</b>.";
  • 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
  • while ($ligne = mysql_fetch_array($result)) {
  • echo $ligne[$champ]."<br />\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
  • //==============================================================================
  • // Fonctions à copier de préférence dans un fichier 'include/fonctions.inc.php'
  • //==============================================================================
  • 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
  • $html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
  • }
  • }
  • // 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."><</a> | ";
  • }
  • }
  • 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='pagination' href=".$url.$limit.">></a>";
  • }
  • }
  • // Si pas de valeur 'limit' on affiche le lien de la deuxième page
  • if (@$_GET['limit']== false) {
  • $suivant = "<a href=".$url.$parpage.",".$parpage.">></a>";
  • }
  • }
  • else {
  • $suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
  • }
  • return $suivant;
  • }
  • // Fin du script
  • ?>
  • </body>
  • </html>
<?
//==============================================================================
//           # PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP #
//==============================================================================
?>
<html>
<head>
<title>Script de pagination automatique en php</title>
<!-- Styles CSS -->
<style type="text/css">
html {font-size: 1.4em;}
.pagination a {color: black;}
.pagination a:hover {color: red; text-decoration: none;}
.pagination a:visited {color: red; text-decoration: none;}
</style>
</head>
<body>
<?
//==============================================================================
// Configuration à modifier avec vos propres paramètres
//==============================================================================

// Connexion à la base de données
$host = "localhost";
$user = "root";
$pass = "";
$data = "mabase"; // 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 = "matable"; // Table à sélectionner dans la base
$champ = "champtest"; // Champ de la table à afficher pour tester ce script
$sql = "SELECT * FROM $table"; // Requête initiale (à compléter si nécessaire)

$parpage = 5; // 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 "<p>La table <b>".$table."</b> compte ".$nblignes." <b>".$champ."</b>.";
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
while ($ligne = mysql_fetch_array($result)) {
  echo $ligne[$champ]."<br />\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

//==============================================================================
// Fonctions à copier de préférence dans un fichier 'include/fonctions.inc.php'
//==============================================================================

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
      $html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
    }
  }
  // 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."><</a> | ";
      }
    }
    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='pagination' href=".$url.$limit.">></a>";
      }
    }
    // Si pas de valeur 'limit' on affiche le lien de la deuxième page
    if (@$_GET['limit']== false) {
      $suivant = "<a href=".$url.$parpage.",".$parpage.">></a>";
    }
  }
  else {
  $suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
  }
  return $suivant;
}
// Fin du script
?>
</body>
</html>

 Conclusion

J'ai volontairement détaillé les commentaires de ce script car je souhaite qu'il aide au mieux les débutants en php (que je suis). J'ai tellement galéré pour trouver un script compréhensible qui fonctionne sans s'arracher les cheveux que j'ai fini par en créer un !

J'espère que ma contribution vous sera utile.

PS : Si il y a des erreurs ou des améliorations à faire, n'hésitez pas à le faire savoir.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

01 septembre 2006 21:55:47 :
J'ajoute le fichier zip pour éviter le copier/coller.
01 septembre 2006 23:37:21 :
Correction dans les fonctions pour ne pas afficher de liens si l'on a qu'une seule page à afficher (c'est plus propre !) Mise à jour du fichier zip également.

 Sources de la même categorie

Source avec une capture PAGINATION EN PHP par Orangina
Source avec Zip POO - DEBUGGER par DiGhan
Source avec Zip CRAWLER DE SITE EN PHP par Mcjo
DÉCOUPAGE D'UN TEXTE EN FONCTION DES SAUTS DE LIGNES par biloubil
RÉCUPÉRER LE CHEMIN RELATIF D'UN OBJET PAR RAPPORT À LA RACI... par FredPsy

 Sources en rapport avec celle ci

Source avec une capture PAGINATION EN PHP par Orangina
Source avec Zip PHPMYSITEWEB par toughzaa
Source avec Zip RESERVATION EN LIGNE DE GITE par gochardl
Source avec Zip PHOENIX INTERPRETOR par windows972
Source avec Zip Source avec une capture CREATION D'UN MENU OUVRANT A PARTIR D'UNE BASE MYSQL par eas

Commentaires et avis

Commentaire de Sannazzarotiti le 04/09/2006 10:15:35

mouais, juste une question car j'ai un doute, peut on limiter le nombre a 6. sa ferait un truc du genre: <<1 2 3 ... 27 28 29>>

Commentaire de gigaprint le 06/09/2006 10:59:58

Il faut régler le nombre par page en fonction du potentiel d'affichage de la requête afin de limiter le nombre de pages à parcourir. Si cela ne convient pas, il faut adapter ce script avec une fonction pour aller de 10 pages en 10 pages par exemple.
Pour ma part, je pense qu'une requête qui affiche trop de pages n'est pas assez précise et qu'il est préférable dans ce cas d'allonger la liste plutôt que d'augmenter le nombre de pages.

Commentaire de birken63 le 25/10/2006 21:59:42

Encore bravo ! Un des premiers code sur la pagination à marcher du 1er coup. Puis un code trés bien expliqué (peut être trop)

Merci !

Commentaire de chizum le 16/02/2007 11:54:17

Voilà, enfin un code clair et précis. Je vais le tester de suite, car j'ai un gros problème... J'ai une BDD de plus de 400 DVD, et afficher ça d'un coup c'est trop... Alors merci pour ce code.

Commentaire de Wallom le 04/04/2007 03:19:36

Merci gigaprint !

Commentaire de gfpl le 10/04/2007 10:18:32

merci ca m as evite de programmer ca :p

Commentaire de lanner le 02/06/2007 00:07:10

super et ca marche du premier coup :) par contre comment le valider w3c à priori le "?" de l'url pose problème, merci

Commentaire de lanner le 02/06/2007 12:42:27

j'ai passé des heures et j'y arrive pas héhé, pas su modifier pour utiliser autre chose que "lien.php?limit= dans $url , il faut modifier comment le code pour pouvoir utiliser par exemple & (ou &amp;) peut être que la ca devrait mieux aller pour la validation de la page, merci

Commentaire de lanner le 02/06/2007 17:02:26

bon ben c'est bon quelques modifications + url rewriting et ca marche :)

Commentaire de Yagamiraito le 13/07/2007 14:29:18

Super script et très bien commenté (moi qui suis débutant j'adore!)

Commentaire de bonnebouffe le 19/07/2007 08:42:19

Bonjour,

Super script mais j'ai une petite question : serait-il possible de mettre en gras le n° de la page sur laquelle on se trouve ?

Merci d'avance,

Christophe

Commentaire de VFone le 05/09/2007 12:41:04

Vraiment génial ce code.
Il est très bien expliqué en plus. Pour un débutant comme c'est très important.

J'aurais quand même une petite question.
Dans le code à la ligne 86 est marqué :
"Fonctions à copier de préférence dans un fichier 'include/fonctions.inc.php'"
Donc j'ai coupé ce bout de code de "function pagination($url,$parpage,$nblignes,$nbpages)" à "return $suivant;}" et l'ai mis dans un nouveau fichier "fonction.inc.php" dans un dossier "include".

Ensuite j'ai mis à la place de ce code "include("include/fonctions.inc.php");"

Et j'ai un message d'erreur qui apparaît:
"Fatal error: Call to undefined function: validlimit() in /mnt/146/free.fr/f/2/imagimp/creations/wallpapers/wallpapers12.php on line 133"

Que dois-je faire?
Merci

Commentaire de VFone le 05/09/2007 12:44:57

Petit rajout.
La ligne 133 de mon code est:
$result = validlimit($nblignes,$parpage,$sql);

Commentaire de frakosun le 30/10/2007 15:44:07 10/10

Il est super ce script, merci et bravo!
un petit détail cependant : ca aurait été parfait avec un style différent pour la page courrante, parce que là avec bcp de résultats on ne sait plus trop ou on est ;)

Commentaire de mixmac le 10/01/2008 12:27:02

Super script mais j'ai une petite question : serait-il possible de mettre en gras le n° de la page sur laquelle on se trouve ?

+1 :)

Commentaire de developper55 le 22/01/2008 11:07:48

Bonjour,
je sui débutant en php, et jé besoin dun script de pagination, je trouve le votre est super, mais, j'ai un souci :
moi, je voudrai afficher le résultat d'une recherche, et j'utilise pour cela GET ou POSt, mais le souci j'ai seulement la première page et les autres pages ne sont plus afficher;


<form name="recherche" action=test.php method="POST">
<table width="50" border="0.1" cellspacing="3" cellpadding="0" align="center">
<tr>
<select name="zonegeo">
  <option value="-1">Localisation</option>
<?
$qr = "select zonegeo from region";
$resultat = mysql_query($qr,$conn);
while ($ligne=mysql_fetch_array($resultat))
{
echo "<option>".$ligne["zonegeo"]."</option>";
}
?>
</select>
</tr>
</td>
<td><input type="submit" name="Rechercher" value="ok"></td><td><a
<table>
</form>

J'apprécie trop vos remarques

Commentaire de gfpl le 22/01/2008 11:14:06

normale tu oublie de repeter la boucle j'uque a la fin

<?php
for( $i = 1; $i <= 10; $i++ )
{ // début de la première boucle
  echo '| '; // début de ligne

  for( $j = 1; $j <= 10; $j++ )
  { // début de la seconde boucle
    echo $i * $j . ' | ';
  } // fin de la seconde boucle

  echo '<br />'; // fin de ligne
} // fin de la première boucle
?>

Affiche:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
| 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 |
| 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 |
| 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 |
| 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 |
| 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | 70 |
| 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 |
| 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 |
| 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |

Commentaire de developper55 le 22/01/2008 16:33:09

désolé, mais j'ai pas trop compris,
pourras tu être un peu plus claire, ou dois je placer ces boucles?

Merci par avance

Commentaire de developper55 le 22/01/2008 16:34:48

pour être plus claire,
en fait, j'arrive à voir les les numéros de pages en bas, mais quand je clique par exemple sur le deux, la page sera vide

Commentaire de gfpl le 23/01/2008 12:14:33

ben si tu genere des numero de page ou forcement ces pages n existent pas ca va rien donner
il faut en + donner une referance a ces numero soit un saut dans la base sql soite une page

genre sur l num 35 la ref est index.php?&page=25

et dans le code inclure la page 25

Commentaire de developper55 le 24/01/2008 12:04:37

les numèros qui affiche dans url existent , si je fais: SELECT * FROM table LIMIT 2,10,,, elle affiche quelque chose, mais le prob vient de la présence du bouton Submit.
Merci pour ta copération

regarde mon objectif:

J'ai besoin de faire une pagination du résultat d'une menu de recherche:
index.php:
<form name="Find" action=pagination.php method="POST">
<table width="50" border="0.1" cellspacing="3" cellpadding="0" align="center">
<tr>
<select name="secteur">
  <option value="-1">Secteur</option>
<?php
$q = "select secteur from secteur";
$resultat = mysql_query($q,$conn);
while ($ligne=mysql_fetch_array($resultat))
{
echo '<option>'.$ligne["secteur"].'</option>';
}
?>  
</select>
</tr>
<tr>
<select name="zonegeo">
  <option value="-1">Localisation</option>
<?php
$qr = "select zonegeo from region";
$resultat = mysql_query($qr,$conn);
while ($ligne=mysql_fetch_array($resultat))
{
echo "<option>".$ligne["zonegeo"]."</option>";
}
?>  
</select>
</tr>
<tr>
</td>
<td><input type="submit" name="Find" value="ok"></td
</table>
</form>

--------------------------------------------------------------------------
pagination.php
<?php
if (isset($_GET[Find]))
{
// secteur
if ($_GET['secteur'] >-1 && ($_GET['zonegeo'])==-1 )
  {
$dom = $_GET['secteur'];
  $q= "SELECT * FROM offres WHERE secteur='$dom'";
display($q);
}
// zone
if (($_GET['secteur']) ==-1 && $_GET['zonegeo'] >-1 )
  {
$zone =$_GET['zonegeo'];
   $q= "SELECT * FROM offres WHERE zonegeo='$zone'";
display($q);
}
function display($q){
include("dbase.php");
$result = mysql_query($q,$conn) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
if($total===0){
echo 'Pas d\'enregistrements dans cette table...';
}
if($total) {
    // debut du tableau
    echo '<table bgcolor="#FFFFFF" align="center">'."\n";
        echo '<tr>';
    echo '<td bgcolor="#669999"><b><u>Number</u></b></td>';
    echo '<td bgcolor="#669999"><b><u>Localisation</u></b></td>';
    echo '<td bgcolor="#669999"><b><u>Date</u></b></td>' ;
    echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row["index_offres"].'</td>';
       echo '<td bgcolor="#CCCCCC">'.$row["zonegeo"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["datemaj"].'</td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    }
}
?>
</td>
</tr>
</table>
</html>

Commentaire de gfpl le 24/01/2008 13:35:16 10/10

si tu peut me contacter en mp je peut te dire eventuellement

sinon je me trompe mais il manque pas un else

if($total===0){
echo 'Pas d\'enregistrements dans cette table...';
}if($total) {
    // debut du tableau

}else {
//debut du tablau

et pourquoi ^$total===0 et non $total==0

regarde ici http://www.phpsources.org/tutoriel-modulos.htm

Commentaire de developper55 le 25/01/2008 12:36:58

le prob vient de l'url

Commentaire de gfpl le 26/01/2008 09:58:20

oui en effet si tes parametre ne passent pas dans l url ;)
si ta page est vide et que tu n as meme pas  le message pas d'enregistrement dans la table
c est que la variable if (isset($_GET[Find]))est 0
dans l url essaie d abbord ca
<form name="Find" action="pagination.php?find" method="POST"> la tu auras au moin qq chose
si ce n est que pas d enregistrement dans la base
mais ton script est pas ideal perso je ne sais pas dans quel but tu le developpe mais si il y a une page blange if faut penser a rectifier ca

dans pagination a la fin du dernier
}
?>
change par
}else{ echo "requete invalide veuillez recommancer"};
?>

le risque va etre si tu change pas ton script du sql injection ;)

Commentaire de Imoreion le 04/02/2008 14:24:05 10/10

Très bon code, très bien commenté, merci ! :D

Commentaire de frakosun le 04/02/2008 19:39:22

et quelqu'un sait comment on met en surbrillance (ou autre) la page courante?? c'est le seul défaut

Commentaire de Imoreion le 06/02/2008 09:47:51

Bah tu n'as qu'à faire une boucle du genre "si le numéro de page courant = numéro de page de la liste, mettre numéro de page de la liste en vert"...

Commentaire de franckfieldd le 25/02/2008 11:15:25 8/10

Bonjour à tous,
Merci à l'auteur pour ce script vraiment pratique, par contre j'ai un souci avec Register Global sur Off, je n'ai pas la suite des pagination.
Avez-vous le meme probléme ?

Commentaire de frakosun le 11/03/2008 00:34:04

c'est à dire Imoreion?
t'aurais pas un exemple stp?

Commentaire de catherinef le 22/03/2008 01:33:55 10/10

Fantastique

Ca fait des heures que j'essaie de comprendre des scripts pour la pagination et c'est le premier qui fonctionne. C'est merveilleux.

Merci beaucoup.

Commentaire de mangaman94 le 15/06/2008 17:25:05 10/10

Bonjour,

Je n'ai pas l'habitude de poster des messages. Mais là, je voulais absolument te féliciter pour ton code. Je développe un site contenant des requêtes assez complexe, et j'ai réussis très rapidement à intégrer ta pagination à mes pages.

Vraiment Merci et Bravo à toi!

Commentaire de igrek le 17/06/2008 12:04:13

Super ta pagination !!!

Une petite question !

Comment faire pour que lorsque j'ai 25 page cela s'affiche comme ca :


< 1|2|3|4 >

et que lorsque l'on clique sur le 4 cela affiche :

< 1...4|5|6 >


Etc...

Merci beaucoup!

Commentaire de tibob135 le 14/12/2008 15:03:33

Il manque une table mySQL

Commentaire de lakreem le 30/03/2009 15:07:55

Comment mettre en valeur le numéro de la page en cours?

Commentaire de hamwilly le 28/04/2009 16:23:09

Je vois que cette question sort souvent donc
pour mettre le numéro de la page en cours rajoute ce qui est entre les  /*****************/ dans fonction pagination
---------------------------------------------------------------------------------
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 repere la page pointé*/
      
      $page=position($parpage);
      //si y pas de limit c est que cest la première page
      if(empty($page)){$page =1;}
      echo "ma page est ".$page;
      if(($i+1)==$page ){
       $html .= "<b><a href=".$url.$limit.">".($i + 1)."</a></b> | " ;
      }else{
      /*****************************************************************/
      
      // On affiche les liens des numéros de pages
       $html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
              /*************n oublies pas la fin du else*/
      }
              /*****************************************/
    }

  }
-------------------------------------------------------------------------------------
et tu rajoute dans ton script la fonction
function position($parpage){
if (isset($_GET['limit'])) {
    $pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
    $debut = $pointer[0];
    $page = ($debut/$parpage)+1;
return $page;
}
}

et je tenais a remercier gigaprint pour le script

bon courage a tous

Commentaire de mastertom le 04/05/2009 14:15:54

Salut a tous et merci pour ce script "presque" parfait avec l'ajout de "HAMWILLY" maintenant le numéro de la page en cours est en gras mais il manque juste une chose: comment faire s'il on a une centaine de page à afficher et qu'au lieu d'avoir les 100 liens afficher ou veut en afficher que 10 ? par ex : < 1 | 2 | 3 | ... | 97 | 98 | 99 > ?

Merci d'avance ^^

Commentaire de tupense le 21/09/2009 14:01:31

j'ai un message d'erreur qui me dis
while ($ligne = mysql_fetch_array($result))

n'est pas valide

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Script php, fonction multiple [ par scrodofus ] Bonjour, Voila je vous contact parceque j'aimerai realisser une page php qui je sais pas si c'est simple et ne connait pas comment faire le code. J' Script de news [ par 0303 ] Bonjour ! je cherche un script de news en PHP/MYSQL avec ce script on peut poster les différents champs tels que : la page inserer.php Titre de la texte du script php affiché dans la page résultat [ par jlarras ] Bonjour, J'ai un petit problème avec php. J'ai téléchargé un script sur le web (PHPSearch), pour avoir un moteur de recherche interne. J'avais essayé connexion entre page php et fonction JS [ par jagogordonne ] Bonjour, je vais tenter d'expliquer mon problème. J'ai une page avec un formulaire qui contient un et lorsque je change ce select je récupère l'id d Ecrire un script javascript avec PHP [ par laubro ] Bonjourje veux mettre un script d'image sur une page, avec un rollover pour affichage de la vigniette dans u autre endroit, donc pour precharger les i déplacement [ par papiona ] salutje sais que php dans une page html il gére ses script en php et les executer. dans mon cas j'ai une zone de texte 'textarea' pr le commentaire et faille XSS pour pro :( [ par gfpl ] Bonjour, en esperant trouver qq qui puise m'aider a combler ma faille XSSvoila la faille de type index.php ?&gt;'&gt;&lt;ScRiPt%20%0a%0d&gt;alert(1687 iframe et script php [ par jeffwow ] Bonjour.Si j'insère une page php dans un iframe.  exemple:  &lt;iframe src="mapage.php" width="x" height="y"&gt;&lt;/iframe&gt;Est-il possible de conn une fonction php to html [ par adrick ] bonjour j'aimerais savoir s'il existe une fonction php (ou tout autre moyen) de récupéré le code source de la page généré par phpdonc en gros exporter fermmer une page php avec codes php [ par sbsouba ] slut  a tous je veux savoir s'il ya un code ou script php qui fermmer une page  en php voila mon code sources&lt;? $rep8=mysql_query("select * from ar


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales