LA PAGINATION (AFFICHAGE PAR PAGE)

Signaler
Messages postés
2
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
10 juin 2004
-
Messages postés
34
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
26 novembre 2007
-
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

Messages postés
34
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
26 novembre 2007

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
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

lol clair moi jai testé je suis pareil que CRESS ! ya un sacré bug et je voudrai ajouté un where sa merde
Messages postés
11
Date d'inscription
mercredi 26 mars 2003
Statut
Membre
Dernière intervention
23 janvier 2014

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
Messages postés
11
Date d'inscription
dimanche 24 avril 2005
Statut
Membre
Dernière intervention
13 avril 2007

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>
Afficher les 6 commentaires