IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Modification d'un script de pagination au niveau de la navigation


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut Modification d'un script de pagination au niveau de la navigation
    Bonjour tout le monde.
    Je viens posé mon cas désespérer ici.
    Je réalise en ce moment et suite à la lecture d'un tuto, une pagination automatisé.

    Mon hic est d'afiché un grand nombre de page.... effectivement affiché 100 pages en une ligne c'est loin d'être top!

    Avec l'aide du tuto, j'ai mis au point ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //Nombre d'élément a affiché par page.
        $message_par_page = "20";
     
        //On recherche le nombre de film à affiché.
        $select0 = "SELECT count(id_film) FROM film";
        $requette0 = @mysql_query($select0, $connect);
        $reponse0 = @mysql_fetch_assoc($requette0);
     
        $nb_total_message = $reponse0['count(id_film)'];
     
        //Nombre de page à affiché.
        $nombre_page = ceil($nb_total_message/$message_par_page);
    Plus bas dans ma page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    echo "<p class=\"Balise-P-001\"><a class=\"Text-Style-001\">Page:</a>";
     
        //On chée une boucle for qui va placé les ocurences de pages.
        for($i = 1; $i <= $nombre_page; $i++)
        {
            //Si la page en cours est identique à ce qui est retourné de la boucle, on affichera donc la page entre crochet.
            if($i == $page_actuelle)
            {
                echo "&nbsp;<a class=\"Text-Style-002\">[".$i."]</a>";
            }
            else
            {
                echo "&nbsp;<a href=\"consultation.php?selection=films&page=".$i."\" title=\"Consulter la page ".$i." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">".$i."</a>";    
            }
        }
    Existerais t il une solution pour qu'au lieu d'avoir:
    Page: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2526 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 4950 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 7374 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 9798 99 100 101 102 103 104 105 106 107 108 109
    on ais :
    << < ... 20 21 22 23 24 25 26 27 28 29 ... > >>
    Je suppose que je vais passé pour un noob mais après plusieurs jours de recherches infructueuses c'est le désespoir qui me pousse à demander de l'aide.

    Merci beaucoup pour vos indications
    Cordialement.

  2. #2
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Salut pour éviter, ce que je fais :
    - je recupere la position actuelle (z)
    - j'affiche << et <
    - j'affiche x avant avec une boucle pour decrementer
    - j'affiche y après avec une boucle pour incrémenter
    - j'affiche > et >>
    Apres le seul point délicat c'est de gérer quand on est à l'une des extrémité. pour cela il suffit juste de quelques petits tests pour vérifier z - x > 0 et z + y < nombre max.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    Un truc dans le genre devrait faire l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
                echo "&nbsp;<a href=\"consultation.php?selection=films&page=0\" title=\"Consulter la page 0 des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">«</a>";
                echo "&nbsp;<a href=\"consultation.php?selection=films&page=".min(0, $page_actuelle - 1)."\" title=\"Consulter la page ".min(0, $page_actuelle - 1)." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">‹</a>";
        for($i = min(0, $page_actuelle - 10); $i <= max($page_actuelle + 10, $nombre_page); $i++)
        {
            //Si la page en cours est identique à ce qui est retourné de la boucle, on affichera donc la page entre crochet.
            if($i == $page_actuelle)
            {
                echo "&nbsp;<a class=\"Text-Style-002\">[".$i."]</a>";
            }
            else
            {
                echo "&nbsp;<a href=\"consultation.php?selection=films&page=".$i."\" title=\"Consulter la page ".$i." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">".$i."</a>";    
            }
        }
                echo "&nbsp;<a href=\"consultation.php?selection=films&page=".max($page_actuelle + 1, $nombre_page)."\" title=\"Consulter la page ".max($page_actuelle + 1, $nombre_page)." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">›</a>";
                echo "&nbsp;<a href=\"consultation.php?selection=films&page=".$nombre_page."\" title=\"Consulter la page ".$nombre_page." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">»</a>";

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Primo merci pour vos réponses, ca ma permis d'avancer un peu
    Déjà un point positif, je découvre la propriété min()
    Ca marche à un détail prêt
    Lorsque on débarque dans la page, on affiche:
    Page: « ‹ -9 -8 -7 -6 -5 -4 -3 -2 -1 0 [1] 2 3 4 5 6 7 8 9 10 11 › »
    On devrais alors avoir:
    [1] 2 3 4 5 6 7 8 9 10 11 › »
    Arrivée sur la page 2:
    Page: « ‹ -8 -7 -6 -5 -4 -3 -2 -1 0 1 [2] 3 4 5 6 7 8 9 10 11 12 › »
    et enfin quand je clique sur '»':
    Page: « ‹ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 [109] › »
    Et la ca me fait un ti bug
    Y aurais t il une petite restification à réaliser sur le script décrit plus haut ?
    Cordialement.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Bon je viens de faire une petite rectification
    Ya du mieux mais c'est pas encore ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    //Nombre d'élément a affiché par page.
        $message_par_page = "20";
     
        //Nombre de page à affiché en bas.
        $page_max = "10";
     
        //On recherche le nombre de film à affiché.
        $select0 = "SELECT count(id_film) FROM film";
        $requette0 = @mysql_query($select0, $connect);
        $reponse0 = @mysql_fetch_assoc($requette0);
     
        $nb_total_message = $reponse0['count(id_film)'];
     
        //Nombre de page à affiché.
        $nombre_page = ceil($nb_total_message/$message_par_page);
     
        //Récupère la page à affiché.
        $page = $_GET['page'];
     
        //Si la selection de page est existante.
        if(isset($page))
        {
            //On place dans une variable la page en cours.
            $page_actuelle = intval($page);
     
            //Si cette valeur est plus élevé que notre maximum de page.
            if($page_actuelle > $nombre_page)
            {
                //Alors on effectue une correction.
                $page_actuelle = $nombre_page;
            }
        }
        else
        {
            //La page actuelle est 1.
            $page_actuelle = 1;
        }
    Plus loins dans ma page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    //Calcul la page actuelle -1 (Page précédente).
        $page_precedente = $page_actuelle - 1;
     
        //Si la page précédente est inférieur à 1 on affectera à 1.
        if($page_precedente <= 1) { $page_precedente = 1; }
     
        echo $page_precedente." ".$page_actuelle;
     
     
        echo "<p class=\"Balise-P-001\"><a class=\"Text-Style-001\">Page:</a>";
     
        //Si On est au delà de la page 10, on affichera le lien de retour en arrière.
        if($page_actuelle >= $page_max)
        {
            echo "&nbsp;<a href=\"consultation.php?selection=films&page=1\" title=\"Consulter la page 1 des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">&laquo;</a>";
            echo "&nbsp;<a href=\"consultation.php?selection=films&page=".$page_precedente."\" title=\"Consulter la page ".$page_precedente." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">&lsaquo;</a>";
        }
     
        //On chée une boucle for qui va placé les ocurences de pages.
        for($i = min($page_max, $page_actuelle - 10); $i <= min($page_actuelle + 10, $nombre_page); $i++)
        {
            //Si la page en cours est identique à ce qui est retourné de la boucle, on affichera donc la page entre crochet.
            if($i == $page_actuelle)
            {
                echo "&nbsp;<a class=\"Text-Style-002\">[".$i."]</a>";
            }
            else
            {
                echo "&nbsp;<a href=\"consultation.php?selection=films&page=".$i."\" title=\"Consulter la page ".$i." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">".$i."</a>";    
            }
        }
        echo "&nbsp;<a href=\"consultation.php?selection=films&page=".min($page_actuelle + 1, $nombre_page)."\" title=\"Consulter la page ".min($page_actuelle + 1, $nombre_page)." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">&rsaquo;</a>";
        echo "&nbsp;<a href=\"consultation.php?selection=films&page=".$nombre_page."\" title=\"Consulter la page ".$nombre_page." des films d&eacute;j&agrave; saisie.\" target=\"_parent\" class=\"Lien-001\">&raquo;</a>";
    Si quelqu'un voie ce qui cloche
    Cordialement.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $page_actuelle = max(0, $page_actuelle);
    for($i = ($page_actuelle - 10); $i <= min($page_actuelle + 10, $nombre_page); $i++)
    lorsque que que $page_actuel est supérieur à 0 alors le script fonctionnera sinon il commencera de 0;

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    En fait le code etait bien j'ai juste mis à ma sauce et ca fonctionne parfaitement

    Merci beaucoup
    Cordialement.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    de rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'un script
    Par tom06440 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/09/2006, 16h28
  2. Modification d'un script
    Par renaud26 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/08/2006, 11h48
  3. [SQL] Problème avec script de pagination et requête sql sur deux tables
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h06
  4. [MySQL] Problème dans mon script de pagination
    Par speedylol dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/11/2005, 19h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo