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 :

[SGBD]Pagination spécifique de résultats


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut [SGBD]Pagination spécifique de résultats
    Bonjour,

    Petite problème à résoudre, probablement bien plus simple vu d'ailleurs

    La situation :

    Une table MySQL classique, table_news, avec N rangées et une clé primaire entière autoincrementée.

    Le problème :

    Dans cette table, des rangées sont suceptibles d'être effacées, et leur clé avec, ce qui provoquera des écarts dans l'autoincrémentation.

    Je souhaite que lorsque le visiteur clique sur une news, il obtienne sur la même page, la news selectionnée ainsi que deux liens, l'un vers la news précédente (si elle existe) et l'autre vers la news suivante (si elle existe).

    J'ai essayé de jouer sur la close "LIMIT", en indiquant respectivement que la news suivante (théorique) est l'ID courant de la news + 1 donc, ce qui donne ce genre de requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM table_news LIMIT (ID_Courant), 1
    Pour la news précédente, ID_Courant - 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM table_news LIMIT (ID_Courant-2), 1
    Cette solution fonctionnerait tant que les clés se suivraient numériquement... Evidemment c'est pas la bonne solution...

    Une autre solution (bêtise=) consiterait à obtenir systèmatiquement tous les résultats de la table, pour ensuite jouer sur le pointeur interne avec des num_rows et autres data_seek...

    Autre solution ? changer le type de clé ? utiliser un autre type de champ unique ?

    Il me manque un élément...J'ai du passé à coté de la soluce plus d'une fois...

    Merci d'avance !
    Dernière modification par Invité ; 14/06/2006 à 15h13.

  2. #2
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Heu une piste :

    Les éléments précédents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT tab_id FROM table_news WHERE tab_id< (ID_Courant) ORDER BY tab_id DESC LIMIT 2
    Tu récupères les 2 id précédents

    ET inverse pour les suivants
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT tab_id FROM table_news WHERE tab_id> (ID_Courant) ORDER BY tab_id DESC LIMIT 2
    Take it HiSy

  3. #3
    NoT
    NoT est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Points : 280
    Points
    280
    Par défaut
    Salut,

    Tu dois passer par une requête qui va chercher l'id de la news précédente ( s'il y en a une ) et l'id de la news suivante ( idem ) .

    D'une façon générale tu peux l'obtenir comme ça :

    $mon_id_news = id de la news actuellement affichée

    News précédente :

    SELECT MAX(news_id) AS PREC FROM news WHERE news_id < $mon_id_news
    News suivante :

    SELECT MIN(news_id) AS SUIV FROM news WHERE news_id > $mon_id_news
    Voili

    Edit : la solution de hisy marche égualement, à toi de voir laquelle est la plus rapide.

  4. #4
    Invité
    Invité(e)
    Par défaut Impeccable !
    Merci beaucoup pour vos soluces c'est juste ce dont j'avais besoin !

    Bonne après-midi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2003] Pagination spécifique sur un seul document
    Par crazy_inf dans le forum Word
    Réponses: 2
    Dernier message: 02/04/2009, 22h36
  2. [MySQL] Pagination d'un résultat de requête
    Par MaxAurele dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/06/2008, 21h41
  3. [SQL] pagination d'un résultat d'une requête
    Par opeo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/03/2007, 11h25
  4. Pagination d'un résultat de requête
    Par Methode dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2007, 16h47

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