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

PHP & Base de données Discussion :

Problème de pagination dans un script.


Sujet :

PHP & Base de données

  1. #1
    Scurz
    Invité(e)
    Par défaut Problème de pagination dans un script.
    Hello,

    J'ai un problème de pagination dans un petit script php, ce script sert à diviser une page de billets (sur un blog) en plusieurs pages de billets, donc pour les essais, j'ai mis 2 billets par page, à savoir que 5 billets sont créés.

    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
     
    $nb_billets_par_page = 2;
     
    $requete2 = mysql_query('SELECT COUNT(*) AS nb_billets_archives FROM billets') or die(mysql_error());
    $donnees2 = mysql_fetch_array($requete2);
    $total_des_billets = $donnees2['billets_archives'];
     
    $nb_de_pages = ceil($total_des_billets / $nb_billets_par_page);
     
    echo 'Voir page : ';
     
    for($i = 1 ; $i <= $nb_de_pages ; $i++)
            {
    echo '<a href="index.php?archivesbillets&amp;voirpage=' .$i. '">' .$i. '</a>';
            }
    Je n'ai aucun message d'erreur mais il m'affiche "Voir page".

    Merci pour votre aide.

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Il faut faire attention au nom que tu donnes
    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
    $nb_billets_par_page = 2;
    
    $requete2 = mysql_query('SELECT COUNT(*) AS nb_billets_archives FROM billets') or die(mysql_error());
    $donnees2 = mysql_fetch_array($requete2);
    $total_des_billets = $donnees2['billets_archives'];
    
    $nb_de_pages = ceil($total_des_billets / $nb_billets_par_page);
    
    echo 'Voir page : ';
    
    for($i = 1 ; $i <= $nb_de_pages ; $i++)
            {
    echo '<a href="index.php?archivesbillets&amp;voirpage=' .$i. '">' .$i. '</a>';
            }
    Par contre je comprends pas trop ta pagination, a moins que tu fasses un requete ailleur pour faire la sélection des billets à afficher

  3. #3
    Scurz
    Invité(e)
    Par défaut
    Exact, j'avais pas vu ça.

    Mais bizarrement, ça met trois liens, mais tous les billets sont sur chaque page, voir http://sfantar.homelinux.org/site/in...rchivesbillets

    Je ne vois pas pourquoi pas, une idée ?

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    C'est ce que je disais, le tout n'est pas de faire les liens il faut créer la requete de sélection. TU dois avoir une requete comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT topic_id FROM " . TOPICS_TABLE . "  LIMIT " . $start . ", " . $posts_per_page;
    avec $start dans le lien

    ps : c'est un exemple de mon code

    En gros il faut que start soit le point de départ de la sélection. Et le start tu l'as grace au nombre de billets par pages et la page en cours.

    Exemple page 1 le prochain start sera 3 ainsi de suite

  5. #5
    Scurz
    Invité(e)
    Par défaut
    J'ai pas trop bien compris ta requête

    Pourrais-tu me l'expliquer ?

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    C'est simple tu sélectionnes tous les éléments que tu souhaites à partir de la zone souhaitée, d'où le LIMIT.


    Exemple tu souhaites obtenir les billets de la page 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT * FROM billets LIMIT 0, 2;'
    Pour la deuxième :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT * FROM billets LIMIT 2, 2;'
    voilà à quoi correspond le $start

  7. #7
    Scurz
    Invité(e)
    Par défaut
    Mais faut faire une deuxième requête alors ?

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Non une seul requete tout en précisant le limit à faire, et donc c'est pour ca que tu dois mettre à la place du num de ta page le $start convenable

    Moi j'avais fait un code comme ceci il y a plus de 10mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $start = 0;
    for($i = 1; $i <= ceil( $total_posts / $posts_per_page ); $i++)
    {
        $jump .= '<option value="page.php?start='.$start.'" '.((( floor( $start / $posts_per_page ) + 1 ) == $i)?("selected=selected"):("")).'>'.$i.'</option>';
       $start += $posts_per_page;
    }
    $jump .= "</select>";
    Qui construisait un select pour changer la page. A toi de l'adapter à ta situation. Et tu dois remplacer ta requete initiale par celle que je t'ai donné plus. Il faudra juste tester que le get contient bien un start et qu'il est pas vide sinon le mettre à 0.Et c'est tout

  9. #9
    Scurz
    Invité(e)
    Par défaut
    Merci bien, le problème est résolu.

Discussions similaires

  1. Problème de Beep dans un script
    Par L0007 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 29/12/2008, 20h22
  2. Problème de buggage dans un script
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2008, 09h03
  3. problème de séparateurs dans un script sql
    Par foulla dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/06/2008, 12h43
  4. problème de séparateurs dans un script sql
    Par foulla dans le forum Langage SQL
    Réponses: 13
    Dernier message: 09/06/2008, 10h18
  5. Réponses: 7
    Dernier message: 25/06/2007, 22h34

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