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 :

Insertion de données avec liaison entre tables


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Points : 33
    Points
    33
    Par défaut Insertion de données avec liaison entre tables
    Bonjour,
    Avant tout je vais essayé d’être clair j'en suis a l’étape ajout d'un devis.

    j'ai une table devis / lignedevis / client, le problème je ne vois pas comment aborder la chose ( jointure de table ....)

    sur ma page je sélectionne le client jusque la ok dans ma ligne devis je rentre( le code produit / description / quantité / pu /tva puis un bouton valider.

    ma question étant que lorsque je remplis une ligne dans ma requête qui enregistre ma ligne il va bien falloir que la ligne soit associé a un devis pour un client. donc ma requête va etre entre deux tables ( devis et ligne devis )donc une jointure non ?

    donc se qu'il en ressort c'est

    pour le devis
    table : devis
    id_client
    date_creation

    pour les lignes devis
    table : lignedevis
    id_devis
    codearticle_lignedevis
    description_lignedevis
    quantite_lignedevis
    prixunitaire_lignedevis

    Nom : devis.jpg
Affichages : 963
Taille : 128,1 KoNom : devis.jpg
Affichages : 963
Taille : 128,1 KoNom : devis.jpg
Affichages : 963
Taille : 128,1 Ko

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Je ne comprends pas ton schéma: pourquoi le lien est-il entre la table article et la table devis, et non la table ligne_devis ?
    Car avec ce schéma, tu ne peux avoir qu'un devis par article/client...

    Tatayo.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Points : 33
    Points
    33
    Par défaut
    Oui effectivement je rectifie cela merci, voit tu comment je pourrai mettre en place la jointure

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    La première chose à faire est de créer une ligne dans la table Devis, et d'en récupérer l'ID.
    Ensuite il suffit d'insérer autant de ligne que nécessaire dans la table Lignedevis, en spécifiant l'ID récupéré précédemment.


    Tatayo.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Points : 33
    Points
    33
    Par défaut
    merci pour ta réponse mais faudrait pas faire l'inverse:
    Dans ligne devis on rajoute l'id du devis, puis a chaque ligne devis créer on ajoute l'id du devis concerné ?

    Comme ca lors d'un appel de devis il reprend toutes les ligne concerné.

    Sinon en suivant tes lires ma cardinalisation n'est pas bonne

    Nom : ldevis.jpg
Affichages : 513
Taille : 96,8 Ko

    Mais par contre va falloir que je face une jointure entre ces deux tables ? peux t'on faire un insert into + jointure ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Citation Envoyé par micus Voir le message
    merci pour ta réponse mais faudrait pas faire l'inverse:
    Dans ligne devis on rajoute l'id du devis, puis a chaque ligne devis créer on ajoute l'id du devis concerné ?
    Comme ca lors d'un appel de devis il reprend toutes les ligne concerné.
    C'est précisément ce que j'ai dit: en premier on crée le devis pour avoir son ID, ensuite on crée les lignes.

    Citation Envoyé par micus Voir le message
    Mais par contre va falloir que je face une jointure entre ces deux tables ? peux t'on faire un insert into + jointure ?
    Là par contre je ne comprends pas la question. A ma connaissance, tu ne peux pas insérer des lignes dans deux tables avec un seul INSERT.
    Donc ici il te faut un INSERT pour l'entête (Devis), et ensuite un INSERT par ligne (ligneDevis). Le tout bien sûr dans une transaction...

    Tatayo.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Points : 33
    Points
    33
    Par défaut
    Donc je vais faire un script de se genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    session_start ();
     
    if ( isset( $_SESSION['id_employe']) ) {
    // Recuperation pour la variable 
    $id_employe = $_SESSION['id_employe'];
    }
    if (isset($_SESSION['email_employe'] )) {
     
     
    include_once('../script/connect.php');
     
    $id_client = $client['id_client'];
    $id_employe = $_SESSION['id_employe'];
    $date_creation = $_POST['date_creation'];
     
     
     
    $id_article = $_POST['id_article'];
    $description_lignedevis = $_POST['description_lignedevis'];
    $quantite_lignedevis = $_POST['quantite_lignedevis'];
    $prixunitaire_lignedevis = $_POST['prixunitaire_lignedevis'];
    $tva_lignedevis = $_POST['tva_lignedevis'];
     
     
    $creationdevis = $bdd -> prepare('INSERT INTO Devis (id_client, id_employe, date_creation) 
    						VALUES (:id_client, :id_employe, :date_creation)');
     
    $creationdevis->execute(array(
    					'id_client' => $id_client,
    					'id_employe' => $id_employe,
    					'date_creation' => $date_creation));
     
     
     
     
     
    $insertionlignedevis = $bdd -> prepare('INSERT INTO Lignedevis (id_devis, code_article, description_lignedevis, quantite_lignedevis,prixunitaire_lignedevis,tva_lignedevis) 
    						VALUES (:code_article, :description_lignedevis, :quantite_lignedevis, :prixunitaire_lignedevis, :tva_lignedevis)');
     
    $insertionlignedevis->execute(array(
    					'id_devis' => $id_client,
    					'code_article' => $id_client,
    					'description_lignedevis' => $id_client,
    					'quantite_lignedevis' => $id_client,
    					'prixunitaire_lignedevis' => $id_client,
    					'tva_lignedevis' => $tva_lignedevis));
    par contre avant insertion $insertionlignedevis, il faut que je lance une requete de lecture de la table devis pour recuperer l'ID ?

Discussions similaires

  1. [AC-2010] Requete avec liaison entre tables
    Par junty dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/06/2012, 17h17
  2. [XL-2002] Copie de données avec liaison entre 2 classeurs
    Par cedana dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/03/2010, 17h44
  3. Réponses: 5
    Dernier message: 03/04/2008, 19h02
  4. Problème avec une liaison entre table
    Par dominou73 dans le forum Hibernate
    Réponses: 7
    Dernier message: 29/10/2007, 15h29
  5. Liaison entre tables avec jointure
    Par Janitrix dans le forum Zend_Db
    Réponses: 2
    Dernier message: 08/09/2007, 12h12

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