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 PHP Discussion :

Problème pour insertion dans tables avec jointure


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut Problème pour insertion dans tables avec jointure
    Bonjour je travail actuellement sur un projet intéressant mais j'avoue je ne m'en sort pas vraiment avec un problème d'insertion avec jointure.

    Voici le schéma de mes tables
    http://nsa20.casimages.com/img/2010/...3912845546.jpg

    Sur la page Ajouter Client, je doit lui attribué un Groupe via un menu déroulant mais impossible de le faire je ne sais pas ou je coince.
    Donc:
    Page Ajouter Client = un champ (nom Client) + Menu déroulant avec les groupes précédemment créer.

    Je lis et relis ce tuto : http://sqlpro.developpez.com/cours/sqlaz/jointures/ mais je ne m'en sort pas ce qui me bloque car il y a pas mal de jointure comme celle ci.

    Si quelqu'un aurai une petite aide car la je sèche complètement.

    Merci à vous

    Ps: en postant le shema je me suis rendu compte d'une coquille que j'avais faites sur l'ancienne capture, je vais aller voir cela si cela arrange mon probleme.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,

    Peut-on voir comment tu génères les options du select? le formulaire et la façon dont tu lances la requête de l'insertion, bref ton code .

    La clé étrnagère client_id dans la table site doit être aussi de type INT.

    A+.

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    on va prendre l'hypothese simple.

    Le client est nouveau, le groupe est existant. Ton <select> te retourne l'id_group

    Je fais express de ne pas coller à tes noms.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO clients ( nom, id_groupe ) VALUES ( :nom, :id_groupe )
    Cas 2, le <select> retourne le nom du groupe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    INSERT INTO clients (nom, id_groupe ) VALUES ( :nom, (SELECT id_groupe FROM groupes WHERE nom_groupe = :nom_groupe ) );
    autre cas: je sais pas pourquoi tu tiens à faire une jointure.

    Note: pose une contrainte d'unicité sur "nom groupe" et "nom client", ca évite des mauvaises surprises plus tard.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse et merci de la correction je n'avais même pas vu :@

    Un input tous bête pour le nom du Client et pour l'affectation du client à un groupe :

    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
     <?
    //Connexion à mysql
    //server, login, mot de passe
    $connect = mysql_connect("localhost","root","root");
    //Connection à la base de données
    //nom de la base de données, nom de la connexion à mysql (voir plus haut)
    mysql_select_db("portail_ope", $connect);
     
     
    $SQL = "SELECT nom_groupe FROM groupe ORDER BY nom_groupe ASC";
    $res = mysql_query($SQL);
    ?>
               <label>
              <select id="affect_groupe" name="affect_groupe">
                <?
             while($val=mysql_fetch_array($res)) {
               ?><option><? echo $val["nom_groupe"];?></option><br><?
             }
          ?>
              </select>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    gene69 => Pour les jointures c'est une grande histoire lol malheureusement pour moi il me les faut. J'avais fait tous cela sans jointure cela fonctionnais tres bien mais après avoir remplie une partie de la base trop de doublon car je récupérais chaque champs d'une table dans une autre.

    Pour le code j'essaye de comprendre lol pas gagné c'est dingue je n'arrive pas a comprendre le principe.

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    bon ben c'est cas 2.

    tu peux rebasculer en cas 1 en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="',$val['id_group'],'" >',htmlspecialchar($var['nom_groupe']),'</option>';

    résolu?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    oui mais tes doublons c'est pas un manque de jointures, c'est un manque de contrainte d'intégrité (si c'est du mysql d'index unique ). Pour faire une insertion on se moque des jointures, suffit de mettre des valeurs valables.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    En faite j'ai montré mon projet à un dev pro de ma boite c'est lui qu'il ma dit de faire comme cela au vu de la base que j'ai en vrai et des données dans celle-ci.
    Je l'écoute c'est une personne compétence qui doit me montré pas mal de chose mais dans un mois.

    Pour le code j'essaye de comprendre ces jointures et ou je délire à chaque fois...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Merci gene69 j'ai enfin réussi a faire ce que je voulais j'ai l'impression que je me prenais la tête pour rien en faite c'est space lol

Discussions similaires

  1. [MySQL] insertion dans table avec jointure
    Par popoche28 dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 06/05/2010, 17h15
  2. problème pour separer une table avec une procedure
    Par mathieu38 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/04/2009, 10h25
  3. probleme d'insertion dans table avec cle secondaire
    Par pseudobidon57 dans le forum SQL
    Réponses: 1
    Dernier message: 01/06/2007, 14h46
  4. Réponses: 4
    Dernier message: 26/06/2006, 17h16
  5. insertion dans table avec plusieurs clés étrangères
    Par philippe281281 dans le forum Administration
    Réponses: 2
    Dernier message: 14/06/2006, 19h35

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