PcKULT.NET - La référence en informatique

  • Increase font size
  • Default font size
  • Decrease font size
  • default color
  • black color

PcKULT.NET - Recrute

PcKULT.NET est présentement à la recherche de passionnés d'informatique qui veulent se greffer à l'équipe de PcKULT.NET. Si l'aventure vous intéresse, veuillez communiquer avec nous.

webmaster@pckult.net


Source : Pagination sous php

E-mail Imprimer PDF

codesourceL'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!
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 '&nbsp;';
}
?>
</td>
<td>&nbsp;</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 '&nbsp;';
}
?>

</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







Ajouter cette page à votre Digg-Like préféré
Reddit! Del.icio.us! JoomlaVote! Google! Live! Facebook! Technorati! StumbleUpon! Spurl! Furl! Blogmarks! Yahoo! FeedMeLinks!
Commentaires (1)Add Comment
probleme de pagination
Ecrit par elinformatiko31, mai 31, 2007
je vien de regarder le code php qu'il y avait et g pas tout compris peut etre que vous pouvez m'eclairer
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

Ecrivez un commentaire
quote
bold
italicize
underline
strike
url
image
quote
quote
smile
wink
laugh
grin
angry
sad
shocked
cool
tongue
kiss
cry
Réduire l'éditeur | Agrandir l'éditeur

busy
Mis à jour ( Jeudi, 23 Novembre 2006 18:19 )  

Sondage

Votre fournisseur Internet
 

Publicités