Problème formulaire
Résolu
Utilisateur anonyme
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
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."')");-
Merci, ta réponse était rapide, précise. Merci beaucoup !
Au passage une petite question : avec le preg_match, commet faire pour ne restreindre l'input à seulement 5 chiffres. (pour le code postal) ?if(preg_match("#[0-9]{5,5}#", $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.
-
-
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
-
-
-
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$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 !!
-
-
pour la regex
preg_match("#^[0-9]{5}$#", $code_postal)
et pour voir si erreur mettre aussi un try catch pour $bdd->exec(....