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 :

Insert sur un index de form select


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut Insert sur un index de form select
    Bonjour à tous,

    Je souhaite réaliser une requete d'insertion dont l'un des champs doit récupérer l'identifiant de l'option sélectionnée dans une liste déroulante.

    Voici ma liste déroulante et la requête la générant :

    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
     
    //Affichage du formulaire 
    $req2 = "select * from diplome";
    $res2 = mysql_query($req2) or die ("Erreur requête 2");
    ?>
     
    <form action="insert.php" method="POST">
    <u><strong>Diplome</strong></u><br><br>
    	<select>
    	<?php
    while ($tab = mysql_fetch_array($res2))
    {
    echo '<select name="diplome">
    		  <option value=\"'.$tab['dip_num'].'\">'.$tab['dip_code'].'</option>
    	  </select>';
    	}
    $diplome=$_POST['diplome'];	
    ?>
    La page insert.php contient la requete d'insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if(isset($_POST['dos_num']))      $dos_num=$_POST['dos_num'];
    else      $dos_num="";
     
    $diplome=$_GET['diplome'];
     
    $sql = "INSERT INTO dossier(dos_num, dip_num) VALUES('$dos_num','$diplome')";
    Le problème étant que le code diplome n'est pas récupéré et une erreur s'affiche :

    Erreur SQL !INSERT INTO dossier(dos_num, dip_num) VALUES('5','')
    Cannot add or update a child row: a foreign key constraint fails (`base/dossier`, CONSTRAINT `dossier_ibfk_16` FOREIGN KEY (`dip_num`) REFERENCES `diplome` (`dip_num`))

    Le champ dip_num de l'option doit etre récupéré dans la page insert.php, mais je pense que je m'y prend mal.

  2. #2
    Membre confirmé Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Par défaut
    Bon là déjà je sais pas si tu as fermé ta balise <form> mais si tu as oublié rajoute le.
    Ensuite dans ton insert.php tu récupère la variable diplome en méthode GET.
    La méthode GET c'est quand ta variable est envoyée via l'URL de ta page, exemple : maPage.php?variable=valeur.

    Dans ce cas là $_GET['variable'] vaudra "valeur".

    Donc c'est tout ça fait normale que le code du diplome ne soit pas récupéré vu que tu cherche une variable contenu dans $_GET alors que tu envois par POST.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if(isset($_POST['dos_num']))      $dos_num=$_POST['dos_num'];
    else      $dos_num="";
     
    $diplome=$_POST['diplome'];
     
    $sql = "INSERT INTO dossier(dos_num, dip_num) VALUES('$dos_num','$diplome')";
    Devrait être mieux.

  3. #3
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    En effet, j'ai pu corriger certaines choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form action="insert.php" method="POST">
    Diplome
    <select name="diplome">
    <?php while ($tab = mysql_fetch_array($res2))
    {
    echo'<option value=\"'.$tab['dip_num'].'\">'.$tab['dip_code'].'</option>';
    }
    echo'</select>';
     
    $diplome=$_POST['diplome'];	
    ?>
    Par contre une erreur persiste :

    Erreur SQL !INSERT INTO dossier(dos_num, dip_num) VALUES('5','\\\"3\\\"')
    Mon while pour afficher les options laisse trainer des \ et des " qui doivent géner l'insertion, dip_num étant numérique.

    Je ne sais pas s'il est possible de rajouter le dip_num dans $diplome=$_POST['diplome'] :
    $diplome=$_POST['diplome'].$tab['dip_num'];

  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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu n'as besoin d'échapper que les quotes du même type que celles encadrant la chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<option value="'.$tab['dip_num'].'">'.$tab['dip_code'].'</option>';
    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]

Discussions similaires

  1. [11gR2] Optimiser INSERT sur table cible contenant un INDEX UNIQUE
    Par ctobini dans le forum SQL
    Réponses: 5
    Dernier message: 18/07/2014, 08h57
  2. [MySQL] Select et insert sur 2 serveurs différents dans la meme requete
    Par tMSun dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/09/2008, 10h41
  3. Select et insert sur des collections
    Par layouni dans le forum PL/SQL
    Réponses: 3
    Dernier message: 19/08/2008, 14h52
  4. [debutant] select-insert sur tables de bases differentes
    Par RedMax dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/10/2004, 18h59
  5. [SYBASE] Insert sur view
    Par P'tit Jean dans le forum Sybase
    Réponses: 4
    Dernier message: 31/10/2003, 12h21

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