Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/09/2007, 11h31   #1
En attente de confirmation mail
 
Inscription : avril 2007
Messages : 149
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2007
Messages : 149
Points : 45
Points : 45
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 :
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 :
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:
Citation:
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 :
Citation:
<< < ... 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.
Draner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2007, 11h48   #2
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
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 : 742
Points : 1 085
Points : 1 085
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.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2007, 12h05   #3
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
Un truc dans le genre devrait faire l'affaire

Code :
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>";
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2007, 14h17   #4
En attente de confirmation mail
 
Inscription : avril 2007
Messages : 149
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2007
Messages : 149
Points : 45
Points : 45
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:
Citation:
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:
Citation:
[1] 2 3 4 5 6 7 8 9 10 11 › »
Arrivée sur la page 2:
Citation:
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 '»':
Citation:
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.
Draner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2007, 15h09   #5
En attente de confirmation mail
 
Inscription : avril 2007
Messages : 149
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2007
Messages : 149
Points : 45
Points : 45
Bon je viens de faire une petite rectification
Ya du mieux mais c'est pas encore ca

Code :
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 :
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.
Draner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2007, 04h57   #6
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
Code :
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;
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2007, 09h13   #7
En attente de confirmation mail
 
Inscription : avril 2007
Messages : 149
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2007
Messages : 149
Points : 45
Points : 45
En fait le code etait bien j'ai juste mis à ma sauce et ca fonctionne parfaitement

Merci beaucoup
Cordialement.
Draner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2007, 17h16   #8
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
de rien
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h56.


 
 
 
 
Partenaires

Hébergement Web