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 :

Fractionner en plusieurs pages l'affichage d'un livre d'or


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 39
    Par défaut Fractionner en plusieurs pages l'affichage d'un livre d'or
    Bonjour à tous,
    J'ai un site contenant un livre d'or (un base de donnéew MySQL avec une table livre_d_or). Il y a actuellement 60 enregistrements dans ma table. Lorsque l'utilisateur va consulter le livre d'or il se retrouve avec une page interminable. Ce que je voudrais c'est que ma page n'affiche que les 10 premiers résultats mais crée des liens (ex: page1 ; page2 ;...) vers la suite de mes enregistrements.
    Un peu comme sur ce forum ou il y a plusieurs pages par sujets (1,2,3,...). Je pense bien que cette numérotation et cet affichage ce fait tout seul mais comment ?

    Merci pour vos réponses

  2. #2
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    en SQL, il existe LIMIT, qui te permet de limiter l'extraction de tes données à une certaine plage.
    en définissant cette plage, et en comptant le nombre total d'enregistrements de ta base, il devient facile de savoir combien de pages il y aura, et d'afficher les bonnes données sur la bonne page ;-)
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Cela s'appele de la pagination, il y a un bon package Pear, même si je n'aime pas Pear.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 39
    Par défaut
    ben j'y connais rien au pear et je ne peux pas ajouter de package donc ca parait cuit.
    Avec la clause limit je vois pas trop comment faire si ce n'est envoyer par post le debut et la fin mais ca me parait chaud a faire (calculer le nb d'enregistrement, calculer le nb de page ). LE plus chaud me parit etre le lien par exemple nommé "page 2" qui va envoyé la requete. je sais envoyer des données avec un formulaire mais avec un lien ...

    Bref ca me parait assez compliqué... personne n'a une idée plus ismple que le pear?

    Par avance merci

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Ce n'est pas si compliqué, à tête reposée.
    Utilise une variable qui te dit à quelle page tu es :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $page = empty($_GET['page']) ? 0 : intval($_GET['page']);
    Définis également une variable qui te dit combien tu veux de résultats par page :
    Ensuite, dans ta requête, tu utilises la clause LIMIT comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIMIT '.($page * $per_page).', '.$per_page
    Ensuite, tu utilises deux requêtes SELECT COUNT avec un peu de maths pour savoir combien et quelles pages tu as avant et après.

  6. #6
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    autre solution, tu generes des pages .html en créant ces fichiers
    certain forum le font ainsi pour des raison de performance (moins de travail proc)

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Par défaut
    personnellement je fais 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
     
     
    $pages = "";
    $parPage = 10;
    $nbmsg = mysql_num_rows(mysql_query("select * from livredor"));
     
    if (!isset($_GET["row"])){
    	$row=0;
    } else {
    	$row = $_GET["row"];
    }
     
    $pages = $nbmsg / $parPage;
    if ( ($pages - intval($pages)) > 0){
    	$pages = intval($pages) + 1;
    }
     
    for ($j = 0; $j < $pages; $j++){
    	$pages .= "<a href='livredor.php?row=".($j * $parPage)."'>.: ".($j + 1)." :.</a> ";
    }
    et il reste plus qu'a faire

    la où tu veux afficher les pages...

    tu utilises ensuite la méthode avec le LIMIT pour selectionner les messages dans la base correspondants à la page séléctionnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    echo $pages.'<br />';
     
    $sql = "select * from livredor LIMIT ".$row.", ".$parPage;
    $qry = mysql_query($sql);
     
    while($datas = mysql_fetch_array($qry)){
    	echo 'Message de <a href="mailto:'.$datas['email'].'>'.$datas['pseudo'].'</a><br />
    	'.$datas['message'].'<br />';
    }
     
    echo '<br />'.$pages;
    par exemple...
    c'est un peu "brutal" comme méthode mais bon...
    c'est facile a modifier

Discussions similaires

  1. Affichage de données sur plusieures pages [2.0]
    Par H-bil dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/06/2007, 17h14
  2. [MySQL] Affichage des résultats d'une requête sur plusieurs pages
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 13h24
  3. affichage en plusieurs pages
    Par boo64 dans le forum Langage
    Réponses: 1
    Dernier message: 30/05/2006, 12h30
  4. [JSP]affichage d'un tableau sur plusieurs pages
    Par MAJIK_ENIS dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/08/2005, 11h21
  5. [JSP] affichage de resultat sur plusieurs pages
    Par de LANFRANCHI dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 10/02/2005, 10h00

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