Problème formulaire
Résolu
Utilisateur anonyme
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie de mettre en place un formulaire qui exporte les données entrées dans une table. Néanmoins lorsque j'utilise la fonction "insert into", les variables plantent et le message suivant s'affiche :
Lorsque je met la variable civilité avec des "\" alors tout marche parfaitement mais bien évidemment elle n'est plus considérée comme variable.
Ci dessous mon code : (un peu long)
J'essaie de mettre en place un formulaire qui exporte les données entrées dans une table. Néanmoins lorsque j'utilise la fonction "insert into", les variables plantent et le message suivant s'affiche :
( ! ) Parse error: syntax error, unexpected '$civilite' (T_VARIABLE) in C:\Users\XXX\Documents\wamp\www\test\form.php on line 41
Lorsque je met la variable civilité avec des "\" alors tout marche parfaitement mais bien évidemment elle n'est plus considérée comme variable.
Ci dessous mon code : (un peu long)
<?php $erreur = ""; if(isset($_POST) && isset($_POST['civilite']) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['particulier_professionnel']) && isset($_POST['societe']) && isset($_POST['mail']) && isset($_POST['confirmation_mail']) && isset($_POST['code_postal']) && isset($_POST['telephone']) && isset($_POST['adresse']) && isset($_POST['objet']) && isset($_POST['message'])&& isset($_POST['piece_jointe'])) { $civilite = htmlspecialchars($_POST['civilite']); $nom = htmlspecialchars($_POST['nom']); $prenom = htmlspecialchars($_POST['prenom']); $particulier_professionnel = htmlspecialchars($_POST['particulier_professionnel']); $societe = htmlspecialchars($_POST['societe']); $mail = htmlspecialchars($_POST['mail']); $confirmation_mail = htmlspecialchars($_POST['confirmation_mail']); $adresse = htmlspecialchars($_POST['adresse']); $code_postal = htmlspecialchars($_POST['code_postal']); $telephone = htmlspecialchars($_POST['telephone']); $objet = htmlspecialchars($_POST['objet']); $message = htmlspecialchars(trim($_POST['message'])); $piece_jointe = htmlspecialchars($_POST['piece_jointe']); #Verification de la validité de l'email# if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $mail)) //si l'email est valide { if(!empty($civilite) && !empty($nom) && !empty($prenom) && !empty($particulier_professionnel) && !empty($mail) && !empty($confirmation_mail) && !empty($code_postal) && !empty($objet) && !empty($message)) { try { $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ''); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $bdd->exec('INSERT INTO formulaire_contact(civilite, nom, prenom, societe, mail, confirmation_mail, adresse, code_postal, telephone, objet, message) VALUES('$civilite', \'$nom\', \'$prenom\', \'societe\', \'mail\', \'confirmation_mail\', \'adresse\', \'code_postal\', \'telephone\', \'objet\', \'message\')'); echo 'Votre message a bien été envoyé.'; } else { $erreur .= "<p>Veuillez remplir tous les champs obligatoires.</p>"; } } else { $erreur .= "<p>Votre adresse email est invalide.</p>"; } } if(isset($a)) { echo "<font color='green'>$a</font>"; } if(isset($erreur)) { echo "<font color='red'>$erreur</font>"; } ?> <form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post"> <table> <tr> <td><label for="civilite" >Civilité :</label></td> <td> <select name="civilite" id="civilite"> <option>M.</option> <option>Mme</option> </select> </td> </tr> <tr> <td><label for="nom" >Nom :</label></td> <td><input type="text" name="nom" id="nom"/></td> </tr> <tr> <td><label for="prenom" >Prénom :</label></td> <td><input type="text" name="prenom" id="prenom"/></td> </tr> <tr> <td><label for="particulier_professionnel" >Vous êtes un :</label></td> <td> <select name="particulier_professionnel" id="particulier_professionnel"> <option>particulier</option> <option>professionnel</option> </select> </td> </tr> <tr> <td><label for="societe">Nom de la société :</label></td>********************************** <td><input type="text" name="societe" id="societe" /></td> </tr> <tr> <td><label for="mail">Adresse mail :</label></td> <td><input type="text" name="mail" id="mail" /></td> </tr> <tr> <td><label for="confirmation_mail">Confirmation de l'adresse mail :</label></td>********************************** <td><input type="text" name="confirmation_mail" id="confirmation_mail" /></td> </tr> <tr> <td><label for="adresse">Adresse :</label></td> <td><input type="text" name="adresse" id="adresse" /></td> </tr> <tr> <td><label for="code_postal">Code postal :</label></td> <td><input type="text" name="code_postal" id="code_postal" /></td> </tr> <tr> <td><label for="telephone">Téléphone :</label></td> <td><input type="text" name="telephone" id="telephone" /></td> </tr> <tr> <td><label for="objet">Objet de votre message :</label></td> <td><input type="text" name="objet" id="objet" /></td> </tr> <tr> <td><label for="message">Message :</label></td> <td><textarea name="message" cols="30" rows="15" id="message" ></textarea></td> </tr> <tr> <td><label for="piece_jointe">Joindre une pièce jointe :</label></td> <td><input type="file" name="piece_jointe" id="piece_jointe" /></td> </tr> <tr> <td></td> <td><input type="submit" value="Envoyer" /></td> </tr> </table> </form>
4 réponses
avec des " au lieu de ' en début et fin de requette et au besoin en concaténént par '". ."' et en n'oubliant pas le $ devant le nom de la variable
$bdd->exec("INSERT INTO formulaire_contact(civilite, nom, prenom, societe, mail, confirmation_mail, adresse, code_postal, telephone, objet, message) VALUES('".$civilite."','". $nom."', '".$prenom."','".$societe."','".$mail."'', '".$confirmation_mail."', '".$adresse."', '".$code_postal."','".$telephone."', '".$objet."','".$message."')");
pourquoi si tu filtres avec ton preg_match ? si il ta autre chose tout le contenu de l'input sera rejeté, il fuat dans ce cas lui donner un message
qu'elle est la question ?
PS : Je suis désolé, j'ai une mauvaise nouvelle, j'ai cru tout à l'heure que ça marchait mais en fait, lorsque je copie ton code, ça ne fonctionne pas. Il n'y a pas d'erreur qui s'affiche mais rien est enregistré dans la table !
PS : aide mémoire ton code c'était
MERCI à toi !!
PS : aide mémoire ton code c'était
$bdd->exec("INSERT INTO formulaire_contact(civilite, nom, prenom, societe, mail, confirmation_mail, adresse, code_postal, telephone, objet, message) VALUES('".$civilite."','". $nom."', '".$prenom."','".$societe."','".$mail."'', '".$confirmation_mail."', '".$adresse."', '".$code_postal."','".$telephone."', '".$objet."','".$message."')");
MERCI à toi !!
Au passage une petite question : avec le preg_match, commet faire pour ne restreindre l'input à seulement 5 chiffres. (pour le code postal) ?
permet de demander 5 chiffres mais si l'utilisateur ajoute des lettres derrière, le formulaire n'y verra que du feu. Merci.