probleme insertion BDD MySQL

Eléphanteau du PHP | 26 Messages

14 janv. 2012, 00:04

Bonsoir,

J'ai voulu faire un formulaire pour inserer des données dans ma base de données, mais il me met toujours, une erreur est survenue.

Je vous mets ci-dessous le code, si quelqu'un a une idée, je suis preneur.

Merci d'avance.

fichier avec le formulaire en php

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans titre</title> </head> <body> <?php include('../connexion.php'); ?> <span class="titre">Ajouter un evenement</span> <form action="ajout_produit.php" method="post" enctype="multipart/form-data" > <table><br /> <tr> <td>Nom : * </td> <td> <input class="" type="text" name="nom"/></td> </tr> <tr> <td>Prenom : * </td> <td><input class="" type="text" name="prenom"/> </td> </tr> <tr> <td>Age : * </td> <td><input class="" type="text" name="age"/> </td> </tr> <tr> <td>Code postal : * </td> <td> <input class="" type="text" name="code"/></td> </tr> <tr> <td>Ville : </td> <td><input class="" type="text" name="ville"/> </td> </tr> <tr> <td>Téléphone : * </td> <td><input class="" type="text" name="tel"/> </td> </tr> <tr> <td>Fax : * </td> <td><input class="" type="text" name="fax"/> </td> </tr> <tr> <td>Tel. portable : </td> <td><input class="" type="text" name="gsm"/> </td> </tr> <tr> <td>Email : </td> <td><input class="" type="text" name="email"/> </td> </tr> <tr> <td>sexe : </td> <td><input class="" type="text" name="sexe"/> </td> </tr> <tr> <td class="champs">* : champs obligatoires</td> </tr> </table> <br /> <input class="valider" name="valider" type="submit" value="Valider"/> </form> </div> </body> </html>

Eléphanteau du PHP | 26 Messages

14 janv. 2012, 00:05

Fichier de traitement du formulaire

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <?php // traitement pour ajouter un événement dans l'espace admin (checkbox) if (isset ($_POST['valider'])) { $nom = $_POST['nom']; $prenom = $_POST['prenom']; $age = $_POST['age']; $code = $_POST['code']; $ville = $_POST['ville']; $tel = $_POST['tel']; $fax = $_POST['fax']; $gsm = $_POST['gsm']; $email = $_POST['email']; $sexe = $_POST['sexe']; // Si l'un des champs est vide -> erreur if (empty ($nom) || empty($prenom) || empty($age) || empty($code) || empty($ville) || empty($email)) { echo '<body onLoad="alert(\'Veuillez entrer tous les champs.\')">'; header("refresh:1; URL = 'admin.php'"); } else { include('../connexion.php'); $nom = mysql_real_escape_string($nom) ; $prenom = mysql_real_escape_string($prenom); $age = mysql_real_escape_string($age); $code = mysql_real_escape_string($code); $ville = mysql_real_escape_string($ville); $tel = mysql_real_escape_string($tel); $fax = mysql_real_escape_string($fax); $gsm = mysql_real_escape_string($gsm); $email = mysql_real_escape_string($email); $sexe = mysql_real_escape_string($sexe); // Insertion dans la bdd $query = "insert into PROD(nom,prenom,age,code,ville,tel,fax,gsm,email,sexe) values('', '$nom', '$prenom', '$age', '$code', '$ville', '$tel', '$fax', '$gsm', '$email', '$sexe')"; mysql_real_escape_string($query); if (mysql_query($query)) { echo '<body onLoad="alert(\'Evenement ajoutée avec succès.\')">'; header("refresh:1; URL = 'admin.php' "); } else { echo '<body onLoad="alert(\'Une erreur a été détectée.\')">'; header("refresh:1; URL = 'admin.php' "); } //mysql_close(); } } ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 janv. 2012, 15:37

Si tu as le message d'erreur, c'est que le test du if est faux, donc que la requête n'est pas correctement exécutée (donc qu'il y a une erreur dans ta requête sql)

Le mieux dans ces cas là, c'est d'utiliser mysql_error() pour connaitre le message d'erreur de mysql et d'afficher le sql que tu vas exécuter pour voir ce qui peut clocher.

En l'occurrence, le problème vient de ton utilisation de mysql_real_escape_string(). Il faut l'utiliser pour chacune des variables que tu utilises dans ta requête, et non pas sur ta chaine sql :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 26 Messages

14 janv. 2012, 17:23

Bonjour Ryle,

J'ai trouver la solution, c'est dans le deuxieme code, après values, il y a '' entre les parenthese en trop.

Maintenant ca fonctionne.

Bonne journée