Multi-pagination

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 329 fois - Téléchargée 28 fois

Contenu du snippet

Suite à une sélection dans une base de données, vous vous retrouvez souvent avec un grand nombre d'enregistrements à afficher... trop pour une seule page... alors découpons :

Source / Exemple :


<? include("_connexion.php"); ?>
<HTML><BODY>

<? // sélectionne toutes les fiches de la table
$query="SELECT * FROM MA_TABLE";
$result = mysql_query($query);

$Nmax = 10; // nombre par page
$Ncur = 0; // n° de la fiche courante
$Ndeb = 0; // 1ère fiche transmise par l'URL
if(isset($num))
   $Ndeb=intval($num);

// tant qu'il y a des fiches
while (($val = mysql_fetch_array($result))
   && ($Ncur<$Nmax+$Ndeb)) {
   if($Ncur>=$Ndeb) {
      // affiche un champ
      echo $val["champ"]."<br>";
   }
   // une de plus
   $Ncur++;
} ?>

<br>

<table cellpadding=3><tr>
<? // Navigation
// Des fiches avant ?
if($Ndeb > 0) { ?>
   <td>
      <A href="?num=<? echo $Ndeb-$Nmax; ?>"
         >Retour</A>
   </td>
<? }
// Des fiches après ?
if($val) { ?>
   <td>
      <A href="?num=<? echo $Ncur; ?>">Suite</A>
   </td>
<? } ?>
</tr></table>

</BODY></HTML>
<? mysql_close(); ?>

Conclusion :


Merci à Didier

A voir également

Ajouter un commentaire

Commentaires

Messages postés
483
Date d'inscription
mardi 10 juillet 2001
Statut
Membre
Dernière intervention
12 juillet 2006

iubito: t'a tiré ça direct d'un site lol, sinon c pourri ton truc car ça affiche juste page précédente et apge suivante alors quil faudrait le numéro des pages !
A+
Messages postés
1
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
19 octobre 2003

Bravo johnkruger je préfère ton code!
Messages postés
629
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
9 octobre 2006

en fait tu gagnes du temps au moment de la requête, la clause LIMIT début, nombre sélectionne les nombres fiches à partir de début.
Messages postés
629
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
9 octobre 2006

hein ??? c peut-être une solution pour Oracle mais pour MySQL... hahaha tient je te file le code, tu te couchera moins bête ce soir !!! :P
<? $limit=40;
if (!$start) { $start=0;}
//Nb de résultats :
$query="SELECT count(truc) FROM table
WHERE machin";
$result = mysql_query($query)
or die ("La requête a échoué");
$line=mysql_fetch_array($result);
$nbmot=$line[0]; //Nbmot c le nombre d résultats...

//ta requête :
$query = "SELECT truc FROM table
WHERE machin
ORDER BY bidul
LIMIT $start,$limit";

$precedent=$start-$limit;
$suivant=$start+$limit;
$max=$suivant;
if ($suivant>$nbmot) $max=$nbmot;
if ($start>0)
{
print "<";
}
print "Résultat ".($start+1)." à $max sur $nbmot au total";
if ($suivant<$nbmot)
{
print ">>suivant>>";
}

voili voulou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.