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 :

Mettre a jour 2 tables en même temps


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut Mettre a jour 2 tables en même temps
    Bonjour,

    J'aurais besoin de mettre à jour 2 tables en même temps : je ne sais pas si c'est possible.

    J'ai un forum dans lequel j'ajoute des entrés dans une table "post" qui contient tous les messages, avec comme clé primaire un id_post. Y a pas grand chose a dire.

    Je voudrais ajouter des pièces jointes en attachement à tous les posts. J'ai pensé créer une table attachement avec 5 champs : id_attachement clé primaire auto-incrément, id_user (identifiant de l'utilisateur qui poste le message contenant la pièce en attachement), id_post (identifiant du post), un champ date et évidement le nom du fichier en attachement.

    Je ne crois pas me tromper en disant que dans cette table attachement, les identifiant id_user et id_post sont des clés étrangère. Bon. Mais, lorsque le message est posté et enregistré dans la table "post", il se créé un nouvel identifiant id_post automatiquement (il est auto-incrément). Il faut donc faire une nouvelle requête pour savoir quel est cet identifiant afin de pouvoir mettre à jour la table attachement.

    Ma question est: est-ce que l'on peut mettre à jour cette table "attachement" en même temps (dans la même requête) que la table "post" ? Par une requête comportant une jointure ? Si oui, laquelle ?

    Ou si il faut impérativement faire 2 requêtes ?

    Merci.

    PS: pour les fichiers en attachement, que me conseillez-vous ? J'ai pensé les mettre tous dans un dossier "/attachement" et non dans un champ blob de la base de données. Correct ? Quel est l'usage ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut
    Bonjour,

    De ce que j'en sais, il te faudra faire 2 requêtes, la 2ème s’exécutant sur un lastInsertId ou équivalent.

    Une autre possibilité est de passer par une procédure stockée déclenchée par un trigger sur le onInsert de ta première table.

    Concernant le blob, ça dépend des besoins je dirais, en prenant en compte qu'il est beaucoup plus lourd de stocker, par ex, une image qu'un chemin pointant vers celle-ci. Perso, j'évite le blob au possible.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Une mise à jour (UPDATE) sur deux tables c'est possible.
    Mais ce que tu veux faire c'est une insertion (INSERT).

    Passe par 2 requêtes, il n'y a pas de raison de vouloir n'en faire qu'une.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Et stock tes pièce jointe dans des dossier et enregistre seulement le chemin dans la base

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/11/2010, 14h08
  2. Réponses: 3
    Dernier message: 19/05/2006, 11h37
  3. Mettre à jour une table depuis une autre
    Par snubi dans le forum Access
    Réponses: 1
    Dernier message: 20/04/2006, 19h28
  4. Requête sur deux tables en même temps
    Par will89 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 11h01
  5. Comptez sur deux tables en même temps
    Par genova dans le forum Langage SQL
    Réponses: 12
    Dernier message: 13/09/2004, 18h58

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