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 :

Script pour aller de page en page


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Script pour aller de page en page
    Bonjour

    j'ai un script de news installé sur mon site qui affiche 5 news par page et qui affiche toutes les pages dispo ce qui deviens trop long avec le nombre de pages grandissant (et ca déforme ma page)...
    Ce que je voudrait c'est trouver une solution du genre :

    <Précédent 1 [12] 35 Suivant>

    ou ressemblant, mais je ne sais pas comment m'y prendre...

    pour le moment j'ai 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
    <table border="0" cellpadding="0" cellspacing="0" class="Principal">
    															  <tr height="15">
    																  <td valign="top" bgcolor="#66CCFF"><p><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Aller page</font></strong></p></td>
    																  <td valign="top" bgcolor="#66CCFF"><div align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><?php
    $nb = $mysql -> Requete("SELECT COUNT(id) FROM `news`");
    $nb = mysql_fetch_array($nb);
    $nb = ceil($nb["COUNT(id)"]/5);
    for ($i = 1; $i <= $nb; $i++)
    	{
    		echo "<a href=\"index.php?module=news&page=$i\">$i</a>";
    		if ($i < $nb)
    			{
    				echo "-";
    			}
    	}
    ?></strong></font></div></td>
    															  </tr>
    														  </table>
    Merci de votre aide

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Il faut effectivement obtenir le nombre total de résultats à afficher puis ne sélectionner par plage (à déterminer à partir du numéro de la page) que ceux qui nous intéressent - c'est la solution optimale du moins.

    Vous trouverez tous les détails dans l'article Créer un système de pagination automatique ou dans la FAQ.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    C'est le système que j'utilise sur mon site mais le problème c'est que j'ai + de 60 pages vu que j'affiche 5 "news" par pag, le site c'est http://robot-maker.com
    Comme vous pouvez le voir sous IE c'est ok mais moche et sous Firefox ca détruit toute la mise en page.
    Je suis un vrai novice et j'ai vraiment beaucoup de mal à savoir pourquoi.
    Je voudrais donc, au lieu d'afficher les 60 pages faire un système qui afficherait que 5 pages avec précédent/suivant à partir de ce script plus haut.

    Je suis allé voir les liens donnés mais il ne font que reprendre le même système que j'utilise.

    Merci

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    J'ai eu l'occasion de donner cette approche :
    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
    define('NB_PAR_PAGE', 2); // Nombre de résultats par page
    define('MAX_NB_PAGES', 4); // Nombre maximal de pages à afficher dans le système de navigation
     
    // [...]
     
    $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
     
    // [...]
     
    $derniere_page = ceil($nb / NB_PAR_PAGE);
     
    // [...]
     
    if ($nb > NB_PAR_PAGE) {
        echo '<ul class="pagination">';
        if ($page > 1) {
            echo '<li><a href="' . basename(__FILE__) . '?page=' . ($page - 1) . '">Page précédente</a></li>';
        }
        for ($i = min(max($page - MAX_NB_PAGES / 2, 1), $derniere_page - MAX_NB_PAGES), $j = 0; $j <= MAX_NB_PAGES && $i <= $derniere_page; $i++, $j++) {
            if ($i == $page) {
                echo '<li class="page-courante">' . $i . '</li>';
            } else {
                echo '<li><a href="' . basename(__FILE__) . '?page=' . $i . '">' . $i . '</a></li>';
            }
        }
        if ($page < $derniere_page) {
            echo '<li><a href="' . basename(__FILE__) . '?page=' . ($page + 1) . '">Page suivante</a></li>';
        }
        echo '</ul>';
    }
    Si ça peut vous resservir ...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup
    C'est ce qu'il me fallait à première vue...
    Votre code va m'être très utile je crois !

    Encore merci

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai utilisé votre script, c'est fonctionnel, merci bien

    J'aimerais afficher le tout sur une seule ligne au lieu que les pages du système de navigation s'affichent une sous l'autre mais je ne vois pas comment faire.

    Si vous avez une idée ?

Discussions similaires

  1. Script pour lancer une impression au lancement d'une page PHP
    Par miloujohn dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 17/08/2007, 17h32
  2. Réponses: 2
    Dernier message: 27/03/2007, 08h26
  3. Réponses: 7
    Dernier message: 02/11/2006, 19h05
  4. Script pour mise en page
    Par Fabster dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 10/08/2006, 10h53
  5. Script pour faire plusieurs page…
    Par sam01 dans le forum Langage
    Réponses: 7
    Dernier message: 14/04/2006, 21h51

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