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 :

Comment joindre 2 tables ?


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
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Comment joindre 2 tables ?
    Bonjour,

    Je débute en PHP et SQL et j'ai le problème suivant :

    J'ai créé une base de données "clients".

    Dans cette base j'ai 2 tables :
    - Une table "identification" qui contient les champs id_client, nom, prénom
    - Une table "photos" qui contient les chemins des photos qui seront insérées par la suite avec un upload. Les champs sont client_id, photo_1, photo_2

    Lorsque que l'utilisateur saisit ses noms et prénoms, les données sont correctement insérées dans la table "identification" avec un INSERT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO identification (nom,prenom) VALUES ('$nom','$prenom');
    Je voudrais qu'en même temps un nouvel enregistrement s'incrémente dans la table "photos", même si les champs photo_1 et photo_2 restent vides pour le moment.

    J'ai pas mal cherché mais je n'ai pas trouvé d'exemple.

    - Dois-je faire un INSERT spécifique sur la table "photos" après L'INSERT dans "identification" ou doit on le faire dans le même INSERT ?

    - Les clés dans les 2 tables portent un non différent (id_client et client_id)
    Vaut il mieux leur donner le même nom ?

    Je sais ce sont des questions très basiques mais je n'ai pas trouvé de réponses !!!

    Merci de m'éclairer un peu !

  2. #2
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Je voudrais qu'en même temps un nouvel enregistrement s'incrémente dans la table "photos", même si les champs photo_1 et photo_2 restent vides pour le moment
    Regarde déjà si tu as vraiment l'utilité de faire ça. (Avoir des enregistrement vide qui surcharge ta base de donnée).

    Non tu ne peut pas insérer dans 2 tables à la fois. (Faire 2 insertions dans la même table est possible).

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Vide
    Les champs de la table "photos" ne resteront pas vides très longtemps car l'utilisateur insèrera des photos juste après le formulaire.

    J'ai créé cette 2ème table "photos" pour ne pas surcharger la table "identification" qui est très grosse (le formulaire est très long). Ceci pour réduire le traitement du formulaire sur la table "identification", ainsi que les traitements des photos (redimensionnement, création de miniature, ajout, suppression, etc) qui seront effectués uniquement sur la table "photos" grâce à l'id_client récupéré en session.

    - Est ce une bonne méthode ?
    - Les clés doivent-elles avoir des noms différents ?
    - Je dois donc faire dans le traitement du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO identification (nom,prenom) VALUES ('$nom','$prenom');
     
    INSERT INTO photos (photo_1,photo_2) VALUES ('$photo_1','$photo_2');

  4. #4
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    J'aurais plutôt fait une table du genre : (id_usr, id_photos) en clef primaire pour t'éviter d'être limité au nombre de photos et ne pas l'avoir en "dur".

    Les noms de clef c'est toi qui vois, tu fais comme tu veux. Cependant si deux table ont les même noms de clef et que tu les selectionne dans une même requete il te faudra utiliser des alias (AS)

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Tests
    Je suis déjà en train de faire des tests.

    J'ai créer 10 enregistrements par l'intermédiaire du formulaire dans la table "identification".

    Et j'ai dû créer manuellement par PHPMYADMIN 10 enregistrements dans la table "photos" (en fait j'ai ajouté 10 client_id). Les champs photo_1 et photo_2 étant par défaut à la valeur "a".

    Personne pour m'aider à incrémenter les client_id dans la table "photos" lors du traitement du formulaire ?

    Je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $photo_1 = "a";
    INSERT INTO photos (photo_1) VALUES ('$photo_1');
    Rien que le fait d'insérer un enregistrement dans la table "photos" m'incrémentera le client_id c'est vrai... Mais je pensais qu'il y avait une syntaxe plus "propre"...

    Dites moi s'il y en a une !

  6. #6
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    mysql_insert_id ?

Discussions similaires

  1. [MySQL] Comment joindre une autre table proprement
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/02/2012, 20h19
  2. Réponses: 6
    Dernier message: 20/05/2010, 20h48
  3. Comment joindre 2 tables SQL ?
    Par Jeystrash dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/12/2007, 12h24
  4. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45
  5. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/12/2003, 12h09

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