LA PAGINATION (AFFICHAGE PAR PAGE)

cs_cress Messages postés 2 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 10 juin 2004 - 10 juin 2004 à 19:28
cs_skyman272 Messages postés 34 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 26 novembre 2007 - 27 janv. 2006 à 10:39
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/12919-la-pagination-affichage-par-page

cs_skyman272 Messages postés 34 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 26 novembre 2007
27 janv. 2006 à 10:39
Bonjour, sur le premier script, lorsque je selectionne un lien vers les pages suivantes, ça ne marche pas...
Quelqu'un aurait il trouvé une solution depuis ?
Merci
milkasoprano Messages postés 239 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 1 juillet 2007
15 nov. 2005 à 14:15
lol clair moi jai testé je suis pareil que CRESS ! ya un sacré bug et je voudrai ajouté un where sa merde
trackercheese Messages postés 11 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 23 janvier 2014
25 mai 2005 à 14:58
Bonjour, je recherchais un script comme celui en haut de page mais avec en plus les fonctions Page suivantes, Page précédentes, je m'explique:

sur le resultat d'une requette on affiche
1 - PAUL
2 - PIERRE
3 - JACQUES
4 - ANDRE
5 - DEBILO
6 - ARTHUR
7 - COUET
......ETC
ET COMME AU TOTAL, LE RESULTAT CONTENAIT PLUS DE 3000 ENREGISTREMENTS, A RAISON DE 3 ENREGISTREMENTS AFFICHEE PAR PAGE, CA FAISAIT PLUS DE 1000 PAGES...

Et bein, tu va pas me croire... ON AVAIT + DE 1000 LIENS VERS LES PAGES. :-O

Donc du coup j'ai un peu modifier le truc et en bas de chaque page, on a maintenant:

1 2 3 4 5 >> si je clique sur le >>, on a :
<< 6 7 8 9 10 >> etc etc

C'est un peu mieux non?
voila, je vous donne le truc...

// EN LOCAL, TU METS ICI LE NOM DE TA BASE,TES PARAMETRES ET TOUT KOI......
// ah oui, dans l'exemple, on a une table id composée d'un champ id auto incrementé et d'un champ nom

define ('DB_HOST','localhost');
define ('DB_USER','root');
define ('DB_BASE','NOM DE TA BASE');
define ('DB_PASSWORD','');

// ON SE CONNECTE A MYSQL
$track=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die(''.mysql_error());
// ON CHOISI LA BASE
mysql_select_db(DB_BASE,$track) or die(''.mysql_error());



//----------------------------------------------------------------

// Déclaration des variables
// ICI TU CHANGES LES VALEURS SI TU VEUX, LA PREMIERE VARIABLE N'A PAS CHANGE PAR RAPPORT AU 1ER SCRIPT, LA DEUXIEME C POUR PARAMETRER LE NOMBRE DE LIEN VERS LES PAGES QUE TU VEUX AFFICHER EN MEME TEMPS...BON FORCEMENT, SI TU METS 1000, CA SERT A RIEN QUE JE ME SOIS DECARCASSER!!!

$nb_rep_pages=1; // Nombre de réponses par pages
$nb_liens_pages=4; // Nombre de liens vers les pages en bas de page

// Initialisation des variables
if(empty($page)) $page = 1;
if(empty($fin)){
$sql = "SELECT COUNT(*) as qte FROM id";
$p = mysql_query($sql,$track);
$fin = mysql_result($p,"0","qte");
}

// Déclaration de la variable début
$debut = ($page - 1) * $nb_rep_pages;

//la requète de selection des messages
$req = mysql_query("SELECT id,nom from id Order by id Asc LIMIT $debut,$nb_rep_pages ") or die ("erreur requete");

// Ici on calcul le nombre de page
$nbpages = ceil($fin / $nb_rep_pages); // Ici on arrondi


//on ressort le contenu en boucle, et on stock dans un tableau avec mysql_fetch_array
while( $contenu = mysql_fetch_array ($req)){
//on affiche le résultat
print 'ID : '.$contenu[id].'
';
print 'NOM : '.$contenu[nom].'
';
print '<hr>';
print '
';
}

// Affichage par page :)
if(empty($pointeur)) $pointeur = 1;

if ($pointeur - $nb_liens_pages >= 1){ //Test s'il reste des pages a afficher avant, auquel cas on affiche le << pour 'precedent'
$c = $pointeur - $nb_liens_pages;
echo " << ";
}

for($i = 1 ;$i <= $nb_liens_pages ;$i++){ //Boucle pour les 'nb_liens_pages' liens a afficher
$j=($pointeur+$i)-1;
if ($j <= $nbpages){
echo "$j";
echo " ";

}
}

if ($pointeur + $nb_liens_pages <= $nbpages){ //Test s'il reste des pages a afficher apres, auquel cas on affiche le >> pour 'suivantes'
$b = $pointeur + $nb_liens_pages;
echo " >> ";
}

//on referme la connexion
mysql_close();

//----------------- FIN DU SCRIPT --------------------------------




Si ya des probs, sdewevre@tiscali.fr.
Passez voir mon site aussi ! : http://trackercheese.free.fr
anouartepdr Messages postés 11 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 13 avril 2007
18 mai 2005 à 21:33
je vous conseil d' executer cet exercie dabord la base sur mysql puuis inmplementer ce sode php comme il est et tu vas bien comprendre
//////////////
CREATE TABLE vaches (
id int(11) NOT NULL auto_increment,
surnom varchar(50) NOT NULL default '',
prenom varchar(20) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;

INSERT INTO vaches VALUES (1, 'Qui aime les frites', 'Margueritte');
INSERT INTO vaches VALUES (2, 'Belle clochette', 'Roussette');
INSERT INTO vaches VALUES (3, 'La starlette', 'Blanchette');
INSERT INTO vaches VALUES (4, 'Petite Pataude', 'Noireaude');
INSERT INTO vaches VALUES (5, 'Toujours chouette', 'Paquerette');
INSERT INTO vaches VALUES (6, 'Tête de linotte', 'Cowpilot');
INSERT INTO vaches VALUES (7, 'Qui saute partout', 'Kancowroo');
INSERT INTO vaches VALUES (8, 'La gentille', 'Cowchenille');
INSERT INTO vaches VALUES (9, 'Le plus bizarre des cows', 'Haricow');

//////////////////////////////////////////////////
<html>


//=========================================
// includes du fichier fonctions
//=========================================
<?php
function displayNextPreviousButtons($limite,$total,$nb,$page) {
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo ''.\"\n\";
if($limite != 0) {
echo ''."\n";
echo '<form action="'.$page.'" method="post">'."\n";
echo ''."\n";
echo ''."\n";
echo '</form>'."\n";
echo ', '.\"\n\";
}
if($limiteSuivante < $total) {
echo ''."\n";
echo '<form action="'.$page.'" method="post">'."\n";
echo ''."\n";
echo ''."\n";
echo '</form>'."\n";
echo ', '.\"\n\";

}
echo '
'."\n";
}


function affichePages($nb,$page,$total) {
$nbpages=ceil($total/$nb);
$numeroPages = 1;
$compteurPages = 1;
$limite = 0;
echo ''.\"\n\";
while($numeroPages <= $nbpages) {
echo ''.$numeroPages.', '.\"\n\";
$limite = $limite + $nb;
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
if($compteurPages == 10) {
$compteurPages = 1;
echo '
'.\"\n\";
}
}
echo '
'."\n";
}

//récupération de $limite
if(isset($_GET['limite']))
$limite=$_GET['limite']; else $limite=0;

function verifLimite($limite,$total,$nombre) {
// je verifie si limite est un nombre.
if(is_numeric($limite)) {

// si $limite est entre 0 et $total, $limite est ok
// sinon $limite n'est pas valide.
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
// j'assigne 1 à $valide si $limite est entre 0 et $max
$valide = 1;
}
else {
// sinon j'assigne 0 à $valide
$valide = 0;
}
}
else {
// si $limite n'est pas numérique j'assigne 0 à $valide
$valide = 0;
}
// je renvois $valide
return $valide;
}



?><?php

//=========================================
// information pour la connection à le DB
//$host 'localhost';
$user = 'root';
$pass = '';
$db = 'test';

//=========================================
// initialisation des variables
//=========================================
// on va afficher 5 résultats par page.
$nombre = 5;
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];

//=========================================
// connection à la DB
//$link mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

//=========================================
// requête SQL qui compte le nombre total
// d'enregistrements dans la table.
//$select 'SELECT count(id) FROM vaches';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];

//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage.
//$select 'select prenom,surnom FROM vaches ORDER BY prenom ASC limit '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

//=========================================
// si on a récupéré un resultat on l'affiche.
//=========================================
if($total) {
// début du tableau
echo ''.\"\n\";
// première ligne on affiche les titres prénom et surnom dans 2 colonnes
echo '----
';
echo 'Prénom, ';
echo 'Surnom, ';
echo ''.\"\n\";
// lecture et affichage des résultats sur 2 colonnes
while($row = mysql_fetch_array($result)) {
echo '----
';
echo ''.$row['prenom'].', ';
echo ''.$row['surnom'].', ';
echo ''.\"\n\";
}
echo '
'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);

//=========================================
// si le nombre d'enregistrement à afficher
// est plus grand que $nombre
//=========================================
if($total > $nombre) {
// affichage des liens vers les pages
affichePages($nombre,$page,$total);
// affichage des boutons
displayNextPreviousButtons($limite,$total,$nombre,$page);
}
?>

</html>
Destrucwar Messages postés 1 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 26 juin 2004
26 juin 2004 à 16:46
slt,
sur ce script est il possible d'ajouter un bout de code permettant d'aller a la page precedente ??
Merci
cs_cress Messages postés 2 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 10 juin 2004
10 juin 2004 à 19:28
bonjour, j'ai essayé d'intégrer ce code dans le mien. J'arrive bien à visualiser la première page avec le nb de champ souhaité et les liens vers le nombre de pages nécessaires se créent aussi. Cependant lorsque je sélectionne un lien mes résultats de recherhce sont nuls car mes critères dans ma Zséquence sql (dans le where) sont perdus. J'ai essayé de passer mes critères par url mais sans succés. Pouvez-vous m'aider?

merci
Rejoignez-nous