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 :

Afficher les données de plusieurs tables par date en une seule liste. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut Afficher les données de plusieurs tables par date en une seule liste.
    Bonjour à tous !

    Je suis confronté à un problème qui m'agace et qui me coince un peu... Je m'explique. Je possède plusieurs tables pour les différents commentaires sur mon site. J'ai donc les tables suivantes :
    - comments_news (id_comments, id_externe, pseudo, commentaire, date)
    - comments_tests (pareil)
    - comments_videos (pareil)
    - comments_soluces (pareil)

    En gros je souhaite créer un bloc avec les dix derniers commentaires sur mon site. Si j'avais tout regroupé en une seule table, ca aurait été facile mais là je sais pas comment faire. J'ai réfléchi à une manière de faire mais je sais pas du tout si c'est faisable... Je prends les dix derniers commentaires de chaque table, donc en tout ça me ferait 40 variables à retenir. Puis je trie ces variables par date et j'affiche les 10 dernières... Dans la théorie ça a l'air simple mais dans la pratique je me dis que je peux faire plus facile...

    J'espère que vous pourriez m'aider à me débloquer et me donner des idées...

    Merci d'avance !

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 146
    Par défaut
    La solution la plus simple ce sont les unions de mysql :

    http://dev.mysql.com/doc/refman/5.0/fr/union.html

    Tu fait un union des 4 recherches des 4 derniers tu trie par date et tu prends les 10 derniers

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    Merci déjà pour ta réponse !

    Alors j'ai un peu regardé même si j'ai pas tout compris... En gros je ferais un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $reponse = mysql_query("(SELECT * FROM comments_news ORDER BY id LIMIT 10)
    UNION
    (SELECT * FROM comments_tests ORDER BY id LIMIT 10)
    UNION
    (SELECT * FROM comments_videos ORDER BY id LIMIT 10)
    UNION
    (SELECT * FROM comments_soluces ORDER BY id LIMIT 10)
    ORDER BY date LIMIT 10");
     
    $donnees = mysql_fetch_array($reponse);
     
    ?>
    Bon je me suis peut-être trompé sur certaines choses, notamment les parenthèses ou les guillemets, mais est-ce que dans l'idée je suis assez proche de ce que je dois faire ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 146
    Par défaut
    Oui

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    Bon j'ai réussi à faire afficher les commentaires ! Merci, merci merci !

    Par contre, maintenant faut que je trouve un moyen de faire des liens pour chaque commentaire, mais j'avoue que ça coince encore plus...

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 146
    Par défaut
    Pas vraiment :p

    Au lieu de faire des select * tu rajoute un select 'xx' AS Type, id_comments, id_externe, pseudo, commentaire, date from ...

    avec le xx qui change en fonction de la table pour connaitre le type de commentaires ou directement le calcul de l url si c'est possible

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Par défaut
    Je peux créer autant de "AS" que je veux ?

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

Discussions similaires

  1. [MySQL] Afficher les données dans un tableau html horizontal avec une seule requête au lieu de 6
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/10/2010, 11h13
  2. lier les données de plusieur tables automatiquement
    Par fruitix31 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 19/06/2007, 12h12
  3. Réponses: 1
    Dernier message: 14/05/2007, 15h46
  4. Réponses: 5
    Dernier message: 23/04/2007, 13h37
  5. [Débutant] Parcourir les données de plusieurs tables.
    Par SmokE dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/01/2006, 16h55

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