Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP


Information sur la source

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é: 27 765 / 1 795

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (36)
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

Pour les "Membres Club", vous pouvez 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.

Commentaires et avis

signaler à un administrateur
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>>

signaler à un administrateur
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.

signaler à un administrateur
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 !

signaler à un administrateur
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.

signaler à un administrateur
Commentaire de Wallom le 04/04/2007 03:19:36

Merci gigaprint !

signaler à un administrateur
Commentaire de gfpl le 10/04/2007 10:18:32

merci ca m as evite de programmer ca :p

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
Commentaire de lanner le 02/06/2007 17:02:26

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

signaler à un administrateur
Commentaire de Yagamiraito le 13/07/2007 14:29:18

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

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
Commentaire de VFone le 05/09/2007 12:44:57

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

signaler à un administrateur
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 ;)

signaler à un administrateur
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 :)

signaler à un administrateur
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

signaler à un administrateur
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 |

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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>

signaler à un administrateur
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

signaler à un administrateur
Commentaire de developper55 le 25/01/2008 12:36:58

le prob vient de l'url

signaler à un administrateur
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 ;)

signaler à un administrateur
Commentaire de Imoreion le 04/02/2008 14:24:05 10/10

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

signaler à un administrateur
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

signaler à un administrateur
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"...

signaler à un administrateur
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 ?

signaler à un administrateur
Commentaire de frakosun le 11/03/2008 00:34:04

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

signaler à un administrateur
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.

signaler à un administrateur
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!

signaler à un administrateur
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!

signaler à un administrateur
Commentaire de tibob135 le 14/12/2008 15:03:33

Il manque une table mySQL

signaler à un administrateur
Commentaire de lakreem le 30/03/2009 15:07:55

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

signaler à un administrateur
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

signaler à un administrateur
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 ^^

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

génération d'une page php par php [ par Vapula ] Bonjour à tousJe souhaiterais générer une page php grâce à une fonction php , mais le problème est que la fonction envoie bien le code html, et php SA Pb avec java script + frame [ par mika20 ] Salut.j'ai un pb. je n'arrive pas a faire afficher une page php dans une frame lorsque je clic sur un clien en java scripte. Je m'explique plus claire pagination sur une page php [ par hbib ] salut,je souhaiterai savoir comment faire pour faire une pagination sur une page phpen effet jai un tableau qui affiche differente infos de ma base de cron php [ par str ] Salut,Je suis a la recherche d'une commande pour executer un script php uniquement sur le serveur à partir d'une page php executée par un navigateur c colle [ par conan76 ] Une petite colle,Je voudrais tester dans le but d'optimisations plusieurs choses :1) temps de traitement du script PHP2) poids de la page récupérerain Apache/Script [ par glipper ] Bonjour,j'ai monté un serveur Apache (v1.3), et j'heberge un ami provisoirement. Mais j'aimerais que lorsque l'on tape l'adresse de son site ("http:// Cherche Script PHP [ par ykc ] Bonjour,Je cherche 1 script php qui me permettrait par methode d'"include()" de n'avoir que la page index.php et les autres s'afficheraien dedans avec Pagination avec PHP/MSAccess [ par le_freeman ] Bonjour,je voulais savoir si certains d'entre vous pourraient me dire comment je pourrais faire un affichage page par page de données récupérées via P Fonction mail(), envoi sans passé par une page php [ par BelphegorCLC ] Salut,Ma question est simple :Comment faire pour envoyer un mail sans passer par un page php ?J'entend par là :par exemple, je voudrai envoyer un mail Fonction header et fichier .htaccess [ par Bestgamer ] J'ai un problème avec la fonction header dans PHP.Voici le code dans mon fichier .htaccess:ErrorDocument 404 http://localhost/erreur404.phpQuand j'ess


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.