Gérer l'affichage en plusieurs pages

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Gérer l'affichage en plusieurs pages

Re: Gérer l'affichage en plusieurs pages

par desauany » 07 avr. 2012, 21:11

Cool, la réponse d'AoSix. Compact et efficace. Merci.

Re: Gérer l'affichage en plusieurs pages

par AB » 26 févr. 2011, 20:19

Alors, maintenant il faut que je génère un espèce de navigateur, qui calculera le nombre total de page, et mais coupera de cette manière [1][2][3][...][20] pour ne pas avoir quatre ligne de ça. J'y réfléchis.
C'est pas forcément pratique pour l'utilisateur. Avec 25 affichages par pages cela ne te fait que 20 numéros à afficher pour un total de 500 enregistrements. Et 20 numéros peuvent tenir sans problème sur une seule ligne. Cela dit l'exercice est intéressant...

Re: Gérer l'affichage en plusieurs pages

par Bencori » 26 févr. 2011, 09:49

Alors... Feedback. Je viens de m'en servir et j'ai opté pour la solution de AoSiX. Je n'ai pas tant de données que ça, la table ne devrait pas dépasser les 500 entrées donc ça roule, et plutot bien même.

Alors, maintenant il faut que je génère un espèce de navigateur, qui calculera le nombre total de page, et mais coupera de cette manière [1][2][3][...][20] pour ne pas avoir quatre ligne de ça. J'y réfléchis.

Merci à vous tous pour avoir répondu, je trouve la communauté de ce forum très agréable et compréhensive envers les débutants!

Re: Gérer l'affichage en plusieurs pages

par micar » 25 févr. 2011, 17:45

J'ai ma réponse. :D
- Faut-il hésiter à solliciter la base Mysql ?
- non !
- Merci, j'applique le conseil dès aujourd'hui :P mysql_query, me voici ! :wink:

Re: Gérer l'affichage en plusieurs pages

par AB » 25 févr. 2011, 16:44

@micar

Même si c'est possible, ce n'est pas une solution pérenne sauf pour de petits projets avec des fonctionnalités limitées.

1ère limitation : La mémoire nécessaire pour faire ton tableau va augmenter proportionnellement aux données de ta table.

2ème limitation : Les tableaux sont très peu adaptés pour faire des tris. Si tu mets en place un système de recherche cela va être très difficile à gérer alors que les bases de données sont faites pour cela.

Re: Gérer l'affichage en plusieurs pages

par AoSiX » 25 févr. 2011, 15:30

Autant utiliser array_slice .... mais c'est beaucoup plus propre le limite MySQL ;)

Re: Gérer l'affichage en plusieurs pages

par moogli » 25 févr. 2011, 02:53

oui un affichage page par page semble plus approprié.

après s'il y a "énormément" d'infos tu peut, en plus t'orienter vers un système de cache.


@+

Re: Gérer l'affichage en plusieurs pages

par Bencori » 25 févr. 2011, 02:34

Oui, pourquoi pas dans un tableau. Cependant, je remplis déjà un tableau HTML et j'ai donc pas mal de données à extraire. Peut-être serait-il plus "propre" de la faire directement avec MySql non?

Re: Gérer l'affichage en plusieurs pages

par micar » 25 févr. 2011, 01:01

Et que pensez-vous de faire une classe dans laquelle, lors de la construction, on charge tous les enregistrements de la base dans un tableau puis on lui attribut une fonction d'affichage de l'enregistrement x à x+10.

Du type:

Code : Tout sélectionner

class Table { var tableau = Array(); public function __construct{ //requete sql pour charger les enregistrements dans $this->tableau } public function affiche($debut){ for ($i = 0;$i<10;$i++){ echo $this->tableau[$i]; } } }
Dans le script d'affichage de la page, il ne reste plus qu'à faire un :

Code : Tout sélectionner

<?php $monTableau = new Tableau(); $monTableau->affiche(11) //pour afficher les enregistrements de 11 à 20 ?>

Re: Gérer l'affichage en plusieurs pages

par moogli » 25 févr. 2011, 00:46

Attention ce n'est pas deux limite mais bien une seule.

définition de limite [LIMIT {[offset,] row_count | row_count OFFSET offset}]

plus d'info dans la doc : http://dev.mysql.com/doc/refman/5.0/en/select.html

@+

Re: Gérer l'affichage en plusieurs pages

par Bencori » 24 févr. 2011, 15:55

D'accord. Merci.

Je vais regarder et adapter ça, je pense que ça devrait le faire :)

Je ne savais pas qu'on pouvait donner 2 limites à mysql.

Re: Gérer l'affichage en plusieurs pages

par AoSiX » 24 févr. 2011, 15:48

Voilà une piste à suivre pour toi :
$nb_par_page = 10; // 10 messages par page par exemple
if (isset($_GET['p']) && intval($_GET['p'])>0)
        $page = intval($_GET['p']); 
else 
        $page = 1;
 
$limit_deb= ($page - 1) * $nb_par_page ;
puis la requete SQL :
SELECT .... FROM ... LIMIT $limit_deb, $nb_par_page;

Gérer l'affichage en plusieurs pages

par Bencori » 24 févr. 2011, 15:43

Bonjour à tous!

Alors voilà, j'écris un script qui permettra aux utilisateurs de chercher toutes sortes de choses dans la BD. Cependant, il y aura en général trop de résultats pour pouvoir les afficher confortablement sur une seul page. Alors je voudrais diviser la liste des résultats et permettre une navigation par page.

Mais voilà, je ne sais pas trop comment géré ça. Je sais extraire, exemple, 10 résultats de ma base de donnée, mais je ne sais pas comment aller à la page 2 et là ne récupérer que les 10 suivant... Vous voyez ce que je veux dire?

Donc je sais pas si je dois faire ça avec PHP uniquement, ou si je peux extraire par 10 depuis mysql.

J'espère avoir été clair.

Merci d'avance.