Bonjour je fais une page d'inscription mais j' ai probleme avec mon insert in to

une fois soumis me fais un message de ce genre

Cannot add or update a child row: a foreign key constraint fails (`projet_bah`.`membres`, CONSTRAINT `fk_membres_statut1` FOREIGN KEY (`statut_id1`) REFERENCES `statut` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

voici mon code s'achant que mon ma table membe a une clé etrangère
voici mon code



<h3>Page incription</h3>
<!-- traitement du formulaire-->
<?php

// je me connecte sur la base de données
$host= 'localhost';
$base= 'projet_bah';
$user= 'root';
$password = "";
mysql_connect($host,$user,$password) OR DIE('Vous avez un problème de connexion') ;
mysql_select_db($base) OR DIE ('la base de données h\'existe pas');

// function insert_membre($nom, $prenom,$naissance,$adresse,$telephone,$mail,$MDP,$confirmeMDP)
// {


if (isset($_POST['valider']))


{
// je stocke les valeurs dans des variables tout en prevoyant les injections Sql
$nom = htmlspecialchars(htmlentities($_POST['nom']));
$prenom = htmlspecialchars(htmlentities($_POST['prenom']));
$naissance = htmlspecialchars(htmlentities($_POST['naissance']));
$adresse = htmlspecialchars(htmlentities($_POST['adresse']));
$telephone = htmlspecialchars(htmlentities($_POST['telephone']));
$mail = htmlspecialchars(htmlentities($_POST['mail']));
$mdp = htmlspecialchars(htmlentities($_POST['mdp']));
$conf_mdp = htmlspecialchars(htmlentities($_POST['conf_mdp']));

if(!empty($_POST['nom'])
&& !empty($_POST['prenom'])
&& !empty($_POST['naissance'])
&& !empty($_POST['adresse'])
&& !empty($_POST['telephone'])
&& !empty($_POST['mail'])
&& !empty($_POST['mdp'])
&& !empty($_POST['conf_mdp']))
{


// controle de l'e-mail
$point = strpos($_POST['mail'],'.');
$arobase = strpos($_POST['mail'],'@');
if(($point === false) || ($arobase === false))
{
$message_erreur = " Votre adresse mail contient une erreur! veillez la corriger!";
echo $message_erreur;
}else{// tout va bien

// Je fais ma requete.
$sql = "INSERT INTO membres(membres_id,nom, prenom, naissance,adresse,telephone,mail,mdp,confirme_mdp,piece_jointe,langue)
VALUES('','$nom', '$prenom','$naissance','$adresse','$telephone','$mail','$mdp','$conf_mdp','toto','toto')";
mysql_query($sql)
or die ("Erreur SQL :".mysql_error());
echo "Vous etes inscrits avec succès!";
}

}else
{
echo "l'un des champs est vide!";
}

}

<!-------------- mon formulaire----------------------->
<form method="POST" action="inscription.php">
NOM: <input type ="text" name="nom" value=""/> <br/>
Prenom:<input type ="text" name="prenom" value=""/> <br/>
Date de naissance:<input type ="text" name="naissance" value=""/><br/>
adresse:<input type ="text" name="adresse" value=""/><br/>
Téléphone:<input type ="text" name="telephone" value=""/><br/>
E-mail:<input type ="text" name="mail" value=""/><br/>
Mot de passe:<input type ="password" name="mdp" value=""/><br/>
confirmer votre mot de passe:<input type ="password" name="conf_mdp" value=""/><br/>

<span><strong> joindre une pièce:</strong></span><br /><br/>
<input type="hidden" value="3000000" /><br/>
<input name="userfile" type="file" /><br/>


<input type="reset" name="effacer" value="effacer">
<input type="submit" name="valider" value="valider">

</form>
Salut


Ton membre_id c'est un autoincrement ? et tu essaye de lui rentrer un champs vide ? pas possible.

INSERT INTO membres([#red]*probleme ici ->*||membres_id||**[/#],nom, prenom, naissance,adresse,telephone,mail,mdp,confirme_mdp,piece_jointe,langue)
VALUES([#red]*probleme ici ->*||''||**[/#],'$nom', '$prenom','$naissance','$adresse','$telephone','$mail','$mdp','$conf_mdp','toto','toto')


mais bon... le problème dit

Cannot add or update a child row: a foreign key constraint fails (`projet_bah`.`membres`, CONSTRAINT `fk_membres_statut1` FOREIGN KEY (`statut_id1`) REFERENCES `statut` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)


qu'on ne peut pas ajouter ou modifier une ligne , car la clé secondaire fail. probleme avec statut_id1, qui fait reference a `statut` (`id`). Il faut lui par contre (c'est une clef secondaire) l'ajouter a la main, dans ta requêtes, le status_id1, qui doit sans doute ce trouver dans ta table MEMBRES.
Modifié par JuseN (13 Mar 2013 - 10:18)