Bonjour,
voici le script que j'ai fait pour envoyer les réponse d'un formulaire dans une base sql. (aprés validation des champs)
Mon souci c'est qu'il ne fonctionne pas.
Pouvez vous m'aider?
Il semble que le souci vienne de ces deux lignes:
$req = $bdd->prepare('INSERT INTO personnes (ID, nom, prenom, email, telephone) VALUES('', :nom , :prenom , :email , :telephone )');
$req->execute(array('nom' => $nom,'prenom' => $prenom,'email' => $email,'telephone' => $telephone));
Car si je les met en commentaire le formulaire s'affiche alors que si je les met normalement j'ai une page blanche.
<?php
try
{
// Connection à mySQL
$bdd = new PDO('mysql:host=localhost;dbname=Annuaire', 'root', 'root');
}
catch(Exception $e)
{
// Si erreur, alors stop
die('Erreur : '.$e->getMessage());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Nouveau Contact</title>
</head>
<body>
<div id="page">
<?php
//vérifie si le bouton soumettant le formulaire a été cliqué. Sinon, on saute à la ligne 146 de ce code.
if(isset($_POST['envoi']))
{
// Récupération des données du formulaire
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$telephone = $_POST['telephone'];
$email = $_POST['email'];
//Définition des variables servant au traitement de l'adresse électronique et du numéro de téléphone: on utilise les regex.
$valid = "#^[^-_\.][a-z0-9-_\.]+[^-_\.]@[^-_\.][a-z0-9-_\.]+[^-_\.]\.[a-z]{2,4}$#";
$phone = "#^\d{6,10}$#";
// Traitement de vérification des champs vides ou invalides (téléphone et/ou email)
if ($prenom == '' || $nom == '' || $email == '' || $telephone == '' || !(preg_match($phone,$telephone)) || $email == '' || !(preg_match($valid, $email)))
{
//Action à adopter
?>
<h3>Informations incomplètes</h3>
<p>Un (ou plusieurs) champ(s) obligatoire(s) n'a(ont) pas été correctement rempli(s).</p>
<?php
if ($prenom == '')
{
//Si le champ "prénom" est vide
print "<p>Vous n'avez pas entrer votre prénom</p>\n";
}
if ($nom == '')
{
//Si le champ "nom" est vide
print "<p>Vous n'avez pas entrer votre nom</p>\n";
}
if ($telephone == '')
{
//Si le champ "téléphone" est vide
print "<p>Vous n'avez pas entrer votre numéro de téléphone</p>\n";
}
if (($telephone) && !(preg_match($phone,$telephone)))
{
// Verifie si le numéro de telephone et valide
print "<p>Le numéro de téléphone doit comporter seulement des chiffres, de 6 à 10 chiffres sans espaces ni tirets</p>\n";
}
if(!$email)
{
//Si le champ "email" est vide
print "<p>Vous n'avez pas entrer d'email !</p>\n";
}
if(($email) && !(preg_match($valid, $email))) // Si il y a une adresse inscrite mais invalide
{
// Verifie si l'email et valide
print "<p>L'adresse électronique saisie est invalide.</p>\n";
}
//Si les vérifications ont généré des erreurs, affichage du formulaire contenant les données déjà saisies.
?>
<form action="
<?php echo($_SERVER['PHP_SELF']); ?>
" method="post">
<fieldset>
<label><span class="legende_elmt">Prénom : </span><span class="c2">*</span> <input type="text" name="prenom" maxlength="40" class="cases" value="
<?php echo $prenom ?>
" /></label><br />
<label><span class="legende_elmt">Nom : </span><span class="c2">*</span> <input type="text" name="nom" maxlength="40" class="cases" value="
<?php echo $nom ?>
" /></label><br />
<label><span class="legende_elmt">Téléphone : </span><span class="c2">*</span> <input type="text" name="telephone" maxlength="40" class="cases" value="
<?php echo $telephone ?>
" /></label><br />
<label><span class="legende_elmt">Email : </span><span class="c2">*</span> <input type="text" name="email" maxlength="40" class="cases" value="
<?php echo $email ?>
" /></label><br />
<div class="c3">
<input type="submit" class="verif" name="envoi" value="Envoyer" /> <input type="reset" class="verif" value="Recommencer" />
</div>
</fieldset>
</form>
<?php
}
else
{
//Si aucun des champs obligatoire n'est vide et les données sont valides:
//Traitement des données :
$req = $bdd->prepare('INSERT INTO personnes (ID, nom, prenom, email, telephone) VALUES('', :nom , :prenom , :email , :telephone )');
$req->execute(array('nom' => $nom,'prenom' => $prenom,'email' => $email,'telephone' => $telephone));
$href_email = str_replace("@", "%40", $email);
// Affichage du message final des informations reçues
print "<h3>Merci ! Voici les informations que vous avez fournies</h3>\n";
print "<p>Informations sur le contact:</p>\n";
print "<p>". $prenom ." ". $nom ."<br />\n";
print "<p>".$telephone."<br />\n";
print "<p><a href=\"mailto:". $prenom ."%20". $nom ."%20%3c". $href_email ."%3e\">".$email."</a><br />\n";
print("<p><a href=\"". $_SERVER['PHP_SELF'] ."\" title=\"Retour vers le formulaire\">Retour vers le formulaire</a></p>");
}
}
//Si cette page s'ouvre pour la première fois sans que le bouton soumettant le formulaire n'ait été cliqué, alors on affiche le formulaire normalement
else
{
?>
<form action="
<?php echo($_SERVER['PHP_SELF']); ?>
" method="post">
<fieldset>
<label><span class="legende_elmt">Prénom : </span><span class="c2">*</span> <input type="text" name="prenom" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Nom : </span><span class="c2">*</span> <input type="text" name="nom" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Téléphone : </span><span class="c2">*</span> <input type="text" name="telephone" maxlength="40" class="cases" value="" /></label><br />
<label><span class="legende_elmt">Email : </span><span class="c2">*</span> <input type="text" name="email" maxlength="40" class="cases" value="" /></label><br />
<div class="c3">
<input type="submit" class="verif" name="envoi" value="Envoyer" /> <input type="reset" class="verif" value="Recommencer" />
</div>
</fieldset>
</form>
<?php
}
?>
</div>
</body>
</html>
Merci d'avance.