Formulaire PHP - doublon lors de l'envoi à DB

Fermé
chapichapeau - 13 mars 2012 à 19:24
 Bhurigan - 13 mars 2012 à 20:54
Bonjour,


Je suis en train de creer un formulaire php qui renvoi vers une DB. J'ai mis des fonctions aux champs s'ils ne sont pas rempli. par contre, cela envoi à ma DB autant de fois si j'ai une alerte.

Pour moi il s'agit seulement d'une question d'ordre, mais lequel? merci de faire un ptit check rapide sur mon code


D'avance merci pour vos conseils !


voici mon code:



<?php
// Connexion à la base de données
try
{

$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=****;dbname=******', '****', '****');
$req = $bdd->prepare('INSERT INTO **** (prenom, nom, email, reponse, questionsub) VALUES(?, ?, ?, ?, ?)');
$req->execute(array($_POST['prenom'], $_POST['nom'], $_POST['email'], $_POST['reponse'], $_POST['questionsub']));

}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>

<?
function ValideNom($QuelNom)
{
// SI le nom est vide :
if ($QuelNom == "")
return "<font color='#FF0000'>Le nom ne peut pas être vide</font><BR>";
return "";
}

function ValidePrenom ($QuelPrenom)
{
// SI le prénom est vide :
if ($QuelPrenom == "")
return "<font color='#FF0000'>Le Prénom ne peut pas être vide</font><BR>";
return "";
}

function ValideEMail($QuelleAdresse)
{
// SI l'E-Mail est vide :
if ($QuelleAdresse == "")
return "<font color='#FF0000'>L'adresse email ne peut pas être vide</font><BR>";
// Si l'E-Mail contient des caractères non autorisés :
if (strspn(strtolower($QuelleAdresse), "abcdefghijklmnopqrstuvwxyz0123456789-_@.") < strlen($QuelleAdresse))
return "<font color='#FF0000'>L'adresse email que vous avez fourni contient des caractères non-autorisés</font><BR>";
if (substr_count($QuelleAdresse , "@") == 0)
return "<font color='#FF0000'>L'adresse email doit contenir le signe @</font><BR>";
if (substr_count($QuelleAdresse , "@") > 1)
return "<font color='#FF0000'>L'adresse email ne peut contenir plus d'un signe @</font><BR>";
return "";
}

function ValidQuestion ($QuelQuestion)
{
// SI le prénom est vide :
if ($QuelQuestion == "")
return "<font color='#FF0000'>Veuillez répondre à la question subsidiaire </font><BR>";
return "";
}


function ValidReponse ($QuelReponse)
{
// SI la case réponse est vide :
if ($QuelReponse == "")
return "<font color='#FF0000'>Veuillez cocher votre réponse </font><BR>";

return "";
}

function ValidCheck ($QuelCheck)
{
// SI la case reglement est vide :
if ($QuelCheck == "")
return "<font color='#FF0000'>Veuillez accepté le reglement svp</font><BR>";

return "";
}

?>




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>*********</title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


</head>

<body>

<?
if(isset($_POST) && (ValideNom($_POST['nom'])!="") && (ValidePrenom($_POST['prenom'])!="") && (ValideEMail($_POST['email'])!="") && (ValidReponse($_POST['reponse'])!="") && (ValidQuestion($_POST['questionsub'])!="") && (ValidCheck($_POST['accept'])!=""))
{
// ajout dans la db - Que mettre ici? quel code?

}

else
{
// erreur
echo ValidePrenom($_POST['prenom']);
echo ValideNom($_POST['nom']);
echo ValideEMail($_POST['email']);
echo ValidReponse($_POST['reponse']);
echo ValidQuestion($_POST['questionsub']);
echo ValidCheck($_POST['accept']);



}

?>


<form action="form.php" method="post">


<p>

<label for="prenom">Prenom</label> : <input type="text" name="prenom" id="prenom" value="<? echo $prenom; ?>" /><br />

<label for="nom">Nom</label> : <input type="text" name="nom" id="nom" value="<? echo $nom; ?>" /><br />

<label for="email">email</label> : <input type="text" name="email" id="email" value="<? echo $email; ?>" /><br />
<label for="reponse">Réponse</label> :<br />

<input name="reponse" id="choix1" type="radio" value="1" />
<label for="choix1">Photo 1</label><br />
<input name="reponse" id="choix2" type="radio" value="2" />
<label for="choix2">Photo 2</label><br />
<input name="reponse" id="choix3" type="radio" value="3" />
<label for="choix3">Photo 3</label><br />
<input name="reponse" id="choix4" type="radio" value="4" />
<label for="choix4">Photo 4</label> <br />
<input name="reponse" id="choix5" type="radio" value="5" />
<label for="choix5">Photo 5</label><br />
<input name="reponse" id="choix6" type="radio" value="6" />
<label for="choix6">Photo 6</label><br />
<input name="reponse" id="choix7" type="radio" value="7" />
<label for="choix7">Photo 7</label><br />
<input name="reponse" id="choix8" type="radio" value="8" />
<label for="choix8">Photo 8</label> <br />
<input name="reponse" id="choix9" type="radio" value="9" />
<label for="choix9">Photo 9</label><br />
<input name="reponse" id="choix10" type="radio" value="10" />
<label for="choix10">Photo 10</label><br />

<label for="questionsub">Combien de personnes auront participé ?</label> :
<input type="text" name="questionsub" id="questionsub" maxlength="3" value="<? echo $questionsub; ?>" /><br />

<input id="check" type="checkbox" name="accept" value="J'accepte le règlement"/> J'accepte le <a href="#">règlement du concours</a>


<input type="submit" value="Envoyer" name="EnvoyerDonnee" />
</p>
</form>








</body>
</html>
A voir également:

1 réponse

// ajout dans la db - Que mettre ici? quel code?

http://sql.developpez.com/#commencer-sql
0