Pagination avec SQL

Erwin -  
kari83 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -
J'ai une table avec 10.000 enregistrements articles. Je souhaite paginer ces articles : par exemple par 10, je sélectionne donc les 10 premiers engts en utilisant select top 10 idarticle... ! Comment redémmarer la sélection des 10 suivants; car je ne peux pas tout charger d'un seul coup, trop lourd sur internet. Je voudrais aussi pouvoir proposer à l'utilisateur d'accéder au xème article, et proposer donc les 9 qui suivent. Je voudrais enfin proposer à l'utilisateur qu'il puisse faire previous et next pour atteindre les 10 engts précédents et les dix suivants.
Je travaille en coldfusion et sql server 2000.

Merci.

1 réponse

  1. kari83 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   2
     
    $query="select code_gest,libelle_gestf,libelle_gesta from gestionnaire";
    $result=mysql_query($query); ?>

    <script type="text/javascript">
    function affichePage (nbpages,page){
    for (i=1; i<=nbpages; i++){
    if (i == page) {//Affichage du calque i
    var divns6 = document.getElementsByTagName("div")
    divns6["page"+i].style.display = "inline";
    } else {//Ne pas afficher le calque i
    var divns6 = document.getElementsByTagName("div")
    divns6["page"+i].style.display = "none";
    }
    }
    }
    </script>
    <?
    $cpt = mysql_num_rows($result);//Nombre de résultats de la requète
    $rpp = 25;//Nombre de résultats à afficher par page
    $nbpages = ceil($cpt / $rpp);//Calcul du nombre de pages total
    $cpt2 = 0;//Compteur permettant de limiter le nombre de résultats par page à rpp
    $cpt3 = 0;//Compteur permettant vérifier lorsque tous les enregistrement ont étés parcourus
    $cpt4 = 1;//Compteur permettant de donner un id à chaque calque
    if ($nbpages > 1) {
    //Affichage des liens vers les numéros de page
    echo "<p class='ecran'>Page :";
    for ($i=1; $i<=$nbpages; $i++) {
    echo " <a href=\"#\" onClick=\"Javascript:affichePage(".$nbpages.",".$i.")\" class='ecran'>".$i."</a>";
    }
    echo "</p>";
    }
    while($ligne=mysql_fetch_array($result))
    {
    if ($cpt2 == 0) {
    if ($cpt4 == 1) {//Lors de la requète, on affiche les premiers enregistrements
    echo "<div id=\"page1\" style=\"display: inline;\">";
    } else {//Ensuite, les enregistements suivants sont cachés
    echo "<div id=\"page".$cpt4."\" style=\"display: none;\">";
    }

    //Affichage des calques ?>
    <p align="center"><font size="4"> <b><i>Liste des gestionnaires (français/arabe)</b></i> </font></p>
    <table border="1" cellpadding="0" cellspacing="0" width="100%">
    <tr>
    <td width="15%"><b>Code gestionnaire</b></td>
    <td width="52%"><b>Gestionnaire </b></td>
    <td width="52%"><b><p align="right">ÇáãÓíÑ </b></td>
    </tr>
    <? $cpt4++;
    }
    $cpt2++;
    $cpt3++;
    ?>
    <tr>
    <td width="20%"> <? echo $ligne['code_gest']?></td>
    <td width="38%"> <? echo $ligne['libelle_gestf']?></td>
    <td width="42%"><p align="right"> <? echo $ligne['libelle_gesta']?></td>
    </tr>
    <?
    if ($cpt2 == $rpp || $cpt3 == $cpt) {//Lorsque l'on affiché rpp enregistrements ou que tous les enregistrements ont été affichés, on ferme le calque
    echo "</table></div>";
    $cpt2 = 0;
    }}?>

    <?}
    }
    2