MESSAGE D ERREUR LORS DE L'INSERTION

Invité
Invité n'ayant pas de compte PHPfrance

07 févr. 2009, 21:06

bonjour,

apres un certains temps j ai reussi a regler des probleme du code mais j ai a present des erreur lors de l'insertion d'une annonce par une personne qui s'est loguer par la page precedente:

Code : Tout sélectionner

Cannot add or update a child row: a foreign key constraint fails (`idealeparut/annonce`, CONSTRAINT `annonce_ibfk_3` FOREIGN KEY (`n_annonceur`) REFERENCES `annonceur` (`num_annonceur`) ON DELETE CASCADE ON UPDATE CASCADE)
je ne sais pas quoi faire voici ma page de traitement:

Code : Tout sélectionner

<?PHP include("../include/session.php"); $description = ""; $keywords = ""; $subject = ""; $title = ""; $fakea = ""; $menu = true; $content=true; $publicite=false; // Page faisant appel aux sessions session_start(); echo("<pre>") ; print_r($_SESSION) ; echo("</pre>") ; if( isset($_POST['choixCategorieSelect'])AND isset($_POST['titre'])AND isset($_POST['description']) AND isset($_POST['PrixVenteImmo'])AND isset($_POST['typeAnnonce'])AND isset($_POST['situationAnnonceur']) AND isset($_POST['choixCategorieSelect']) AND isset($_POST['photop'])AND isset($_POST['photos']) AND isset($_POST['gras'])AND isset($_POST['partenaire'])AND isset($_POST['cp']) AND isset($_POST['SurfaceVenteImmo']) AND isset($_POST['PieceVenteImmo'])AND isset($_POST['SurfaceLocationImmo']) AND isset($_POST['PieceLocationImmo'])AND isset($_POST['PrixLocationImmo'])AND isset($_POST['MarqueVehicule']) AND isset($_POST['AnneeVehicule'])AND isset($_POST['KmVehicule'])AND isset($_POST['choixCarburantSelect']) AND isset($_POST['inputCylindre'])AND isset($_POST['Uploadphotop'])AND isset($_POST['Uploadphotos'])); { // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité $situationAnnonceur = mysql_real_escape_string(htmlspecialchars($_POST['situationAnnonceur'])); $choixCategorieSelect = mysql_real_escape_string(htmlspecialchars($_POST['choixCategorieSelect'])); $titre = mysql_real_escape_string(htmlspecialchars($_POST['titre'])); $description = mysql_real_escape_string(htmlspecialchars($_POST['description'])); $SurfaceVenteImmo = mysql_real_escape_string(htmlspecialchars($_POST['SurfaceVenteImmo'])); $SurfaceLocationImmo = mysql_real_escape_string(htmlspecialchars($_POST['SurfaceVenteImmo'])); $PieceLocationImmo = mysql_real_escape_string(htmlspecialchars($_POST['PieceLocationImmo'])); $PieceVenteImmo = mysql_real_escape_string(htmlspecialchars($_POST['PieceVenteImmo'])); $PrixLocationImmo = mysql_real_escape_string(htmlspecialchars($_POST['PrixLocationImmo'])); $PrixVenteImmo = mysql_real_escape_string(htmlspecialchars($_POST['PrixVenteImmo'])); $MarqueVehicule = mysql_real_escape_string(htmlspecialchars($_POST['MarqueVehicule'])); $AnneeVehicule = mysql_real_escape_string(htmlspecialchars($_POST['AnneeVehicule'])); $KmVehicule = mysql_real_escape_string(htmlspecialchars($_POST['KmVehicule'])); $choixCarburantSelect= mysql_real_escape_string(htmlspecialchars($_POST['choixCarburantSelect'])); $inputCylindre= mysql_real_escape_string(htmlspecialchars($_POST['inputCylindre'])); $photop = mysql_real_escape_string(htmlspecialchars($_POST['photop'])); $photos = mysql_real_escape_string(htmlspecialchars($_POST['photos'])); $gras = mysql_real_escape_string(htmlspecialchars($_POST['gras'])); $partenaire = mysql_real_escape_string(htmlspecialchars($_POST['partenaire'])); $Uploadphotop = mysql_real_escape_string(htmlspecialchars($_POST['Uploadphotop'])); $Uploadphotos = mysql_real_escape_string(htmlspecialchars($_POST['Uploadphotos'])); $typeAnnonce = mysql_real_escape_string(htmlspecialchars($_POST['typeAnnonce'])); $cp = mysql_real_escape_string(htmlspecialchars($_POST['cp'])); $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error()); // sélection de la base mysql_select_db('idealeparut',$db) or die('Erreur de selection '.mysql_error()); $sql = "INSERT INTO annonce (num_annonce,titre_annonce,surfaceVenteImmo, SurfaceLocationImmo,PieceVenteImmo,AnneeVehicule,KmVehicule,PieceLocationImmo, InputCylindre,MarqueVehicule,description,prixVenteImmo,PrixLocationImmo, photo_principal,photo_supplementaire,Uploadphotop,Uploadphotos, gras, partenaire, n_categorie_annonce,cp_annonce,ref_carburant,n_typeannonceur,n_annonceur,n_type_annonce)VALUES ('','$situationAnnonceur','$typeAnnonce', '$choixCategorieSelect', '$titre', '$description', '$SurfaceVenteImmo', '$PieceVenteImmo', '$PrixVenteImmo', '$SurfaceLocationImmo', '$PieceLocationImmo','$PrixLocationImmo', '$MarqueVehicule', '$AnneeVehicule','$KmVehicule' , '$inputCylindre','$photop', '$photos','$Uploadphotop','$Uploadphotos', '$gras', '$partenaire' ,'$cp','$choixCarburantSelect','$idmembre') "; // Ensuite on enregistre le message /*$requete = "INSERT annonceur VALUES ('','$nom', '$email', '$tel', '$cp', '$SurfaceLocationImmo', '$PieceLocationImmo','$PrixLocationImmo', '$MarqueVehicule', '$AnneVehicule','$KmVehicule', '$ChoixCarburantSelect', '$inputCylindre','$photop', '$photos', '$gras', '$partenaire')";*/ // Execution de cette requete dans la base enregistrement mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); // On se déconnecte de MySQL mysql_close(); $content .= ' <p><center>Votre compte &agrave; bien été créer</center></p><br> <center>Merci de votre visite<br><a href="index.php"> Retour au menu </a></center>'; } include("../include/base2.php"); ?>
cette page est appelle par la page precedente du formulaire d'annonce qui celle ci:

Code : Tout sélectionner

<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml"><head> <script type="text/javascript"> function ifOther(elem){ if(elem == 'Ventes Immobilière'){ document.getElementById('Immobilier').style.visibility = 'visible'; } else{ document.getElementById('Immobilier').style.visibility = 'hidden'; /*document.getElementById('Immobilier').value = '';*/ } if((elem == ('Location Immobilière'))||(elem == ('Colocations'))){ document.getElementById('Location').style.visibility = 'visible'; document.getElementById('Location').style.visibility = 'visible'; document.getElementById('Location').style.visibility = 'visible'; } else{ document.getElementById('Location').style.visibility = 'hidden'; /*document.getElementById('Immobilier').value = '';*/ } if(elem == 'Auto'){ document.getElementById('Vehicule').style.visibility = 'visible'; document.getElementById('Carburant').style.visibility = 'visible'; } else{ document.getElementById('Vehicule').style.visibility = 'hidden'; document.getElementById('Carburant').style.visibility = 'hidden'; /*document.getElementById('Immobilier').value = '';*/ } if(elem == 'Moto'){ document.getElementById('Vehicule').style.visibility = 'visible'; document.getElementById('Cylindre').style.visibility = 'visible'; } else{ document.getElementById('Cylindre').style.visibility = 'hidden'; /*document.getElementById('Immobilier').value = '';*/ } } </script> <meta http-equiv="content-type" content="text/html; charset=iso-8859-15"> <!--<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15" />--> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="subject" content=""> <meta name="author" content="idealeparution"> <meta name="revisit-after" content="10 days"> <meta name="robots" content="index, follow"> <meta name="sitename" content="idealparution.fr"> <link href="http://localhost/idealeparution/css/style.css" type="text/css" rel="stylesheet"> <!--[if lte IE 6]> <link href="http://localhost/idealeparution/css/ie.css" type="text/css" rel="stylesheet" /> <![endif]--> <script language="JavaScript"> function favoris() { if ( navigator.appName != 'Microsoft Internet Explorer' ) { window.sidebar.addPanel("le nom du site","http://www.tonsite.com",""); } else { window.external.AddFavorite("http://www.tonsite.com","le nom du site"); } } </script> <title>IdealeParution: </title> </head><body> <div id="header"> </div> <!-- end #header --> <div id="menu"> <div class="menu"> <!-- un menu de navigation --> <ul class="menu1"> <li class="current"><a href="http://localhost/idealeparution/index.php"><b>Accueil</b></a></li> <li><a href="http://localhost/idealeparution/emplois/index.php?categorie=3"><b>Emplois</b></a></li> <li><a href="http://localhost/idealeparution/loisirs/index.php?categorie=5"><b>Loisirs</b></a></li> <li><a href="http://localhost/idealeparution/viequotidienne/index.php?categorie=6"><b>Vie Quotidienne</b></a></li> <li><a href="http://localhost/idealeparution/animaux/index.php?categorie=4"><b>Animaux</b></a></li> <li><a href="http://localhost/idealeparution/immobilier/index.php?categorie=1"><b>Immobilier</b></a></li> <li><a href="http://localhost/idealeparution/high-tech/index.php?categorie=8"><b>High-tech</b></a></li> <li><a href="http://localhost/idealeparution/vehicules/index.php?categorie=2"><b>Vehicules</b></a></li> <li><a href="../services/index.php"><b>Mes commerçants</b></a></li> </ul> </div></div> <!-- end #menu --> <div id="page"> <div id="content"> <form name="formulaireannonce" method="post" action="traitementAnnonce.php" class="fideliest"> <fieldset id="formtotal"> <fieldset id="formgauche"> <p><label class="sous_titre"> 1. Informations personnelles :</label></p><br><br> <p><label>Vous êtes un : </label></p> <p><input class="categorie" name="situationAnnonceur" id="situationAnnonceur" value="particulier" checked="checked" type="radio"> <label>particuler</label></p> <p><input class="categorie" name="situationAnnonceur" id="situationAnnonceur" value="profesionnel" type="radio"> <label>professionel</label></p> <p><label>Type d’annonce: </label></p> <p><input class="categorie" id="typeAnnonce" name="typeAnnonce" value="offre" checked="checked" type="radio"><label>Offre</label></p> <p><input class="categorie" id="typeAnnonce" name="typeAnnonce" value="demande" type="radio"><label>Demande</label></p> <p><label> Nom :</label><br> g</p> <p><label> Email :</label><br> g</p> <p><label>Tel :</label><br> 0</p><p><label>num :</label><br> 45</p> <label>Code postal(de l’annonce) :</label> <br> <p><input size="5" length="5" maxlength="5" name="cp" value="" onkeyup="afficheVille(this.size, this.value)" class="text" type="text"></p> <br><br><span id="listeville"></span> </fieldset> <fieldset id="formmilieu"> <p><label class="sous_titre"> 2. Annonces :</label></p><br><br> <p><label for="tel">Catégorie :</label> <select name="choixCategorieSelect" onchange="ifOther(this.value)" id="choixCategorieSelect" style="display: block; width: 200px;" text=""> <option value="vide">- - - Choisissez une catégorie - - -</option> <optgroup label="IMMOBILIER"><option value="Ventes Immobilière">Ventes Immobilière </option> <option value="Location Immobilière">Location Immobilière </option> <option value="Colocations">Colocations </option> <option value="Locations de vacances">Locations de vacances </option> <option value="Bureaux et Commerces">Bureaux et Commerces </option> <option value="Avis de recherche">Avis de recherche </option> <option value="Programme neufs">Programme neufs </option> <option value="Divers">Divers </option> </optgroup> <optgroup label="VEHICULES"><option value="Auto">Auto </option> <option value="Moto">Moto </option> <option value="Naustisme">Naustisme </option> <option value="Caravaning">Caravaning </option> <option value="Pièces détachées">Pièces détachées </option> <option value="Autres">Autres </option> </optgroup><optgroup label="EMPLOI"><option value="Achat,Logistique,Transport">Achat,Logistique,Transport </option> <option value="Administration,Secrétariat">Administration,Secrétariat </option> <option value="Automobile">Automobile </option> <option value="BTP, Architecture">BTP, Architecture </option> <option value="Commerce et services de proximité">Commerce et services de proximité </option> <option value="Commercial, ventes">Commercial, ventes </option> <option value="Communication">Communication </option> <option value="Conseil-Audit">Conseil-Audit </option> <option value="Direction générale">Direction générale </option> <option value="Environnement">Environnement </option> <option value="Gestion, ComptabilitéFinance">Gestion, ComptabilitéFinance </option> <option value="Industrie, Production">Industrie, Production </option> <option value="Informatique,Telecom">Informatique,Telecom </option> <option value="Juridique">Juridique </option> <option value="Marketing">Marketing </option> <option value="Recherche et developpment">Recherche et developpment </option> <option value="Ressources humaines, Formation">Ressources humaines, Formation </option> <option value="Santé, social">Santé, social </option> <option value="Tourisme, Hôtellerie, Restauration">Tourisme, Hôtellerie, Restauration </option> </optgroup><optgroup label="ANIMAUX"><option value="Chats">Chats </option> <option value="Chiens">Chiens </option> <option value="Chevaux">Chevaux </option> <option value="Oiseaux">Oiseaux </option> <option value="Rongeurs">Rongeurs </option> <option value="Reptiles">Reptiles </option> <option value="Autres">Autres </option> </optgroup><optgroup label="LOISIRS"><option value="CD, DVD, Livres, Jeux, Jouets">CD, DVD, Livres, Jeux, Jouets </option> <option value="Sports">Sports </option> <option value="Instruments de musique">Instruments de musique </option> <option value="Autres">Autres </option> </optgroup><optgroup label="VIE QUOTIDIENNE"><option value="Vétements">Vétements </option> <option value="Accessoires">Accessoires </option> <option value="Chaussures">Chaussures </option> <option value="Univers de la beauté">Univers de la beauté </option> <option value="Autres">Autres </option> </optgroup><optgroup label="SERVICES"><option value="Artisans">Artisans </option> <option value="Beauté et esthétique">Beauté et esthétique </option> <option value="Santé / Bien être">Santé / Bien être </option> <option value="Informatique, Son & image">Informatique, Son & image </option> <option value="Sports">Sports </option> <option value="Déménagements">Déménagements </option> <option value="Restauration">Restauration </option> <option value="Vêtements">Vêtements </option> <option value="Bijoux">Bijoux </option> <option value="Bricolage & Jardinage">Bricolage & Jardinage </option> <option value="Autres">Autres </option> <option value="Fonction publique">Fonction publique </option> </optgroup><optgroup label="HIGH-TECH"><option value="Informatique">Informatique </option> <option value="Hifi, Son">Hifi, Son </option> <option value="Appareils photos">Appareils photos </option> <option value="Caméscopes">Caméscopes </option> <option value="Télèphonie">Télèphonie </option> <option value="Autres">Autres </option> </optgroup><optgroup label="HABITAT"><option value="Aménagement">Aménagement </option> <option value="Jardin">Jardin </option> <option value="Mobilier">Mobilier </option> <option value="Décoration">Décoration </option> </optgroup></select> </p><p><label>Titre : </label> <input name="titre" style="width: 200px;" class="text" type="text"></p> <p><label>Détails : </label></p><br> <p><textarea cols="40" rows="8" name="description">Description de votre annonce</textarea></p> <div id="Immobilier" style="border: medium none ; margin: 0px; visibility: hidden;"> <label>Surface :</label> <input id="inputImmobilier" name="SurfaceVenteImmo" class="Inputcateg" type="text"> <label>Pieces : </label> <input id="inputPiece" name="PieceVenteImmo" class="Inputcateg" type="text"> <label>Prix : </label> <input id="inputPrix" name="PrixVenteImmo" class="Inputcategspeciale" type="text"> </div> <div id="Location" style="border: medium none ; visibility: hidden;"> <p><label>Surface :</label> <input id="inputImmobilier" name="SurfaceLocationImmo" class="Inputcateg" type="text"> <label class="text">Pieces :</label> <input id="inputPiece" name="PieceLocationImmo" class="Inputcateg" type="text"> <label class="text">Loyer :</label> <input id="inputLoyer" name="PrixLocationImmo" class="Inputcategspeciale" type="text"> </p> </div> <div id="Vehicule" style="border: medium none ; visibility: hidden;"> <p><label>Marque :</label> <input id="inputMarque" name="MarqueVehicule" class="Inputcateg" type="text"> <label class="text">Annee :</label> <input id="AnneeVehicule" name="AnneeVehicule" class="Inputcateg" type="text"> <label class="text">Km :</label> <input id="inputKm" name="KmVehicule" class="Inputcategspeciale" type="text"> </p></div> <div id="Carburant" style="border: medium none ; visibility: hidden;"> <label>Energie :</label><select name="choixCarburantSelect" id="choixCarburantSelect"><option>Diesel</option> <option>Essence</option><option>GPL</option><option>Autres</option> </select> </div> <div id="Cylindre" style="border: medium none ; visibility: hidden;"> <label class="text">Cylindre :</label> <input id="inputCylindre" name="inputCylindre" class="Inputcateg" type="text"> <p></p> </div></fieldset> <fieldset id="formdroit"><p><label class="sous_titre"> 3. Options :</label></p><br><br> <p><label><strong>Cochez les options qui vous intéressent</strong></label></p><br> <p> </p><p> <input name="photop" id="photop" value="" ok="" type="checkbox"><label>Photos :</label> </p><p> </p><p> <input name="Uploadphotop" class="form" type="file"><br></p> <p> </p><p> <input name="photos" id="photos" value="" ok="" type="checkbox"><label>Photos Supplémentaires :</label> </p><p> <input name="Uploadphotos" class="form" type="file"><br></p> <p> <label> Formats acceptés :JPEG,GIF,PNG,BMP.</label><br> </p> <p> <input name="gras" id="gras" value="ok" type="checkbox"><label>Mettre le texte de votre annonce en gras</label> </p><br> <p> <input name="partenaire" id="partenaire" type="checkbox">Recevoir des offres promotionnelles de la part de nos partenaires</p> <p> <br> <input name="" id="" value="" class="btnValidez" type="submit"> </p> </fieldset> <fieldset="#formboutons"> </fieldset="#formboutons"></fieldset> </form> <a href="deconnecter.php">Se deconnecter </a> </div> <!-- end #content --> <div id="sidebar"> <div id="publicite"> </div> </div> <!-- end #sidebar --> <div style="clear: both;"></div> </div> <!-- end #page --> <div id="footer"> <p> <a href="http://localhost/idealeparution/contactez/index.php">[Contactez-nous]</a> <a href="http://localhost/idealeparution/conditions/index.php">[Conditions générales d'utilisation]</a> <a href="http://localhost/idealeparution/infos/index.php">[Infos légales]</a> <a href="http://localhost/idealeparution/concepteur/index.php">[Concepteur du site]</a> <a href="http://localhost/idealeparution/concepteur/index.php">[Nos partenaires]</a> </p><div style="clear: both;"></div> <p></p> </div> <!-- end #footer --> <script type="text/javascript" src="js/jquery-1.2.6.min.js"></script> <script language="javascript"> function afficheVille(size, cp) { if (cp.length > size-1) { maRequete.request("action=affVille&codepostal="+cp); } } maRequete=new loader("ajax_carte.php"); function loader(url){ this.url=url; if(typeof XMLHttpRequest!="undefined"){this.http=new XMLHttpRequest(); }else if(typeof ActiveXObject!="undefined"){this.http=new ActiveXObject("MSXML2.XmlHttp"); }else{alert("No XMLHttpRequest object available. This functionality will not work.");} } loader.prototype.request=function(postReq){ var oHttp=this.http; if (oHttp.readyState!=0){oHttp.abort();} oHttp.open("POST",this.url,true); oHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8'); oHttp.onreadystatechange=function(){ if (oHttp.readyState==4){ var reponsePHP=oHttp.responseText; window.eval(reponsePHP); } else { //document.getElementById("chargement").innerHTML = "<img src='images/ajax-loader.gif' alt=''/>Chargement en cours ...<br />"; } }; oHttp.send(postReq); }; // --> </script> </body></html>

et ma page de login avant est traiter par session.
le probleme je pense est que j insere dan sla table annonce mais que l'id de l'annonceur dans la table annonce n'est pas trouver car je ne sais pas comment recuperer cette id car cela reviens a la recupere 2 page avavnt dans cette de login j'ai donc fait ceci dans la page de login:

Code : Tout sélectionner

$query = "INSERT INTO annonceur (num_annonceur,nom_annonceur,cp_annonceur,tel_annonceur,email,motdepasse )VALUES ('', '".$nom."', '".$cp."', '".$tel."', '".$email."', '".$mdp."')"; $bdd -> sendQuery($query); $req = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error()); //On récupère l'id $id_annonceur=mysql_insert_id();
pour recupere l'id créer automatique de l'annonceur avec mysql insert id.

Mais comment apres recupere cette id 2 page apres par UNE session ou par url etant une variable $id_annonceur.
ayant essayer les 2 sans succes?
merci de votre aide

[EDIT] Pour améliorer la lisibilité du code :
- utiliser les retours à la ligne (et ça évite de péter l'affichage du forum) ;)
- ne pas abuser des sauts de ligne

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 févr. 2009, 13:26

Modération :
Merci de ne pas abuser des capitales dans ton titre.
C'est moins lisible et ça n'apporte rien de plus.