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

Langage SQL Discussion :

probleme d'insertion dans differentes tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut probleme d'insertion dans differentes tables
    bonjour à tous ,
    je voulais savoir si vous aurez un code ou une solution pour que je puisse faire de l'insertion dans deux tables differentes à partir du meme formulaire.

    je vous explique :

    supposant que j'ai la table client (id_client de type int auto_increment, nom clientde type varchar)

    la table projet ( id_projet de type int auto_increment, id_client de type int ,details de type varchar).

    j'ai un formulaire qui contient les champs suivants : nom client , details

    quand je fais mon insertion des données je veux que les deux champs soit inserè dans la table client et la table projet ,
    ainsi que comme le id_client s'auto-incremente , je veux l'inserer dans la table projet automatiquement !!!!!!!! .

    merci d'avance ,

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Je pense qu'il vaut mieux confier ça au programme qui gère le formulaire afin de faire quelques vérifications.

    Si deux clients ont le même nom, tu fais comment ?
    N'as-tu pas plutôt une liste déroulante avec les infos sur les clients ?
    Ou bien une liste des clients portant ce nom à afficher pour demander à l'utilisateur de choisir parmi les clients proposés (avec un peu plus d'infos que seulement le nom bien sûr !) ?

    Donc ton formulaire devrait dans l'ordre :
    1) interroger la BDD pour voir si un client avec ce nom existe déjà
    a) si c'est le cas, faire confirmer par l'utilisateur qu'il s'agit bien de ce client
    b) si ce n'est pas le cas, afficher un formulaire pour donner touts les renseignements relatifs au client (parce que idclient et nomclient c'est un peu léger je trouve comme renseignements !)

    2)
    Suite à a) ajouter le projet avec l'id du client correspondant à celui qui a été choisi
    Suite à b) ajouter le client et récupérer son id puis ajouter le projet avec l'id du client nouvellement créé.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut
    ce que j'ai donnè est juste un exemple simple pour resoudre mon probleme qui est plus compliquè que ca .
    le plus important pour moi est de trouver la methode d'insertion immediate dès que j'insere les donnèes dans les table client et projet , je veux que le id_client s'enregistre dans la table projet.
    ps : je connais une autre methode toute simple avec l'insertion avec des chaines de caractere et remplacer le id_client avec client et inserer client dans projet. c tout simple ca . mais lors d el'insertion et l'affichage ca va me prendre beaucoup de temps si j'ai des milliers d'enregistrement . au fait c'ets pour optimiser la base que je cherche cette methode

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Le problème de la simplification du problème est qu'on risque de te donner une solution qui ne va pas convenir à ton cas réel.

    Je t'ai décrit un principe général.

    Si tu es sûr que le client récupéré dans ton formulaire existe déjà et est unique, la requête est la suivante (en supposant que les variables récupérées du formulaire soient $nomclient et $details) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO projets(idclient, details)
    VALUES(
      (SELECT idclient
      FROM clients
      WHERE nomclient = $nomclient),
      $details
    )
    Si le client n'est pas unique, la requête retournera une erreur car le SELECT donnera plusieurs valeurs alors que le SGBD n'en veut qu'une seule.

    Si le client n'existe pas et qu'il faut au préalable le créer, voir du côté des triggers. La syntaxe étant dépendante de ton SGBD, ==> ou recherche dans la FAQ et/ou tutoriels de developpez.com correspondant à ton SGBD.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut
    ta methode est pas mal mais j'ai trouvè une autre qui est plus rapide et je n'ai pas besoin de mettre une sous requete pour l'insertion des id_client.

    par contre je voudrais savoir si t'auraispas un code qui va me permetre de verifier si un client existe deja ????

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par amesnaou Voir le message
    ta methode est pas mal mais j'ai trouvè une autre qui est plus rapide et je n'ai pas besoin de mettre une sous requete pour l'insertion des id_client.
    Laquelle ?

    par contre je voudrais savoir si t'auraispas un code qui va me permetre de verifier si un client existe deja ????
    Ça c'est le plus facile, c'est tout simplement ma sous-requête !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT idclient
    FROM clients
    WHERE nomclient = $nomclient
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. insertion dans differentes tables d'une SGBD relationelle
    Par amesnaou dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/04/2009, 18h21
  2. probleme d'insertion dans une table via perl
    Par juzii dans le forum SGBD
    Réponses: 7
    Dernier message: 21/07/2008, 17h12
  3. probleme d'insertion dans une table
    Par metwa dans le forum JBuilder
    Réponses: 1
    Dernier message: 02/05/2008, 22h21
  4. probleme d'insertion dans une table
    Par metwa dans le forum JDBC
    Réponses: 3
    Dernier message: 30/04/2008, 11h38
  5. [interbase6]probleme d'insertion dans une table
    Par macadam314 dans le forum Bases de données
    Réponses: 10
    Dernier message: 22/02/2005, 15h21

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