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 :

Problème d'insertion de données dans table d'associations [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Par défaut Problème d'insertion de données dans table d'associations
    Bonjourà tous.
    Voila j'ai 2 tables et une associations comme suit:
    depart (#num_dep,date_envoi,contenu_dep)
    personnes(#num_pers,nom_pers,pre_pers)
    envoyer(#num_dep,#num_pers)

    Je souhaiterais enregistrer de nouveaux departs (la liste des personnes est deja préenregistré dans une liste deroulante), et que la correspondance entre le num_dep de l'association envoyer et le num_dep de la table depart se fasse automatiquement. Merci de m'aider car moi je galere.

  2. #2
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    ta question est un peu vague...
    tu bloques ou? logique code? sais tu exactement ce que tu veux faire?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Par défaut
    je bloque.
    Ce que je veu:
    j'ai un formulaire pour depart avec la liste deroulante des personnes et mon probleme c'est que lorsque je valide le num_dep de envoyer reste à zero alors que num_pers a sa valeur. Comment faire pour que le num_dep d'envoyer recupere la valeur correspondante au num_dep de la table depart .

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    Montre nous ton code, car là c'est dur de bien comprendre et pouvoir ensuite t'aider

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Par défaut
    Voici le formulaire
    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
    <form name="ajout_dep" method="post" action="valider_dep.php">
    <td><input type=hidden name="num_dep"></td>
    <td class="label">Date:</td>
    <td><input type="text" id="id_ddn" name="date_envoi" size="20" maxlength="10" tabindex="1"/>
    <?php saisie_calendrier("ajout_dep","date_envoi","id_ddn");?></td>
    <td class="label">recommande:</td>
    <td><input type="radio" name="recommande" value="oui">oui
    <input type="radio" name="recommande" value="non">non<br>
    </td><br>
    <td class="label">Contenu:</td>
    <td><textarea name="contenu_dep" cols=30  rows=4></textarea></td><br>
     
     
    <td class="label">Personnes</td>
    <td><select name="num_pers">
    <?php
    $req_pers=mysql_query("SELECT *
    					   FROM personnes_tiers;");
     
    while ($pers = mysql_fetch_array($req_pers))
     
    {
    	echo"<option value=".$pers['num_pers'].">".$pers['nom_pers']." ".$pers['pre_pers']."</option>";
    }
    ?>
    </select></td>
    <br><input type="submit" name="valider" value="ajouter">
    </form>
    voici le code pour inserer les données dans la base mysql
    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
     
    <?php
    include("config.inc.php");
    $date_envoi=$_POST["date_envoi"];
    $recommande=$_POST["recommande"];
    $contenu_dep=$_POST["contenu_dep"];
    $num_chd=$_POST["num_chd"];
    $num_pers=$_POST["num_pers"];
    $num_dep=$_POST["num_dep"];
     
     
    $sqlenv="INSERT INTO envoyer (num_dep,num_pers)
    VALUES ('$num_dep','$num_pers');";
    mysql_query($sqlenv);
     
    $sqldep="INSERT INTO depart (num_dep,date_envoi,recommande,contenu_dep,num_chd)
    VALUES ('','$date_envoi','$recommande','$contenu_dep','$num_chd');";
    mysql_query($sqldep);
    ?>
    Avec ce code mon num_dep qui est dans envoyer reste à zero et donc ne correspond a la valeur de num_dep qui est dans depart.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Dans ton formulaire, tu ne donnes pas de valeur à ton champ hidden num_dep.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Par défaut
    num_dep est en autoincrement dans la base de données faut faire comment pour lui assigner la valeur avec du sql?

  8. #8
    Membre éprouvé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sqlenv="INSERT INTO envoyer (num_dep,num_pers)
    VALUES ('','$num_pers');";
    mysql_query($sqlenv);
    là c'est en auto-increment num_dep prend +1 si le champ est paramétré pour l'auto-increment

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 48
    Par défaut
    Citation Envoyé par Ben42
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sqlenv="INSERT INTO envoyer (num_dep,num_pers)
    VALUES ('','$num_pers');";
    mysql_query($sqlenv);
    là c'est en auto-increment num_dep prend +1
    Et en Ajax ??


    Si tu tiens vraiment à récupérer ce numéro tu peux faire un : select max(num_dep) from table ...
    Mais la solution de Ben est la bonne

  10. #10
    Membre éprouvé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut
    pour une fois qu'on est d'accord tintin

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Par défaut
    Le num_dep qui est dans envoyer n'est pas en auto-increment c'est celui qui est dans depart qui l'est.Je veu que celui le num_dep d'envoyer recupere ou corresponde a celui qui est dans depart

  12. #12
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 48
    Par défaut
    Ton problème vient du fait que tu n'as pas de value dans ton input ...

    Donc dans ton input tu y mets la valeur que tu veux (celle de ton num_dep en l'occurrence )... car si t'y mets rien il pourra rien te récupérer c'est normal ....

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Il faut donc que tu inverses tes requêtes :
    1) Tu INSERT dans depart.
    2) Tu récupères l'id (num_dep) grâce à mysql_insert_id().
    3) Tu INSERT dans envoyer, avec cette dernière valeur récupérée.
    Sinon, comment veux-tu insérer un id d'un enregistrement qui n'a pas encore eu lieu ?
    Attention : lis la doc sur mysql_insert_id() pour éviter les risques de parasitage.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Par défaut
    mon probleme est resolu , merci beaucoup a tous

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

Discussions similaires

  1. Problème d'insertion de données dans ma table
    Par flilou dans le forum Zend_Db
    Réponses: 10
    Dernier message: 05/10/2011, 17h23
  2. [MySQL] problème d'insertion de données dans 3 tables
    Par goldray dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/04/2011, 20h07
  3. [Oracle] problème d'insertion de données dans une table sous oracle
    Par Zombiman dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/05/2009, 14h58
  4. problème d'insertion de données dans table
    Par loic20h28 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 31/01/2008, 17h26
  5. [MySQL] Problème insertion de données dans table Mysql
    Par Malcolm78 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/10/2007, 17h25

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