L'affichage des données sous forme de liste est très répandu sur les
sites de contenu. Des scripts de forum ou de content manager utilisent
abondamment ce type de solution afin d'afficher les 10 derniers
articles en Home Page et propose de visualiser les suivants avec un
système de pagination.
Ce système se base très souvent
sur la fonctionnalité LIMIT de MySQL. Mais depuis la version 7.1 de
PostgreSQL, cette méthode est fonctionnelle sur les deux SGBD Open
source les plus utilisés du marché. Nous allons donc voir ici comment afficher cette pagination. Il ne vous restera qu'à adapter le code selon votre site.
Bonne lecture!
Bonne lecture!
CODE PHP :
<?php
//FONCTION?>
//fonction permettant de récupérer le nombre maximum d'image présente dans la table.
function nbElement(){
$rs = null;
$data = array();
$rs = mysql_unbuffered_query("SELECT COUNT(idimage) FROM image");
$data = mysql_fetch_row($rs);
return $data[0];
}
// INITALISATION
$nbRec = 10; // Nombre d'image qui s'affichera par page
$position = 0; //Position de lecteur sur le jeux d'enregistrement(param1).
$data = array();
$image = array();
$rs = null;
$nbData = 0;
$i = 0;
if($HTTP_GET_VARS['position']!='') $position = $HTTP_GET_VARS['position'];
//Pas la peine d'exécuter x fois la même fonction je le fais passer en paramètre.
if($HTTP_GET_VARS['nbelement']!='')$nbElement = $HTTP_GET_VARS['nbelement'];
else $nbElement = nbElement();
//OPERATION SQL
$requette = "SELECT nom, width, height FROM image ORDER BY nom LIMIT ".$position.",".$nbRec;
$rs = mysql_unbuffered_query($requette,$rsConnexion);
while($data = mysql_fetch_row($rs)){
$image[$i]['nom'] = $data[0];
$image[$i]['width'] = $data[1];
$image[$i][height] = $data[2];
$i++;
}
$nbData = $i //Récupère le nombre d'enregistrement.
mysql_free_result($rs);
unset($requette,$data,$i); //Pour taper un style! ;)
mysql_close($rsConnexion); //Nous avons plus besoin de connexion
CODE HTML :
<table>
<tr>
<td>
<? // Pour le bouton précédent
if(($position-8)>=0){
echo '<a xhref="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($position+$nbRec)">Précédent</a>
}else{
echo ' ';
}
?>
</td>
<td> </td>
<td>
<? //Pour le bouton suivant
if(($position+$nbRec)<=$nbElement){
echo '<a xhref="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($position+$nbRec)">Suivant</a>
}else{
echo ' ';
}
?>
</td>
</tr>
<tr>
<td>Nom</td>
<td>Largeur</td>
<td>Hauteur</td>
</tr>
<? for($i=0;$i<$nbData;$i++){ ?>
<tr>
<td><img height="<? echo $image[$i]['height']; ?>" width="
<? echo $image[$i]['width']; ?>" xsrc="<? echo $image[$i]['nom']; ?>"></td>
<td><? echo $image[$i]['width']; ?></td>
<td><? echo $image[$i]['height']; ?></td>
</tr>
<? } ?>
</table>
Pour ceux qui voudrait un affichage des liens du type suivant : [1-10][11-20][21-30] ...
<?
for($i=0;$i<ceil($nbElement/$nbRec);$i++) {
$sup = ($i+1)*$nbRec;
$inf = ($sup-$nbRec)+1;
if($position == ($i*$nbRec)) echo '<a xhref="http://www.pckult.net/#" style="color:#FF0000;">['.$inf.' - '.$sup.']</a>'.chr(13);
else echo '<a xhref="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($i*$nbRec).'">['.$inf.' - '.$sup.']</a>'.chr(13);
}
?>
Source original : developpez.com
Commentaires (1)

Ecrivez un commentaire






















En fait mon probleme c'est que je ve afficher ma table de ma bdd sous mysql juska la ca marche.
mAIS MAINTENANT mon probleme c'est que je veux l'afficher que par 30 enregistrments avec des boutons suivant et precedent
Vous comprenez bien que je vais pas afficher 1002 enregistrements de ma table sur une page php