PHP/MySQL : page suivante - page précédente

Résolu/Fermé
-
 rubikspirit -
Bonjour à tous,

Voila, je développe actuellement un site et je suis face à un problème que je ne sais pas comment résoudre.

Voila comment se présente mon cas :

Je veux réaliser une page Web avec une sorte de système de News mais pour des dossiers, en bas de la page je voudrais avoir des liens page précédente, page suivante (et encore mieux le nombre de pages dans le dossier).

Ma table dans ma base de données :
ID_dossier
titre
sous_titre
date
resume
article
auteur

Pour ajouter une page à un dossier, il suffira donc de marquer dans une nouvelle entrée le titre d'un dossier déjà existant dans la case "titre".

Ensuite l'affichage de ma page se présente de telle manière :
http://localhost/site/dossier.php?id=1

L'id correspond bien sur à une des page d'un dossier (ID_dossier)
Jusque là, mon affichage fonctionne bien, j'ai tout qui apparait, mais pour développer le reste, ces fameux liens, je sais pas comment m'y prendre.
Je ne peux pas faire en sorte de rajouter +1 ou -1 à l'id sinon je risque de tomber sur un ID=0 si l'ID actuel est 1 et je risque de me retrouver avec les pages d'un autre dossier si mon dossier actuel ne comporte plus de pages.

Voila, je sais pas comment gérer cet affichage de lien, si vous avez la solution, je suis tout ouïe !

En espérant avoir été clair, et avoir de vos réponses, je vous remercie d'avance de m'aider.
Pour toute question, je suis là, pas de soucis

28 réponses

Messages postés
147
Date d'inscription
mardi 21 octobre 2008
Statut
Membre
Dernière intervention
9 novembre 2008
7
bonjour !

je pense que cet exercice va t'intéresser. au début c'est simple et ensuite ça se complique un petit peu.
http://www.phpdebutant.org/article84.php
sinon ça ne sert à rien d'envoyer des liens du localhost... il n'y a que toi qui peut y accéder.

Petite question idiote je pense, mais... je la pose quand même !

Est-il possible de trouver (via un script) dans la base de données le numéro de l'ID_dossier suivant ayant "titre" qui est le même que "titre" de l'ID_dossier de la page affichée ?

Cela rejoint bien sur mon problème mais tout le monde me parle d'une pagination avec 30 affichages par page ou des trucs comme ca... Moi j'ai juste besoin lorsque je suis sur un dossier d'un lien permettant de passer à la suivante qui possède le même titre.

Voir :
https://www.clubic.com/article-38366-1-gps-pda.html

Ceci est une page qui reflète exactement ce que je cherche à réaliser. Regarder le bas, avec les liens "page suivante" et "page précédente", c'est exactement ça dont j'ai besoin.

Si il y a besoin de remettre en forme la table dossiers dans la base de données, c'est possible, je suis ouvert à toute proposition qui pourrait venir à bout de mon problème.
Messages postés
76
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
18 août 2010
30
ok ok...
dans ce cas la dans ta base tu peux simplement rajouter un champs "id_dossier_suivant" qui contient l'id du dossier suivant =) et c'est cet id que tu places dans ton lien de page suivante. pour la page précédente tu peux faire une requète sur ta page avant l'affichage qui récupère le dossier qui a comme suivant le dossier actuellement affiché.

bon c'est pas très clair, mais peut-être ça t'éclaire =)

Hummm c'est délicat comme solution, je ne pense pas que ca puisse marcher. Il faut quelque chose de simple quand même.

Un exemple concret me vient :

ID_dossier=1
titre=Dossier sur Windows Mobile
sous_titre=c'est la première page traitant de Windows Mobile
etc...
---------
ID_dossier=2
titre=Dossier sur Windows Mobile
sous_titre=c'est la deuxième page traitant de Windows Mobile
etc...
---------
ID_dossier=3
titre=Dossier sur SPB Mobile Shell
sous_titre=ici on parle de ce programme
etc...
---------
ID_dossier=4
titre=Dossier sur Windows Mobile
sous_titre=bilan de l'année pour Windows Mobile
etc...

Tu vois comment serait la structure de ma base de donnée ?

Maintenant il faut que je puisse en bas de la page concernant l'iD_dossier=2 basculer directement à la page affichant l'ID_dossier=4 en cliquant sur Suivant.
Il faut que ce soit une mise en page qui gère tout ca tout seul, je ne peux pas écrire dans ma base de donnée moi même le numéro de la page suivante, sinon, c'est trop galère dès que je veux rajouter une page, en supprimer une...

Voila comment cela se présenterait chez moi

tomdiato, j'ai déja un script de ce genre (le même pour tout te dire), le soucis c'est j'ai un gros soucis au niveau des liens qui me posent des URL du type : dossier.php?limite=1 (dans le cas de page suivante pour un affichage page par page)

Moi je n'ai rien qui permette a la page d'interpréter ce "limite" pour trouver l'ID_dossier correspondant et y afficher les infos extraite de la base. Si j'avais clairement dans l'URL un truc du genre dossier.php?id=2, là, pas de soucis pour lire. Mais avec ce limite qui s'affiche, je ne peux rien faire

Ah voila, ca commence déja a me plaire un peu plus ce genre de solution =D
Je vais voir comment je peux exploiter tout ca.

Je suis toujours ouvert à d'autres réponses en attendant que je vois le résultat.

Arfff, je ne suis pas non plus une bête en PHP et ce "champ de type ordre" je ne connais pas du tout, je n'en connait pas le principe, tu pourrais m'expliquer un peu plus ?

Ah d'accord ! Je vois déja un peu mieux. Bon alors merci pour tout ces petits indices qui me mettent sur le droit chemin

Bon ben mes amis, je vous laisse me rédiger de jolies belles pages qui traite tout ca héhé !

nan pas du tout, c'est juste que vous êtes bien plus balèse que moi alors je sais que vous feriez un code niquel bien propre et bien fonctionnel. Ca fait 2 jours que je bosse sur mes pages Web 12h/jour presque, alors bon, "feignant" jsais pas si c'est le bon mot ! =P
Messages postés
147
Date d'inscription
mardi 21 octobre 2008
Statut
Membre
Dernière intervention
9 novembre 2008
7
c'est payé combien ? ^^

C'est payé toute mon estime, ma gratitude, ma sympathie ! Jsuis étudiant, j'ai pas beaucoup d'argent en poche... =D
Messages postés
147
Date d'inscription
mardi 21 octobre 2008
Statut
Membre
Dernière intervention
9 novembre 2008
7
ben moi je suis juste plus étudiant et je cherche du taff donc ça peut pas coller ^^

Ah voui en effet... quel dommage alors :S
Messages postés
147
Date d'inscription
mardi 21 octobre 2008
Statut
Membre
Dernière intervention
9 novembre 2008
7
eh oui ! allez au boulot ! bon courage :)

oui oui c'est ce que je fais lol !

bon, je laisse encore le sujet ouvert au cas où si ca foire et que j'ai d'autre problème concernant cette partie, je mettrai résolé dès que tout sera fonctionnel

Encore une question...

Voila, toujours dans cette sale affaire, je voudrais utiliser le :
$sql = 'SELECT min(ID_dossier) FROM dossiers where ID_dossier>"$ID_dossier" AND titre="$titre"';
comme on en avait parlé mais je voudrais créer suite à ca la nouvelle variable $ID_dossier_suivant pour pouvoir l'afficher dans un echo (juste pour voir si les choses s'affichent un minimum, après j'affinerais) mais bon, jsais pas trop comment faire pour créer cette nouvelle variable...

Une idée ? Merci !

C'est bon, j'ai réussi, j'ai utilisé :
define("ID_dossier_suivant", $sql);
Donc tout va bien pour le moment... Allez, je vérouille, je pense que j'ai fini avec mes problèmes maintenant
Messages postés
333
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
18 novembre 2009
21
si tu ne compte pas rajouter des pages tout les jours tu peux faire un contrôle sur constante $page<NB_TOTAL_PAGE pour le nombre max et $page>0 pour le mini. (bon le zéro marche même si le nombre de page change... c'est pour le total que ça risque de se compliquer si tu veux rajouter souvent des page supplémentaires.

enfin comme je suis pas sur d'avoir bien compris ce que tu veux je vais attendre de voir si je me trompe pas.
Messages postés
76
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
18 août 2010
30
pour gérer une pagination, il faut se servir de LIMIT en Mysql.

par défaut par exemple, dans phpMyAdmin les requètes sont complétées par LIMIT 0,30.
ça indique qu'il va t'afficher les enregistrement du n°0 (le 1er) au 30ème.
ensuite si tu clique sur page suivante, tu aura LIMIT 30,60 pour les 30 suivants...

donc il te faut juste rajouter une variable $GET avec le numéro du premier enregistrement à afficher et dans ta requète tu précise à la fin LIMIT $GET['ta_variable'], 30 (ou + ou - selon combien tu veux en afficher). passer à la page suivante reviens ici à rajouter 30 à ta var $GET.