begin process at 2012 05 27 19:52:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > DECOUPER LE RESULTAT D'UNE REQUETE SUR PLUSIEURS PAGES

DECOUPER LE RESULTAT D'UNE REQUETE SUR PLUSIEURS PAGES


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :pagination, mysql, requête, array, tableaux Niveau :Débutant Date de création :24/08/2005 Vu :12 416

Auteur : MATHIS49

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bon c'est du déjà vu, mais celui ci permet aux handicapés de se balader de pages en pages, grâce notamment aux tabindex et au fait que tous les numéros de pages soient affichés, aussi c'est adaptable à toutes les résolutions d'écran.
Aussi grâce à CSS c'est très "customisable".
Bon je pense qu'on peut encore l'améliorer notamment à ce niveau "$page = "trombinoscope.php?";" mais je ferais ça dans une prochaine Maj si j'ai le temps.
Laisser moi vos commentaires ;)



Source

  • ##########################
  • La fonction :
  • ##########################
  • <?php
  • //Fonction découp_page
  • //Par Mathis_mathis(at)hotmail.com
  • //Merci à crapo
  • function decoupe_page($page, $rqt, $nb_enreg, $lim)
  • {
  • if($lim==""){$lim=0;}
  • $tab[0]= mysql_query("$rqt LIMIT $lim, $nb_enreg");
  • $tab[1] = mysql_query($rqt)or die("ERREUR REQUETE DECOUPE PAGE :".mysql_error()); //requete
  • $tab[2]= mysql_numrows($tab[1]); //nombre de ligne en tout
  • if ($tab[2] > $nb_enreg) //si le nombre de ligne en tout est superieur au nombre de ligne a afficher
  • {
  • $i=1;
  • $j=0;
  • $max= $tab[2]/$nb_enreg; //on divise le nombre de total de ligne par le nombre de ligne a afficher
  • $max=ceil($max); //le resultat est un nombre arrondi
  • $tab[3] = "<ul>\n<li>Page : </li>\n";
  • $tabindex=500;
  • if ($lim!=0)
  • {
  • $tab[3] .= "<li><a href='".$page."lim=".($lim-$nb_enreg)."' title='Aller a la page precedente' tabindex='$tabindex'> &lt;&lt;</a></li>\n";
  • }
  • while ($i <= $max)
  • {
  • $tabindex++;
  • if($lim==$j){$tab[3] .= "<li class=\"decoup_page_actif\">$i</li>\n";}
  • else {$tab[3] .= "<li><a href=\"".$page."lim=$j\" title=\"Aller a la page $i\" tabindex=\"$tabindex\">$i</a></li>\n";}
  • $j+=$nb_enreg;
  • $i++;
  • }
  • if ($lim<($tab[2]-$nb_enreg))
  • {
  • $tab[3] .= "<li><a href='".$page."lim=".($lim+$nb_enreg)."' title='Aller a la page suivante' tabindex='".($tabindex+1)."'>&gt;&gt;</a></li>";
  • }
  • $tab[3] .= "</ul>\n";
  • }
  • return $tab;
  • }
  • ?>
  • ##########################
  • Appel de la fonction :
  • ##########################
  • <?php
  • //Appel de la fonction de découpe automatique de la page
  • $nb_enreg = 50; //Nombre d'enregistrer visible par page
  • $page = "trombinoscope.php?"; //Nom de la page
  • $rqt ="SELECT photos FROM membres"; //Requete à executer
  • $lim = $_GET["lim"];
  • $pg = decoupe_page($page, $rqt, $nb_enreg, $lim);
  • echo"<div id=\"decoup_page\">$pg[3]</div>"; //Afichage du découpage
  • ?>
  • ##########################
  • Exemple présentation en CSS
  • ##########################
  • /* ## PRESENTATION DECOUPE PAGE ## */
  • #decoup_page {
  • clear: both;
  • font-weight: bold;
  • margin:0px;
  • font-size:0.95em;
  • padding-bottom:10px;
  • }
  • #decoup_page li{
  • float:left;
  • margin-right:3px;
  • list-style-type:none;
  • }
  • #decoup_page a{
  • color:#0000CC;
  • }
  • #decoup_page a:visited{
  • text-decoration:none;
  • }
  • .decoup_page_actif{
  • background-color:#FF6600;
  • }
##########################
La fonction :
##########################

<?php
//Fonction découp_page
//Par Mathis_mathis(at)hotmail.com
//Merci à crapo

function decoupe_page($page, $rqt, $nb_enreg, $lim)
{

  if($lim==""){$lim=0;}
  
  $tab[0]= mysql_query("$rqt LIMIT $lim, $nb_enreg");
  $tab[1] = mysql_query($rqt)or die("ERREUR REQUETE DECOUPE PAGE :".mysql_error()); //requete
  $tab[2]= mysql_numrows($tab[1]); //nombre de ligne en tout

  if ($tab[2] > $nb_enreg) //si le nombre de ligne en tout est superieur au nombre de ligne a afficher
  {
    $i=1; 
	$j=0;

    $max= $tab[2]/$nb_enreg; //on divise le nombre de total de ligne par le nombre de ligne a afficher
    $max=ceil($max); //le resultat est un nombre arrondi


    $tab[3] = "<ul>\n<li>Page : </li>\n";
	
	$tabindex=500;
	
	if ($lim!=0)
    { 
	$tab[3] .= "<li><a href='".$page."lim=".($lim-$nb_enreg)."' title='Aller a la page precedente' tabindex='$tabindex'> &lt;&lt;</a></li>\n";
	}
	

    while ($i <= $max)
    { 
	  $tabindex++;
      if($lim==$j){$tab[3] .= "<li class=\"decoup_page_actif\">$i</li>\n";} 
      else {$tab[3] .= "<li><a href=\"".$page."lim=$j\" title=\"Aller a la page $i\" tabindex=\"$tabindex\">$i</a></li>\n";}
      $j+=$nb_enreg;
      $i++;
	  
    }
	
	if ($lim<($tab[2]-$nb_enreg))
    {
	$tab[3] .= "<li><a href='".$page."lim=".($lim+$nb_enreg)."' title='Aller a la page suivante'  tabindex='".($tabindex+1)."'>&gt;&gt;</a></li>";
 	}
	
    $tab[3] .= "</ul>\n"; 
  }
  return $tab;
}
?>






##########################
Appel de la fonction :
##########################
<?php
//Appel de la fonction de découpe automatique de la page
$nb_enreg = 50; //Nombre d'enregistrer visible par page
$page = "trombinoscope.php?"; //Nom de la page
$rqt ="SELECT photos FROM membres"; //Requete à executer
$lim = $_GET["lim"];
$pg = decoupe_page($page, $rqt, $nb_enreg, $lim);
echo"<div id=\"decoup_page\">$pg[3]</div>"; //Afichage du découpage
?>



##########################
Exemple présentation en CSS
##########################

/* ## PRESENTATION DECOUPE PAGE ## */
#decoup_page {
clear: both;
font-weight: bold;
margin:0px;
font-size:0.95em;
padding-bottom:10px;
}
#decoup_page li{
float:left; 
margin-right:3px;
list-style-type:none;
}
#decoup_page a{
color:#0000CC;
}
#decoup_page a:visited{
text-decoration:none;
}
.decoup_page_actif{
background-color:#FF6600;
}



 Sources du même auteur

Source avec Zip LISTER EMAIL D'UN TEXTE
LISTER DATE ENTRE 2 DATES
Source avec Zip Source avec une capture COMPTEUR DE VISITES EN TEMPS RÉEL

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PAGINATION JAVASCRIPT PHP MYSQL par cod57
SYSTÈME DE PAGINATION AVEC BDD ET IMAGES (FICHIERS) par begueradj
Source avec Zip Source avec une capture MYPHPCOM 2.1: SYSTÈME DE COMMENTAIRE PHP/MYSQL par Dariumis
Source avec Zip PORTAGE PDO DE MES ANCIENNES PUBLICATIONS par 8Tnerolf8
Source avec Zip Source avec une capture AFFICHAGE DE DONNÉES MYSQL PAGE PAR PAGE par sfxlord

Commentaires et avis

Commentaire de coockiesch le 24/08/2005 10:58:48

Salut!
C'est pas mal, mais ca me semble un peu bourrin de tout récupérer juste pour compter les enregistrements, non?

Autrement, utiliser ' ', c'est plus rapide que " " ...

Juste pour comparer, voici ce que j'avais fais:
http://www.phpcs.com/code.aspx?ID=24067

@++

R@f

Commentaire de Anthomicro le 24/08/2005 11:09:10

Salut,

c'est clair qu'il vaut mieux récupérer seulement les enregistrements nécessaires, et éviter les requêtes à base de LIMIT mais plutôt se baser sur l'id unique autoincrémenté pour afficher les pages avec un between par exemple, ça sera largement plus rapide...

Commentaire de MATHIS49 le 24/08/2005 11:16:25

Bon je vais étudier ca et voir ton systeme Anthomicro ;) et Cookiech merci pour ta remarque qui est pertinente.

Commentaire de charlyx le 07/05/2006 19:44:00

salut
decoup_page tout est nomme "decoup_page" on comprend plus rien
il manque plus que des variables $decoup_page :
il manque le reste if (!$dbh1 = mysql_connect("localhost",'root','')){
  echo  "<br> connexion impossible " ;
}
if (!$dbh = mysql_select_db($basedb,$dbh1)){
  echo  "<br> connexion impossible " ;
mysql_close();

Commentaire de jeremou le 13/09/2006 02:40:58

Salut,

Je sais que cette source date, et je ne l'ai pas lu en entier mais pour compter toutes les lignes d'un résultat avec l'option LIMIT, il y a plus simple que ce que vous faites en utilisant la syntaxe suivante :
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE condit LIMIT 0,30;
SELECT FOUND_ROWS();

a+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pb de deux tableaux mysql_fetch_array() [ par amine124 ] Bonjour, je veux comparer deux entités (tableaux) dans une bdd mysql, et exactement je cherche si un élément précis (code_elv) du premier tableau s'i Design et requête [ par didygwatinik ] Bonjour, Voilà mon problème après avoir cliqué sur recherche dans mon site, j'affiche le résultat d'une requête qui contient une image à gauche, et 3 Pagination [ par Dranog ] Bonjour, je souhaiterais faire un système de pagination à partir de ce code : <?php Connection_mySql(); mysql_select_db("test") or die("erreur probleme de pagination [ par diarrassouba ] bjr a tous,jai un probleme avec la pagination de mon moteur de recherche,lorsque je fai une recherche sur un article il m affiche un message d erreur( Warning: mysql_fetch_array() [ par Denzel68 ] Bonjour voila je faix un petit bloc de login mais je un petit problème pour récupéré les donnes de l'avatar: Warning: mysql_fetch_array(): supplied ar PDO et une erreur de requête [ par fabienfs ] Hello, M'initiant actuellement à PDO avec MySQL, je me pose la question suivante : y a t'il une gestion des erreur en PDO comme avec mysql_query ? Lo PAGINATION DES RESULTATS D'UNE REQUETE MULTICRITERE [ par armelkoudou ] Je sollicite l'aide de personne plus avancées que moi pour m' apporter un solution . je n' arrive pas à paginer les resultats de ma recherche multi un probleme avec la fonction mysql_fetch_array() [ par soukaouta ] bonjour tt le monde J'obtiens cette erreur lorsque je tente de récupérer une donnée située dans ma base MySQL en local via WAMPServer. Warning: mysql_ mysql_result(): supplied argument is not a valid MySQL result resource [ par zzzzzz ] Bonjour, Je débute et j'en viens à mes premiers problèmes. J'ai une classe mysql, j&#8217;exécute une requete : $result = Mysql::MyQuery("SELECT COU Bien utiliser mysql_query('SET NAMES UTF8') [ par jmp kjm ] Bonjour, Mon site ramant un peu j'ai fait une analyse de performances et voici deux conclusions : - 30,9 % du temps d'exécution est passé dans la req


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales