PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP

Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009 - 4 sept. 2006 à 10:15
 sanka - 30 oct. 2013 à 11:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39392-pagination-automatique-par-appel-de-fonctions-php

Ce script est très bien détaillé. Mais je ne comprends pas, mes propres paramètres sont bien rentrés mais le test ne fonctionne pas. Rien ne marche.

Comment faire ?
cs_claude77260 Messages postés 54 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 8 avril 2013
13 sept. 2012 à 17:22
Super code, fonctionne du premier coup

Merci
vreaucont Messages postés 2 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 29 avril 2012
29 avril 2012 à 12:37
Salut,

Moi cela me dit :

Fatal error: Call to undefined function validlimit()

Alors que j'ai juste modifié le $_GET['page'] par $_GET['sp']

Help me :(
cs_Kloyd Messages postés 6 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 14 avril 2012
14 avril 2012 à 09:39
Merci ! ^^
farmel Messages postés 5 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 29 janvier 2014
30 déc. 2011 à 12:21
Merci pour le code qui marche !

J'ai une préoccupation car j'ai plusieurs page ..
Une petite question !

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

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |

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

< 1...4|5|6 >

Merci beaucoup!
dElwinn Messages postés 10 Date d'inscription jeudi 10 novembre 2011 Statut Membre Dernière intervention 27 avril 2012 1
1 déc. 2011 à 17:55
Merci beaucoup pour ce code, bien structuré, bien détaillé et bien expliqué, grâce à vous j'ai intégré ma 1ère pagination !
papooh Messages postés 5 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 17 novembre 2011
17 nov. 2011 à 22:26
Il suffit de remplacer split() par preg_split()
marwaphp Messages postés 1 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 11 mai 2011
11 mai 2011 à 20:40
Salut,

C'est merveilleux,vraiment merci pour ce code mais stp j'ai un probléme il m'affiche

Deprecated: Function split() is deprecated in C:\wamp\www\pagi.php on line 113
Deprecated: Function split() is deprecated in C:\wamp\www\pagi.php on line 144
Deprecated: Function split() is deprecated in C:\wamp\www\pagi.php on line 173

aussi je veux que le code m'affiche des enregitrement au lieu d'un seul champ.comment je peux le modifier :( ??
Merci d'avance
rachoup Messages postés 7 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2010
30 juin 2010 à 13:35
bon envoies moi ton script dans mon compte perso; tout dépend aussi des paramètres de ton site web. les requêtes sql que tu as injectées auparavant qui peuvent entrainer un conflit dans l'affichage .
frlobe Messages postés 5 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 4 juin 2010
30 juin 2010 à 01:07
Merci RACHOUP mais j'avais quand même pensé à modifier les paramètres perso avec mes propres infos SQL (DB, table et champs) ... Et ça ne fonctionne toujours. Je n'ai même pas intégér ce code dans mon code. J'ai juste dézippé le fichier, modifié les paramètres perso et ça ne marche pas ...
rachoup Messages postés 7 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 2 juillet 2010
29 juin 2010 à 01:28
Merci pour ce code qui fonctionne impec.
si tout le code s'affiche la première idée qui vient à l'esprit est que:

tu n'es connectée à ta base de données ; en d'autres termes remplie les paramètres de connexion à ta base.
nom de la base,
serveur, utilisateur, mot de passe
de plus .....FRLOBE tu devrais remplacer les variables $table et $champ par leurs valeurs respectives dans ta base de données.
quand tu as fini de créer ta base avec la table qui affiche les données de ton livre d'or.
exemple: $table=gold_book;
$champ=membre;
frlobe Messages postés 5 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 4 juin 2010
16 juin 2010 à 23:12
Bonjour
merci pour ce code qui semble parfait. Qq1 a du modifier le code car pour moi, ça ne fonctionne pas ...
Au moment de l'affichage, voilà ce que j'ai:
La table ".$table." compte ".$nblignes." ".$champ."."; echo "
\n"."On affiche ".$parpage." enregistrements par page, "; echo "soit un total de ".$nbpages." pages.
\n";
etc etc ... enfin tout le reste du code, quoi.
J'ai essayé de trouvé l'astuce, notamment en supprimant les lignes echo, en modifiant les quotes, mais sans succès. Une idée?
Merci d'avance
tupense Messages postés 18 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 4 avril 2012
21 sept. 2009 à 14:01
j'ai un message d'erreur qui me dis
while ($ligne = mysql_fetch_array($result))

n'est pas valide
mastertom Messages postés 8 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 24 mai 2009
4 mai 2009 à 14:15
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 ^^
hamwilly Messages postés 1 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 28 avril 2009
28 avril 2009 à 16:23
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 .= " [.$url.$limit. ".($i + 1)."] | " ;
}else{
/*****************************************************************/

// On affiche les liens des numéros de pages
$html . = "[.$url.$limit. ".($i + 1)."] | " ;
/*************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
lakreem Messages postés 8 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 11 mai 2011
30 mars 2009 à 15:07
Comment mettre en valeur le numéro de la page en cours?
tibob135 Messages postés 34 Date d'inscription mercredi 15 août 2007 Statut Membre Dernière intervention 5 février 2008
14 déc. 2008 à 15:03
Il manque une table mySQL
cs_igrek Messages postés 2 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 17 juin 2008
17 juin 2008 à 12:04
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!
mangaman94 Messages postés 3 Date d'inscription dimanche 7 mars 2004 Statut Membre Dernière intervention 15 juin 2008
15 juin 2008 à 17:25
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!
cs_catherinef Messages postés 1 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 22 mars 2008
22 mars 2008 à 01:33
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.
frakosun Messages postés 10 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 11 janvier 2008
11 mars 2008 à 00:34
c'est à dire Imoreion?
t'aurais pas un exemple stp?
franckfieldd Messages postés 2 Date d'inscription samedi 30 juin 2007 Statut Membre Dernière intervention 24 novembre 2007
25 févr. 2008 à 11:15
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 ?
Imoreion Messages postés 4 Date d'inscription samedi 12 mai 2007 Statut Membre Dernière intervention 6 février 2008
6 févr. 2008 à 09:47
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"...
frakosun Messages postés 10 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 11 janvier 2008
4 févr. 2008 à 19:39
et quelqu'un sait comment on met en surbrillance (ou autre) la page courante?? c'est le seul défaut
Imoreion Messages postés 4 Date d'inscription samedi 12 mai 2007 Statut Membre Dernière intervention 6 février 2008
4 févr. 2008 à 14:24
Très bon code, très bien commenté, merci ! :D
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 9 avril 2011
26 janv. 2008 à 09:58
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 ;)
developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012
25 janv. 2008 à 12:36
le prob vient de l'url
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 9 avril 2011
24 janv. 2008 à 13:35
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
developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012
24 janv. 2008 à 12:04
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">
<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>

----

<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>

----

</td>
<td></td

</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 ''.\"\n\";
echo '----
';
echo 'Number, ';
echo 'Localisation, ';
echo 'Date, ' ;
echo ''.\"\n\";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '----
';
echo ''.$row["index_offres"].', ';
echo ''.$row["zonegeo"].', ';
echo ''.$row["datemaj"].', ';
echo ''.\"\n\";
}
echo '
'."\n";
}
}
?>
</td>
</tr>
</table>
</html>
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 9 avril 2011
23 janv. 2008 à 12:14
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
developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012
22 janv. 2008 à 16:34
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
developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012
22 janv. 2008 à 16:33
désolé, mais j'ai pas trop compris,
pourras tu être un peu plus claire, ou dois je placer ces boucles?

Merci par avance
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 9 avril 2011
22 janv. 2008 à 11:14
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 '
'; // 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 |
developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012
22 janv. 2008 à 11:07
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></td><td>
</form>

J'apprécie trop vos remarques
mixmac Messages postés 1 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 10 janvier 2008
10 janv. 2008 à 12:27
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 :)
frakosun Messages postés 10 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 11 janvier 2008
30 oct. 2007 à 15:44
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 ;)
Utilisateur anonyme
5 sept. 2007 à 12:44
Petit rajout.
La ligne 133 de mon code est:
$result = validlimit($nblignes,$parpage,$sql);
Utilisateur anonyme
5 sept. 2007 à 12:41
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
bonnebouffe Messages postés 38 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 24 novembre 2008
19 juil. 2007 à 08:42
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
cs_Yagamiraito Messages postés 1 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 13 juillet 2007
13 juil. 2007 à 14:29
Super script et très bien commenté (moi qui suis débutant j'adore!)
cs_lanner Messages postés 131 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 8 avril 2015
2 juin 2007 à 17:02
bon ben c'est bon quelques modifications + url rewriting et ca marche :)
cs_lanner Messages postés 131 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 8 avril 2015
2 juin 2007 à 12:42
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 &) peut être que la ca devrait mieux aller pour la validation de la page, merci
cs_lanner Messages postés 131 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 8 avril 2015
2 juin 2007 à 00:07
super et ca marche du premier coup :) par contre comment le valider w3c à priori le "?" de l'url pose problème, merci
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 9 avril 2011
10 avril 2007 à 10:18
merci ca m as evite de programmer ca :p
Wallom Messages postés 4 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 23 juin 2008
4 avril 2007 à 03:19
Merci gigaprint !
chizum Messages postés 1 Date d'inscription vendredi 16 février 2007 Statut Membre Dernière intervention 16 février 2007
16 févr. 2007 à 11:54
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.
birken63 Messages postés 1 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 25 octobre 2006
25 oct. 2006 à 21:59
Encore bravo ! Un des premiers code sur la pagination à marcher du 1er coup. Puis un code trés bien expliqué (peut être trop)

Merci !
gigaprint Messages postés 2 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 6 septembre 2006
6 sept. 2006 à 10:59
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.
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
4 sept. 2006 à 10:15
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>>
Rejoignez-nous