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 :

[SQL] Insérer des données dans une table


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut [SQL] Insérer des données dans une table
    Je reviens à la charge avec un problème similaire mais avec un message d'erreur différent.
    voici le message d'erreur
    Cannot add or update a child row : a foreign key constraint fails ('gestionconferences/conference', CONSTRAINT 'conference_ibfk_1' FOREIGN KEY ('IdUniv') REFERENCES 'universite' (IdUniv'))
    voici les codes
    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
    48
    49
    50
    51
    52
    53
    54
     
    <!--Inserer  une conférence-->
     
    <html>
    <body>
     
    <table width="100%" border="0" cellspacing="0" cellpadding="4">
    <tr> 
        <td rowspan="2" bgcolor="#666666"> <img src="" name="image" width="100" height="50"> 
        </td>
        <td width="100%" bgcolor="#666666"><font color="#CCCCCC"><h1> Gestion de conférences </h1></font> 
        </td>
     
      </tr>
     
     
    <table width="100%" border="0" cellspacing="0" cellpadding="4">
    <tr> 
     
        <td width="100%" bgcolor="red"font color="#CCCCCC">&nbsp </font> 
        </td>
     
      </tr>
    </table>
     
     
    <?php
    require("connect1.php");
     
     
    $selectIdUniv=mysql_query("select * from universite");
    echo"<table  border=0 >";
    echo"<form action='inserer_Conf.php'   method=POST>";
    echo"<tr> <td >IdConf<td><input type='text' name='IdConf' ></tr>";
    echo"<tr> <td width=15%>Intitule<td><textarea cols=80 rows=4 name='intitule'></textarea></tr><br>";
    echo"<tr> <td >dateSoumission<td><input type='text' name='dateSoumission' ></tr>";
    echo"<tr> <td >dateAcceptation<br><td><input type='text'  name='dateAcceptation'></tr>";
    echo"<tr> <td >dateFin<td><input type='text' name='dateFin'><td></tr>";
    echo"<tr> <td >droitInsc<td><input type='text' name='droitInsc'></tr>";
    echo"<tr> <td >NbArtMax<td><input type='text'  name='nbArtMax'></tr>";
    echo"<tr> <td >IdUniv<td><select name='IdUniv'>";
    while($idUniv=mysql_fetch_object($selectIdUniv)){
    				echo"<option value='IdUniv' name='idUniv'>$idUniv->IdUniv</option>";
    }
    			echo" </select></tr>";
     
    echo"</table>";
    echo"<input type='submit' value='Envoyer' name='envoyer'><input type='reset' value='Réinitialiser' name='reinitialiser'>";
    echo"</form>";
     
    ?>
     
    </body>
    </html>
    et
    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
     
     
     
     
     
    <?php
    require("connect1.php");
     
    $IdConf=$_POST["IdConf"];
    $intitule=$_POST["intitule"];
    $dateSoumission=$_POST["dateSoumission"];
    $dateAcceptation=$_POST["dateAcceptation"];
    $dateFin=$_POST["dateFin"];
    $droitInc=$_POST["droitInsc"];
    $nombreArtMax=$_POST["nombreArtMax"];
    $envoyer=$_POST["envoyer"];
    $iduniv=$_POST["idUniv"];
     
     
    if($envoyer){
    $selectIdUniv=mysql_query("select * from universite WHERE IdConf=$IdConf");
     
    $insertConf=mysql_query("INSERT INTO  conference (IdConf,Intitule,DateSoumission,DateAcceptation,DateFin,DroitInsc,NbArtMax,IdUniv) VALUES('$IdConf','$intitule','$dateSoumission','$dateAcceptation','$dateFin','$droitInc','$nombreArtMax','$iduniv')")or die("problème de requete insertion dans conference:".mysql_error());
    #mysql_query("INSERT INTO universite (idUniv) VALUES($iduniv)")or die("problème de requete table université:".mysql_error()); 
    }
    ?>
    <script language="javascript" type="text/javascript">
    	<!--
    	window.location.replace("espaceModifConf.php");
    	-->
    </script>
    en effet IdUniv est clé étrangère dans la table "conference" et clé primaire dans "université".

  2. #2
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Pense à mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    or die(mysql_error());
    A chaque requête SQL, même les plus simples, parce que des fois, c'est l'origine des problèmes
    Et puis, il faut des apostrophes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #mysql_query("INSERT INTO universite (idUniv) VALUES('$iduniv')")or die("problème de requete table université:".mysql_error()); 
    Et puis, si j'étais toi, j'utiliserais isset pour savoir si les variables éxistent, et donc si l'utilisateur a bien remplis les champs
    Omnes Vulnerant Ultima Necat
    Bye

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Merci pour ta reponse Shugo78.
    C'est pa la requête que tu as cité en exemple qui est en cause, c'est plutôt celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $insertConf=mysql_query("INSERT INTO  conference (IdConf,Intitule,DateSoumission,DateAcceptation,DateFin,DroitInsc,NbArtMax,IdUniv) VALUES('$IdConf','$intitule','$dateSoumission','$dateAcceptation','$dateFin','$droitInc','$nombreArtMax','$iduniv')")or die("problème de requete insertion dans conference:".mysql_error());
    merci pour tes précieux conseils.
    J'ai quand -même vérifier que ma requête marche sous phpMyAdmin. Avec un echo j'ai bien les variables envoyées. En plus sur la page formulaire de remplissage il y a une requête qui va chercher les les valeurs de la colonne qui est en cause (IdUniv). Donc elles sont bien dans la colonne parente.
    Bizzar!!!!

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Récaptitulons :
    ta requête est syntaxiquement correcte, fonctionne sur phpmyadmin, a toutes les valeurs remplies.

    Est-ce que le problème ne viendrait pas de ta contrainte (foreign key) ? Comment la définis-tu ?
    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]

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    voilà comment j'ai défini ma contrainte FK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    foreign key (IdUniv) references universite (IdUniv)

  6. #6
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par wonga
    voilà comment j'ai défini ma contrainte FK
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    foreign key (IdUniv) references universite (IdUniv)
    ça a l'air correct...

    A priori, l'erreur te dit que l'idnuniv que tu essayes d'insérer n'existe pas, c'est-à-dire qu'il n'ya aucun élément de la table universite dont l'iduniv correspond. Tu es sûr qu'il ya bien quelque chose qui correspond ?
    Genre si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $verif = "SELECT * FROM universite WHERE IdUniv=$iduniv" ;
    $res_verif = mysql_query($verif) or die ($verif.' : '.mysql_error());
    $data_verif = mysql_fetch_array($res_verif) or die ('pas de resultat');
    print_r $data_verif;
    avant l'insertion, qu'est-ce que tu obtiens ?
    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]

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    effectivement il y a un problème avec la requête $evrif.
    voici le message d'erreur
    you have an error in your SQL syntax, check the manual that correspond to your mysql server version for right syntax to use near " at line 1
    PS. la fonction print_r n'a pas fonctionné chez moi.
    je viens de rajouter des quotes simples à la variable $iduniv et j'ai la réponse suivante
    pas de resultat
    je vais devoir revoir la récupération des variables

  8. #8
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bon le premier bug venait de moi
    Le second vient du fait que tu n'as effectivement pas d'université correspondante...
    Maintenant, il faut trouver pourquoi... Yapluka
    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]

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    je pense c'est un problème de mon champ "IdUniv" dont les valeurs sont obtenues par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo"<tr> <td >IdUniv<td><select name='IdUniv'>";
    while($idUniv=mysql_fetch_object($selectIdUniv)){
    				echo"<option value='IdUniv' name='idUniv'>$idUniv->IdUniv</option>";
    }
    			echo" </select></tr>";
    je pense qu'il y a un cafouillage mais où je ne sais pas!!

  10. #10
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je ne garantis rien, mais à ta place j'éviterais d'appeler mon objet iduniv aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $idUniv=mysql_fetch_object($selectIdUniv)
    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]

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    j'ai déjà commencé par corriger les petites erreurs et voici ce que devient le code au niveau du champ "select"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    echo"<tr> <td >IdUniv<td><select name='iduniv'>";
    while($idUniv=mysql_fetch_object($selectIdUniv)){
    				echo"<option value='$idUniv->IdUniv' >$idUniv->IdUniv</option>";
    }
    			echo" </select></tr>";
    ma variable de récup est $iduniv=$_POST['iduniv']
    et j'ai en resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     la valeur de $iduniv=IdUniv
    c'est à dire le nom du champ et non sa valeur. je ne pige pas encore

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    tu as raison.j'ai changé de nom à ma variable et ça roule. je n'aurais même pas imaginé. merci beaucoup Celira

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

Discussions similaires

  1. [MySQL] Insérer des données dans une table avec Foreach
    Par Gogad dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/04/2010, 08h53
  2. Réponses: 2
    Dernier message: 16/01/2010, 16h24
  3. Réponses: 1
    Dernier message: 23/03/2009, 13h56
  4. [MySQL] Insérer des données dans une table, mais ce n'est pas une table USER
    Par amerex dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/08/2008, 00h01
  5. Access: Insérer des données dans une table acces
    Par Malika_AL dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/01/2008, 22h41

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