Insertion dans Mysql

Petit nouveau ! | 1 Messages

08 janv. 2013, 16:18

mon formulire fonctione toujours mais quand j'ai changé l'hébergeur l'enregistrement ne marche pas et voici mon code.


//Insertion de données
$requete=mysql_query("insert into reservation_autres2009(nom,prenom,datenaissance,frere,classe,datesaisie,heuresaisie,mailparent,tel,remarque,insannee) VALUES ('".addslashes($_POST['nom'])."','".addslashes($_POST['prenom'])."','".addslashes($dateNaissance)."','".addslashes($_POST['frere'])."','".addslashes($_POST['classe'])."','".$dateSaisie."','".$heureSaisie=gmdate("H:i:s")."','".$_POST['mail']."','".addslashes($_POST['tel'])."','".addslashes($_POST['remarque'])."','".addslashes($_POST['insannee'])."')");
if($requete) {
echo "Enregistrement réussi<br>";

//Envoi de mail

mail("[email protected]","Réservation autre 2009","Une réservation a été ajoutée à la bdd avec les informations suivantes
\n\n"."Nom et prénom de l'enfant : ".$_POST['nom']." ".$_POST['prenom']."\n"."Date de naissance : ".$_POST['jour']."/".$_POST['mois']."/".$_POST['annee']."\n"."Adresse électronique : ".$_POST['mail']."\n"."Téléphone : ".$_POST['tel']."\n"."Date de saisie : ".$dateHeureSaisie,$headers);
}
else {
echo "<br><br>Enregistrement échoué<br>";
mail("[email protected]","Réservation_erreur autre 2009 ","Une erreur a eu lieu lors de l'inscription");
}
mysql_close();

?>

ViPHP
xTG
ViPHP | 7331 Messages

08 janv. 2013, 16:29

addslashes n'est pas vraiment fait pour cela.
Tu as mysql_real_escape_string() pour faire ce que tu veux.

Sinon le code n'est pas impacté puisqu'il fonctionnait avant...
C'est donc la configuration du serveur qui est différente.
Et là... J'ai pas ma boule de cristal. :lol:

Donc déjà places un peu de debug avec mysql_error() pour récupérer le message d'erreur retourné par le SGBD pour qu'on ai une petite idée de ce qui ne va pas.

ViPHP
ViPHP | 2577 Messages

08 janv. 2013, 16:38

Il faudrait regarder l'erreur mysql (mysql_error()) pour avoir une piste. Eventuellement nous montrer le code sql, car le reconstituer à partir du php est un peu fastidieux.

Eléphant du PHP | 120 Messages

08 janv. 2013, 17:52

Ton problème peut avoir des centaines de raisons (structure de la table changée, l'hébergeur qui a désactivé l'extension MySQL, requête sur des champs ou tables non existantes ou simplement un champ sans valeur par défaut correcte, ...).
Cependant, il y a quelques conseils que je peux te donner :
L'extension MySQL de PHP est dépréciée à partir de la version PHP5.5 et sera sans doute supprimée entièrement de PHP5.6 ou PHP6. Ton code ne fonctionnera donc plus du tout. À la place, je te conseille d'utiliser mysqlii ou PDO.
L'utilisation de la fonction mail() est une mauvaise idée, car mail() n'est pas préconfiguré pour envoyer un mail pour qu'il ait peu de chances de se faire détecter comme Spam. PHPMailer ou Swift sont des librairies faites justement pour cela. Je te conseille donc d'y jeter un regard.
Et comme xTG l'a déjà dit : addslashes n'est pas vraiment prévu à cet effet. Les fonctions d'échappements ou les requêtes préparées (prepared Statements dans mysqli et PDO) sont à utiliser pour cela. Il y a quelques années, il y avait l'option magic-quotes qui appliquait addslashes sur toutes les données entrées par POST, GET et COOKIE, mais les magic-quotes ont été dépréciées et puis supprimées ;)

Pour le problème, il va falloir nous donner plus d'informations concernant le tableau, la façon dont est envoyé le formulaire et l'erreur SQL.