Affichage page par page

slashf Messages postés 87 Date d'inscription vendredi 24 mars 2006 Statut Membre Dernière intervention 14 janvier 2011 - 8 mars 2009 à 13:31
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 8 mars 2009 à 22:31
bonjour a tous, voilà mon petit souci j'ai cherché sur google mais rien :( du coup j'ai pas eu le choix que de poster ce message, se que je cherche a faire c un affichage page par page jusque là c bon c fait, mais quand j'ai beaucoup de page genre 30 j'aimerai que seulement la 1er page et quelque page au milieu soit affiché ainsi que la page de la fin
exemple : 1 ... 5 6 7 8 9...30     dans cette exemple je suis a la page 7
mon bout de code est le suivant :

<?php //début 
                  //affichage pages par pages
                  $nbpages=ceil($nb_total/$limit);
                  // affichage de la première page si nécessaire (si nb total de pages supérieur à 5)
if($nbpages>2 and $page>=1){
    echo  "<td width='23' height='19' align='center' class='nb_recherche'> 1 </td> ";
    echo  "<td width='23' height='19' align='center' class='nb_recherche'> ...  </td> ";
    }
    //
    // AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST (LA PREMIERE PAGES EST 0)
if ($page>0){
    $precedent=$page-1;
    echo  "<td width='31' height='19' align='center' class='nb_recherche'>  <<    </td>";
    } /////
    // AFFICHAGE DES NUMEROS DE PAGE
$i=0;$j=1;
if($nb_total>$limit){
    while($i<($nbpages)){ //  pour limiter l'affichage du nombre de pages restantes
        if ($i>$page-2 and $i<$page+6){ //
            if($i!=$page)
            {echo "<td width='23' height='19' align='center' class='nb_recherche'> $j </td>";}
            else {echo "<td width='23' height='19' align='center' class='nb_rechercheOn'> $j </td>";}//met en gras le N° de la page en cours
            }//fin du if i>pge....
        $i++;$j++;}//fin du while i<nbpages
    }    //fin du if nbT>limit////////////////////////:
// AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
if($page<$nbpages-1){
    $suivant=$page+1;
    echo "<td width='31' height='19' align='center' class='nb_recherche'>     >>    </td>";
    }   
    // affichage de la dernière page si nécessaire
if($nbpages>3 and $page<$nbpages-3){
$fin=$nbpages-1;
    echo  "<td width='31' height='19' align='center' class='nb_recherche'>Fin</td>";
   

}// fin du else affichage des résultats.
// fin du si il y a eu saisie

// fin

1 réponse

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 mars 2009 à 22:31
salut

pour commencer une question de style :
90% de tes commentaires sont inutils, ils nous perdent dans des infos sans interret, et ca nous embrouille en plus de nous faire perdre notre temps

ton indentation nuit a la comprehention du script

utilise && et pas and quand tu ne fais pas d'effets de bords, car && est plus rapide.

utilise les boucles for plutot que while quand elles conviennent mieux.

a premiere vue, ca donnerait qqch comme ca :

<?php
$nbpages=ceil($nb_total/$limit);

// AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST (LA PREMIERE PAGES n'est pas 0)
if ($page != 0){
$precedent=$page-1;
echo "<td width='31' height='19' align='center' class='nb_recherche'> << </td>";
}

// affichage de la première page si nécessaire (si nb total de pages supérieur à 5)
if($nbpages>2 && $page>=1){
echo "<td width='23' height='19' align='center' class='nb_recherche'> 1 </td> ";
echo "<td width='23' height='19' align='center' class='nb_recherche'> ... </td> ";
}

if($nb_total>$limit){
for ($i = min(1, $page-2); $i<min($brpages, $page+6); $i++){
if($i!=$page){
echo "<td width='23' height='19' align='center' class='nb_recherche'> $i </td>";
}else{
echo "<td width='23' height='19' align='center' class='nb_rechercheOn'> $i </td>";
}
}
}

// AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
if($page != $nbpages-1){
$suivant=$page+1;
echo "<td width='31' height='19' align='center' class='nb_recherche'> >> </td>";
}

// affichage de la dernière page si nécessaire
if($nbpages>3 && $page<$nbpages-3){
$fin=$nbpages-1;
echo "<td width='31' height='19' align='center' class='nb_recherche'>Fin</td>";
}


mais j'ai pas teste, donc j'en suis pas sur.
0
Rejoignez-nous