Requete incorrecte

Fermé
matafix Messages postés 45 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 23 janvier 2009 - 23 janv. 2009 à 22:21
matafix Messages postés 45 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 23 janvier 2009 - 23 janv. 2009 à 23:19
hi tous le monde :D,
j'ai un problème avec mon code php car je veux exécuter une requête qui a pour but l'insertion des enregistrements extraites d'un formulaire dans la BD mais ça marche pas pouvez vous m'aider ?
if($connexion=mysql_connect("localhost","root","")) {
if(mysql_select_db("preinscription",$connexion)) {
echo "Succès de connexion.";

$nom=$_POST["nom"];
$pren=$_POST["prenom"];
$dateNai=$_POST["dateNaissance"];
$lieuN=$_POST["lieuNaissance"];
$natio=$_POST["nationalite"];
$adr=$_POST["adresse"];
$vill=$_POST["ville"];
$codP=$_POST["codePostal"];
$tel=$_POST["telephone"];
$emai=$_POST["email"];
$serie=$_POST["niveauIntitule"];
$etab=$_POST["niveauEtablissement"];
$ment=$_POST["niveauMention"];
$annee=$_POST["niveauAnnee"];

$requete="INSERT INTO preinscri(Nom,prenom,Dat_nais,Lieu_nais,Nationalité,adresse,ville,Code_post,Tél,mail,serie_bac,etablissement_academie,mention,année_bac)
 VALUES('$nom','$pren',$dateNai,'$lieuN','$natio','$vill','$adr',$codP,$tel,'$emai','$serie','$etab','$ment','$annee')" ;
if($result=mysql_query($requete)){
echo "Requete validée";}
else{
echo "Requete non validée";}
} else {
die ("Echec de connexion à la base.");
}
mysql_close($connexion);
} else {
die(" Echec de connexion au serveur de base de données.");

}

4 réponses

Bonjour

1 - évite les caractères spéciaux (accents) dans les noms de champs
2 - N'utilise pas les variables, directement dans les requêtes, que va-t-il se passer si elles contiennent des apostrophes ?
$nom=mysql_real_escape($_POST["nom"]); // et idem pour les autres bien sûr
3 - ajoute or die (mysql_error()); après chaque requête pour avoir une idée plus précide de l'erreur :

mysql_query($requete) or die (mysql_error())
0
matafix Messages postés 45 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 23 janvier 2009 2
23 janv. 2009 à 22:45
merci toto pour la réponse ,j'ai changé les champs comportant des accents, pour la deuxième solutions je vois pas vraiment comment faire sans les variables contenant les valeurs des champs du formulaire, j'ai essayé avec mysql_real_escape($_POST["nom"]) mais ça me retourne cette erreur :Fatal error: Call to undefined function mysql_real_escape() in C:\wamp\www\projet\validation.php on line 16
0
C'était mysql_real_escape_string().
Excuse-moi pour l'erreur, mais tu as le droit de lire la doc toi aussi...
0
matafix Messages postés 45 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 23 janvier 2009 2
23 janv. 2009 à 23:19
re :P, voila le nouveau code :
$connexion=mysql_connect("localhost","root","") or die("Echec de connexion au serveur de base de données.");
mysql_select_db("preinscription",$connexion) or die ("Echec de connexion à la base.");

$nom=mysql_real_escape_string($_POST["nom"]);
$pren=mysql_real_escape_string($_POST["prenom"]);
$dateNai=mysql_real_escape_string($_POST["dateNaissance"]);
$lieuN=mysql_real_escape_string($_POST["lieuNaissance"]);
$natio=mysql_real_escape_string($_POST["nationalite"]);
$adr=mysql_real_escape_string($_POST["adresse"]);
$vill=mysql_real_escape_string($_POST["ville"]);
$codP=mysql_real_escape_string($_POST["codePostal"]);
$tel=mysql_real_escape_string($_POST["telephone"]);
$emai=mysql_real_escape_string($_POST["email"]);
$serie=mysql_real_escape_string($_POST["niveauIntitule"]);
$etab=mysql_real_escape_string($_POST["niveauEtablissement"]);
$ment=mysql_real_escape_string($_POST["niveauMention"]);
$annee=mysql_real_escape_string($_POST["niveauAnnee"]);

$requete="INSERT INTO preinscri VALUES('$nom','$pren',$dateNai,'$lieuN','$natio','$vill','$adr',$codP,$tel,'$emai','$serie','$etab','&ment',$annee)" ;
if($result == mysql_query($requete)){
echo "Requete validée";}
else{
echo "Requete non validée";}


mysql_close($connexion); 

la requete passe mais aucun enregistrements n'est ajouté dans la table :(
0