Problème formulaire

Résolu/Fermé
Utilisateur anonyme - 12 juil. 2013 à 12:02
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 12 juil. 2013 à 16:40
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 :
( ! ) 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

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 juil. 2013 à 13:39
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."')");
0
Utilisateur anonyme
12 juil. 2013 à 14:31
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.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 juil. 2013 à 15:01
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
0
Utilisateur anonyme
12 juil. 2013 à 15:43
Oui, ça suit. c'est juste une petite partie du code.
if(preg_match("#[0-9]{5,5}#", $code_postal))
{
ACTIONS
}
else
{
message d'erreur.
}

Ma question reste là même sinon.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 juil. 2013 à 16:16
qu'elle est la question ?
0
Utilisateur anonyme
12 juil. 2013 à 16:24
Que dois-je ajouter à la fonction preg_match afin que cette dernière n'accepte que 5 chiffres et pas de lettres ? Merci.
0
Utilisateur anonyme
12 juil. 2013 à 16:25
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 !!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 12/07/2013 à 16:40
pour la regex


preg_match("#^[0-9]{5}$#", $code_postal)


et pour voir si erreur mettre aussi un try catch pour $bdd->exec(....
0