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 :

Nom d'une table de base de donné phpmyadmin dans condition if


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Nom d'une table de base de donné phpmyadmin dans condition if
    Bonjour, je pense avoir déja bien détaillé ce que je souhaitais dans le titre mais bien entendu je vais vous faire un petit topo de ce que je voudrais trouver.

    je souhaiterais afficher sur la page d'accueil de l'administration de mon site les dernières activités des utilisateurs sur le site. J'ai trois tables que je souhaites utiliser dans phpmyadmin et je fais une requête pour récupérer les données de ces trois tables.

    Mon problème: Je voudrais afficher ces données différemment selon qu'elles viennent d'une table ou d'une autre.

    Mes trois tables sont:

    NEWS (id, publier, pseudo, titre, contenu, devellopement, timestamp)
    COM_NEWS (id, id_news, pseudo, commentaire, timestamp, valide)
    LIVREOR (id, pseudo, message, mail, timestamp)

    Pour les données de "LIVREOR" je souhaiterais l'afficher tel que:

    - Nouveau message sur le livre d'or de "PSEUDO" le "DATE" à "HEURE".

    Pour celles de "NEWS":

    - Nouvel article de "PSEUDO" le "DATE" à "HEURE": "TITRE".

    Et pour "NEWS_COM"

    - Nouveau commentaire sur l'article: "TITRE" de "PSEUDO" le "DATE" à "HEURE".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    	// Connection à la BDD
    	$link = mysql_connect("bases.sql", "mon_identifiant", "mon_mot_de_passe");
    	mysql_select_db("ma_base_de_donnees");
     
    	$requete = mysql_query("SELECT * FROM news, com_news, livreor ORDER BY timestamp DESC LIMIT 0,20") or die(mysql_error());
    	while ($activites = mysql_fetch_array($requete))
    	{
     
    ?>
    // ICI je ne sais pas quoi faire pour séparer les données par table.			
    <?php
    	}
    Donc nous sommes bien d'accord que je souhaite afficher les derniers évènements du site par ordre de temps du genre:

    - Nouvel article...
    - Nouveau commentaire...
    - nouvel article...
    - Nouveau message sur le livre d'or...
    - Nouveau message sur le livre d'or...
    - Nouveau commentaire...

    Donc uniquement par ordre de date et heure.

    Si quelqu'un pouvais me dire s'il existe un terme en PHP qui permet de spécifier lors d'une condition de type "if" qu'on veut tel ou tel table genre:
    if (table == news) { blabla }


    Je lui en serait très reconnaissant.

    Merci d'avance de vos réponse et n'hésitez pas à me dire si je me suis mal exprimé.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Regarde du côté des jointures. Tu trouveras certainement ton bonheur.

    Mais tu sembles surtout avoir un problème dans la conception de tes tables au départ...

    Enfin, sinon, tu peux toujours faire 2 requetes... voir trois... parce que je t'avoue ne pas très bien voir la relation qu'il existe entre tes news et ton livre d'or.


    Cordialement,
    Patouche

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Aucun rapport en effet.

    je souhaiterais afficher sur la page d'accueil de l'administration de mon site les dernières activités des utilisateurs sur le site.


    Pour les ""deux requêtes voir trois le problème est que je ne pourrais donc (à ma connaissance) pas mettre mes "évènement" à la suites classé par ordre de temps mais je serais obligé de séparer par catégories du genre "derniers articles", "derniers commentaires", "dernier messages sur le livre d'or". Ce que je ne souhaite pas.

    Merci quand même patouche.

    D'autres idées ?

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Pardon, j'avais pas du tout compris ton problème....

    Donc, si je comprends bien, tes utilisateurs ont les même pseudo sur chacune des tables....

    Dans ce cas la... fais toi des jointures sur le pseudo et fait un GROUP BY pseudo.

    Normalement, tu auras ce que tu souhaiteras....


    Cordialement,
    Patouche

    PS : Désolé, je n'avais vraiment pas compris ton problème.

  5. #5
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Première solution et la plus "normale", comme l'a expliqué patouche, plusieurs requetes ( order by date limit 20) .
    Ensuite à charge au php de regrouper les éléments et de les ordonnés par timestamp ( vulgaire tri d'un tableau )

    Deuxième solution, utilisation d'un union sur chaque table mais dès qu'il y aura du volume les requêtes vont devenir de plus en plus lentes à moins d'introduire une clause sur la date ( genre timestamp < 48h )

    La première solution, est la plus pratique, de cette façon, on ne mélange pas tout. La deuxième devenant problématique avec la taille de la bdd.
    Ta solution de mélanger les trois tables ne me semble pas élégante. car elle revient à mélanger les torchons et les serviettes, ce qui n'est jamais bon.

    Il y a encore une autre solution, un trigger sur chaque table, récupérant chaque insert pour le mettre dans une table DERNIERS_EVENEMENTS ( avec le type, id et timestamp ).
    Cette dernière table pouvant être nettoyé tous les jours par exemple ( pour garder un nombre faible d'enregistrements ).
    La requête de sélection serait un peu plus complexe mais le traitement déporté sur une autre table de moindre importance

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour FCYPBA merci de ta réponse. Après m'être renseigné sur les trigger (ce qui n'est pas simple) je pense opter pour cette solution, plus légère et plus complète (ce qui me permettra via une autre table, de différencier les mises à jour et les ajout dans mes tables) à mon avis que d'utiliser plusieurs requêtes mysql.

    Seulement si tu pouvais m'éclairer sur la façon d'utiliser les triggers je t'en serais reconnaissant car comme je t'ai dis je me suis renseigné sur mon ami google sans grand succès car le peu d'informations que j'ai pu dénicher ne m'ont pas beaucoup aidé.

    Tout d'abord j'aimerais savoir si je peux et s'il est mieux, de créer mon trigger via phpmyadmin directement ou bien s'il est mieux de le créer via un code dans ma/mes pages php ?

    Et dans le premier cas comme dans l'autre pourrais tu me donner la procédure afin de pouvoir créer ce/ces triggers ?

    Merci d'avance

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    @FCYPBA : Le problème de ta deuxième solution est que tu fais cette opération sur des tables différentes. Le Union requiert quelques contraintes... Ou alors tu rajoute une colonne pour différencier news / livre d'or....

    Mais j'adore ta troisième proposition.

    Pour la syntaxe d'un create trigger : La page de la doc.

    Mais sinon, pour toi, ce sera certainement quelques chose du type :
    CREATE TRIGGER le_nom_de_ton_trigger AFTER INSERT ON le_nom_de_ta_table FOR EACH ROW et ensuite ta requete d'insertion....

    Mais en y repensant, une procédure stocké ne ferait-elle pas l'affaire ? Avec comme entré le pseudo et son "action". On evite à avoir à réécrire un trigger sur chaque table. De plus ça me parait un peu plus adapté.

    Enfin, pour les procédures stokées : la doc

    Pour la question phpMyAdmin, je dirais que oui, tu peux le faire.

    Patouche

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci Patouche pour les doc ceci dit j'ai pas encore trop compris la procédure stockée il va falloir que je me penche dessus.

    Si quelqu'un à un tutoriel bien fait sur ces deux sujets je suis preneur.

    Merci

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    regarde sur ce site. tu as de super tuto en matière de SQL (ceux de sqlpro par exemple) : Page SQLPro

    Tu trouveras également 2 tutos ici : tuto mysql

    Cordialement,
    Patouche

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci Patouche je vais regarder tout ça

Discussions similaires

  1. restituer une table de base de données MySQL
    Par laurentSc dans le forum Free
    Réponses: 0
    Dernier message: 15/07/2009, 14h26
  2. afficher une ligne précise d'une table de base de donnée MySql
    Par developppez dans le forum Windows Forms
    Réponses: 19
    Dernier message: 16/01/2009, 00h14
  3. [MySQL] Mise à jour d'une table de base de données
    Par mannix2 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/08/2008, 19h47
  4. Sauvegarder un enregistrement dans une table de base de données
    Par souha2008 dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/05/2008, 18h43
  5. taille d'une table et base de données sql server
    Par debutantasp dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/01/2008, 02h37

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