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 :

Héritage insert into


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut Héritage insert into
    Bonjour,

    J'ai 2 tables dont une hérite de l'autre, client hérite d'utilisateur.

    Comment faire en sorte que lors d'un ajout d'un utilisateur, les champs qui sont identiques entre les 2 tables s'insère correctement ?

    Pour l'instant je fais un insert pour utilisateur avec nom prenom etc comme champs mais les valeurs de ces champs peuvent être insérés comment dans la table client ? sachant qu'il y a le problème des clés étrangères etc ...

    Mon premier insert into :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `bdd`.`utilisateur` (`IDUTILISATEUR`, `NOM`, `PRENOM`, `LOGIN`, `MDP`, `TELEPHONE`)
                                           VALUES ('', '$nom', '$prenom', '$login', '$mdp', '$telephone');

    La table client contient ces champs ainsi que photo, logo etc des chamsp bien spé.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu dois être précis dans tes explications : avec MySQL il n'y aucune notion d'héritage de tables (à moins que je sois encore dans ma caverne depuis la fin du monde )

    Doublonner les informations n'est vraiment pas une approche saine. Dupliquer les données du client vers utilisateur et vice-versa c'est aller au devant de gros ennuis. Comment feras-tu si l'un ou l'autre met à jour ses informations ?
    Tu devrais reprendre ton schéma de données.

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    je pense qu'il se pose la question comment faire le liens entre ces 2 tables.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysqliquery("
    INSERT INTO utilisateur (a,b,c) VALUES ('bla','bla','bla'); 
    INSERT INTO client(id_utilisateur ,d,c) VALUES (LAST_INSERT_ID(),'bla','bla');");

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu veux dire que ta table client contient tous les champs que ta table utilisateur, plus ceux spécifiques au client ?
    La seule façon d'avoir des données cohérentes pour ce genre de cas c'est de faire TRES attention et de faire TOUTES les modifs dans les deux tables à chaque fois.

    Plus simplement, tu peux utiliser une structure du genre :
    Utilisateur
     - id
     - nom
     - prenom
     - ...
     
    Client
     - id 
     - idUtilisateur (non null, unique, en clé étrangère vers Utilisateur)
     - logo
     - ...
    Un client a forcément un utilisateur, mais un utilisateur n'est pas forcément un client.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Merci pour vos réponses,

    et oui Celira, un utilisateur n'est pas forcément un client, il peut aussi être un administrateur, un commercial etc ...et chacun est forcément un utilisateur !

    Je pense avoir une solution, supprimer la notion d'héritage, ne garder qu'une table utilisateur et spécifier simplement dnas cette table un champ genre "groupe" qui contiendra soit client, admin, commercial etc... et après à moi de gérer dans le code. Après c'est peut être pas la bonne solution ...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Vous pourrez peut-être m'aider pour une requête :

    J'ai 2 tables :
    Tache (IDTACHE, LIBELLE, etc)
    et
    Utilisateur donc (IDUTILISATEUR, IDTACHE, NOM, PRENOM, LOGIN, etc)

    Lors d'un ajout d'une tâche j'aimerai la dédiée à un utilisateur, celui qui est connecté sous son compte.

    Voici mes 2 requêtes mais qui ne fonctionnent pas :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `mabdd`.`tache` (`IDTACHE`, `LIBELLE`, `CONTENU`, `DATE`)
    VALUES ('', '$libelle', '$contenu', '$date');

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO utilisateur (IDTACHE) SELECT IDTACHE FROM tache WHERE IDTACHE.utilisateur=IDTACHE.tache AND \"" . $_SESSION['login'] . "\" = LOGIN;

    Merci.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/10/2006, 14h28
  2. probleme clé sequentiel avec insert into
    Par shake dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/06/2004, 15h54
  3. probleme d'INSERT INTO et JavaScript
    Par Matlight dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/03/2004, 15h36
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

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