PAGINATION AUTOMATIQUE POUR LISTE MULTIPAGE

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 20 janv. 2006 à 14:17
softghost Messages postés 61 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 13 avril 2010 - 8 janv. 2008 à 20:51
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/35665-pagination-automatique-pour-liste-multipage

softghost Messages postés 61 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 13 avril 2010
8 janv. 2008 à 20:51
Bonsoir tous le monde ,
et Merci Isengard pour ce code trés utile,
tu peux expli ca svp:

$page_begin = ($page_precedente - 1) * $maxpages;

???? pourquoi multiplier sur le nombre d'affichage sur page et pourquoi le -1.
Fouinar Messages postés 2 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 11 juin 2006
11 juin 2006 à 20:26
Tout d'abord en grand merci à isengard pour cette source qui fonctionne et qui est très utile ^^

Pour saharam72 , pour l'affichage des résultats -dans le cadre d'un forum- il suffit de faire un while :

makeListLink(mysql_num_rows($result),20,"liste.php?variable=mavaleur",3);
while ($row = mysql_fetch_array($result)) {

et tu mets l'affichage de ta page ici

sinon explications sur l'appel de la fonction d'après ce que j'en est fait :

makeListLink(mysql_num_rows($result),20,"liste.php?variable=mavaleur",3);

le premier parametre est tout simplement le num rows de ta requete

le second tu mets $max_row_by_page qui est la variable qui indique combien de messages apparaitront sur une page

le troisieme est tout simplement le lien vers laquelle pointeront les chiffres lorsque tu cliqueras dessus, par exemple dans mon cas lorsque tu accedes à un sujet, le lien ressemble à lire.php?forum=1&id=2. c'est donc à toi d'adapter selon tes besoins, ce qu'il voulait dire par "liste.php?variable=mavaleur" c'est que tu dois simplement mettre les variables dont tu as besoin en get, rien d'extraordianaire !

le quatrieme parametre est bien décris dans l'explication, c'est le nombre de chiffre qui entoureront la page actuelle.

j'espere que ca t'auras éclairé un minimum !
++
saharam72 Messages postés 3 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 6 mai 2006
6 mai 2006 à 04:16
Merci niko14 d'avoir répondu aussi vite à ma requete..
bon à vrais dire je préfére le 1er code et j'arrive bien à le comprendre..c'est pas ça le probléme.
en plus je trouve pas mal d'exemples de codes de pagination sur internet mais malheuresement comme le tient ils n'expliquent pas comment afficher le résultat de la requete sur chaque page web.
bon je pense que je dois faire plus d'effort de ma part et approfondir mes connaissance en php avant de ce lancer sur la pagination :)
merci a+
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
5 mai 2006 à 08:45
slt saharam72
Si ca te pose problememoi j'ai trouvé ce code la qui est pas mal du tout pour faire de la pagination:

<?php

$nombreDeMessagesParPage = 5; // Le nombre de news sur chaque page
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(id_lien) AS nb_liens FROM liens');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_liens'];


// On calcule le nombre de pages à créer

$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);


if (isset($_GET['num_page']))

{

$page = $_GET['num_page']; // On récupère le numéro de la page indiqué dans l'adresse (news.php?num_page=4)

}

else // La variable n'existe pas, c'est la première fois qu'on charge la page

{

$page = 1; // On se met sur la page 1 (par défaut)

}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query("SELECT id_lien, adresse_lien, entreprise_lien, recap_entrep_lien FROM liens ORDER BY id_lien LIMIT " . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);


// Requête SQL

$i = 0;

?>

<?php



// On fait une boucle pour lister tout ce que contient la table :


while ($data = mysql_fetch_array($reponse) )

{

$i++;
?>
-[http://<?php echo $data[1]; ?> <?php echo ucfirst($data[2]); ?>]-

<?php echo ucfirst(nl2br($data[3])); ?>


<hr />
<?php


if($i == 4)

{

echo "</tr><tr>";

$i = 0;

}

}

?>

Page :

<?

for ($i = 1 ; $i <= $nombreDePages ; $i++)

{
if ($i==$page)
{
echo '[index.php?action=liens&num_page=' . $i . ' ' . $i . '] ';
}
else
{
echo '[index.php?action=liens&num_page=' . $i . ' ' . $i . '] ';
}
}
?>
saharam72 Messages postés 3 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 6 mai 2006
5 mai 2006 à 05:38
1er je suis débutant en php
2éme j'arrive pas à utiliser votre code. vous n'expliquez pas l'affichage des resultas.
l'exemple makeListLink(mysql_num_rows($result),20,"liste.php?variable=mavaleur",3);
n'est pas clair.
svp plus de détails sur (liste.php?variable=mavaleur).
j'éspere que vous allez répondre vite à ma requete car j'ai tellement besoin d'un code de pagination pour ma cite web et j'arrive pas à trouver
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
28 avril 2006 à 09:10
moi je le trouve pas mal ce code mais qqun pourrait il me dire ou je dois mettre qqch pour pouvoir justement afficher a l'ecran le resultat de ma requete!!
Moi je m'en sers pour faire différents liens mais la je suis un peu perdu pour savoir ou je mets ma boucle pour afficher mes liens svp!!
merciiiiii
kaputzan Messages postés 11 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 9 avril 2006
9 avril 2006 à 18:15
Salut,
Je viens d'utiliser ton code sur ma plateforme en ligne.
Bravo pour ton travail très clean, tu me fais gagner un temps précieux.
Je poste ce message et je file te mettre un 9/10 !
Encore merci
cs_ysn Messages postés 14 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 31 mars 2006
19 mars 2006 à 11:57
salut,
je sais pas comment utiliser ce code
merci de m'expliquer comment faire ..
(je debute)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 janv. 2006 à 16:47
Les , le tableau pas franchement nécessaire, les attributs html délimités par de simples quotes au lieu de guillemets.
Niveau php, utilise de simples quotes pour les echo, ce sera plus lisible, surtout avec le html :
echo '[blabla ', $bla, ']';

Pour ce qui est d'une classe, je ne suis pas non plus convaincu ;-)
Xeonarno => tu penses à quoi au juste ?

Pour ma part, ce que je trouverai intéressant, ce serait une fonction (ou plusieurs ) qui n'affiche rien, mais qui renvoie juste les infos nécessaires, et laisse le soin de la mise en page à l'utilisateur de la fonction (ou des fonctions ;-) ).
cs_Isengard Messages postés 83 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 10 février 2006
20 janv. 2006 à 15:39
Voila voila j'ai modifié le niveau come vous me l'avez indiqué ^^ Je m'en remet à votre jugement :p

Sinon Malalam y'a que trois / quatres lignes de HTML ^^ c'est mes et mes qui vont pas ?

Malik> ah mais je sais que c'est pas très très compliqué de faire de la pagination (voici le mot ^^) mais c'est toujours un peu la galère à mettre en place, là c'est un système rapide ^^. Evidemment on peut faire plus evolué mais c'était pas vraiment le but ;)

Par contre pour la class je vois pas trop comment je pourrais tourner ça :/
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 janv. 2006 à 14:36
Parce qu'un débutant se sur estime toujours un peu...jusqu'à ce qu'il devienne confirmé, et là, il va se sous-estimer ;-)

Bref, ceci dit, je laisse ce code : c'est toujours utile, il est commenté, et hj'ai vu pire comme programmation :-) Ceci dit oui, ç'eut été mieux en 'débutant'.

Par contre le html est limite :-) Faudrait voir à réécrire ça au propre.
xeonarno Messages postés 21 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 20 août 2006
20 janv. 2006 à 14:34
Peux tu renommer ton code source par "Pagination". C'est le principe que tu crée... Mais sympa ton code ^^. essaye d'en faire une classe et là ca pourra être super intéressant.
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
20 janv. 2006 à 14:17
Pourquoi "Initié" ??? C'est débutant ça ! C'est d'ailleur un des premiers trucs que j'avais appris pour une galerie photo il y a des années... argh, émotion du souvenir :)
Rejoignez-nous