Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DECOUPER LE RESULTAT D'UNE REQUETE SUR PLUSIEURS PAGES


Information sur la source

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;
}

Commentaires et avis

signaler à un administrateur
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

signaler à un administrateur
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...

signaler à un administrateur
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.

signaler à un administrateur
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();

signaler à un administrateur
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

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 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource [ par stella2809 ] Bonjour, j'obtiens un message d'erreure en voulant recuperer des données d'un agenda sur l'accueil d'un site : Warning: mysql_fetch_array(): supplied array et formulaire [ par laubro ] Bonjourj'ai encore des soucis avec les tableauxvoils, je récuprèe des données dans des champs texte dans un formulaire, je veux pouvoir les modifier e insertions multiples (case à cocher, champs ...) [ par PatX ] Bonjour !J'ai un petit soucis avec l'administration de mon menu : le but du jeu, c'est de cr&#233;er les liens d'un menu en les ins&#233;rant dans une Equivalence de mysql_fetch_array [ par ansdodou ] Je voudrai savoir quelle est l'équivalent de la fonction mysql_fetch_array pour un connection ODBC car la fonction ODBC_fetch_array ne fonctionne pas faire 2 fetch_array sur une meme requete [ par gregou9 ] j'aimerais pour une meme requete faire 2 fois : $aa=mysql_fetch_array($bb);je m'explik: - une fois pour l'utiliser pour l'affichage d'informations- pu menu deroulant [ par jphilippev ] bonjourje crée un menu déroulant :  echo "&lt;SELECT NAME='gros'&gt;"; $sql = mysql_query("SELECT gros FROM log where id")or die(mysql_error());  $tbl Restauration BBD ne fonctionne pas [ par LiTtLeBuBu ] Bonjour,Voila j'ai récupérer un script sur le site pour sauvegarder ma BDD. J'ai modifié le script pour enlever les fonctions envoi par mail et FTP. J Créer des pages au bout d'un certain nombre [ par DjChat ] Bonjour a tous, j'ai une page qui affiche des images de photos des membres qui sont cliquable pour arriver sur leurs profils. Sur une page ils y a t probleme array/requete [ par ninho44 ] Bonjour.Voila j'ai un petit souci avec mon code PHP. $requete=mysql_query("select nom,prenom from employe where code=('".$employe."')");$req=mysql_fet


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.