Urgent : Analyse d'une suite de données de formulaire

romainst Messages postés 6 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 26 août 2005 - 3 juin 2005 à 21:43
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 - 4 juin 2005 à 11:04
Bonjour je vous explique ma requête :
J'ai créé un tableau contenant un formulaire, celui-ci envoie les données à une page php qui les analyses et les envoies si justes par e-mail avec une confirmation en plus pour le visiteur.
Ce tableau étant destiné au vote d'un concours où des participants se rajoutent régulièrement, il y a une note à donner par participant.

Ce tableau envoie tout d'abord le nom du participant puis la note qui lui a été assigné par le visiteur.
Formes des noms : nomc1, nomc2, nomc3, etc...
Formes des notes : notec1, notec2, notec3, etc...

voici mon formulaire : http://romainst.free.fr/test/tev.htm

et le contenu de mail.php :

<?
$MailTo = "$auteur"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailCc = "$courriel";
$MailSubject = "Votes concours $nomconcours"; //texte qui va figurer dans le champ "sujet" du email
$MailHeader = "From: Concours TrucsenVrac <[mailto:webmaster@trucsenvrac.com webmaster@trucsenvrac.com]>"; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").
$ip = $_SERVER['REMOTE_ADDR'];
$masque_mail = "^[_a-zA-Z0-9.-]+@[_a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}$";
// des lettres ou des chiffres ou . - et _ suivit d'un @ suivit de lettre ou de chiffres ou . - et _ suivit de . et suivit de 2 à 4 lettres
// Mettez 2,5 et ajout un . pour accepter les .fr.st dans la derniere partie

/* Les routines suivantes permettent à chacune des variables de prendre la valeur des champs du formulaire et de les stocker ensuite dans la variable globale MailBody qui constituera le corps du message */


$Envoi = 1; //initialisation de la variable envoi à 1


if ($pseudo == ""){ //nom du champ1
$errpseudo = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$infoauth .= "Pseudo : $pseudo \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if (ereg($masque_mail,$courriel)){
$infoauth .= "E-Mail : $courriel \nIP : $ip\n";
}
else {
$errcourriel = 1;
$Envoi = 0;
}
if ($notec1 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc1 : $notec1/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec2 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc2 : $notec2/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec3 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc3 : $notec3/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec4 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc4 : $notec4/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec5 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc5 : $notec5/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec6 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc6 : $notec6/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec7 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc7 : $notec7/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec8 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc8 : $notec8/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec9 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc9 : $notec9/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec10 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc10 : $notec10/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec11 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc11 : $notec11/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec12 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc12 : $notec12/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec13 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc13 : $notec13/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec14 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc14 : $notec14/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec15 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc15 : $notec15/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec16 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc16 : $notec16/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec17 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc17 : $notec17/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec18 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc18 : $notec18/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec19 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc19 : $notec19/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec20 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc20 : $notec20/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec21 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc21 : $notec21/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($notec21 == ""){ //nom du champ1
$messnote = 1; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "$nomc22 : $notec22/20 \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($errpseudo == 1) echo('
- Vous n\'avez pas inscrit votre pseudo !
');
if ($errcourriel == 1) echo('
- Votre adresse e-mail n\'est pas valide !
');
if ($messnote == 1) echo('
- Vous n\'avez pas compl&eacute;t&eacute; toutes les notes !
');
if ($Envoi == 0) echo("

");
//Envoi du message


if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
$MailAuteur = "$infoauth\n$MailBody";
mail($MailTo, $MailSubject, $MailAuteur, $MailHeader); //envoi du message
$MailBody2 = "Bonjour $pseudo, voici un récapitulatif de votre vote :\n\n$MailBody\n_____________________\nA bientôt sur Trucs en Vrac !\nhttp://www.trucsenvrac.com";
$ccsubject = "Confirmation du vote au concours $nomconcours sur Trucsenvrac.com";
mail($MailCc, $ccsubject, $MailBody2, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
echo('&nbsp;

Merci votre vote a bien &eacute;t&eacute; pris en compte !

&Agrave; bient&ocirc;t pour un nouveau concours !!

<form name="fermer" method="post" action="">





</form>
&nbsp;

&nbsp;

'); //affichage d'un message de confirmation.
}
?>

J'aimerai raccourcir la phase de vérification et éviter d'avoir à modifier le php à chaque ajout en faisant en sorte que le php prenne le nombre de participants sur la première page et qu'il teste les variables une par une jusqu'au nombre de participants :
c'est à dire au lieu de tester $notec1, $notec2, etc... il teste $note.$varp
$varp étant toutes les possibilités (entières) comprises entre 0 et x.
De plus je voudrais savoir si l'on peut m'aider à rajouter une vérification pour voir si la note est comprise entre 0 et 20.

Je sais que c'est complexe mais vous y arriverez !!
Merci BEAUCOUP d'avance !!
ROMAINst

5 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
3 juin 2005 à 21:57
Salut!

Tu peux faire un truc genre:



<input name="notec[0]" type="text" class="Style1" id="notec[0]" value="" size="3" maxlength="2">
<input name="notec[1]" type="text" class="Style1" id="notec[1]" value="" size="3" maxlength="2">
<input name="notec[2]" type="text" class="Style1" id="notec[2]" value="" size="3" maxlength="2">
...




Et ensuite:

for( $i = 0; $i < 20 ; $i ++ )

{

if( !isset( $_POST['notec'][$i] ) || !empty( $_POST['notec'][$i] ) )

// action;

}



Donc tu crée un tableau avec tes notes et pis, ben tu les traites comme un tableau, :)



Ensuite, libre à toi de ne vérifier que certains éléments ( par exemple $i allant de 5 à 8 ).



Pour finir, une fois que tu as vérifié que ta variable est bien un entier:

if( $_POST['notec'][$i] < 0 || $_POST['notec'][$i] > 20 )

echo 'Note erronée';



Voila,



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
romainst Messages postés 6 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 26 août 2005
3 juin 2005 à 22:10
Merci de ta réponse coockiesch
je vais essayer mais comme je suis noob je comprend pas tout
ROMAINst
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
4 juin 2005 à 09:26
Ouaip, ben regarde ce que tu peux faire avec ca, et en cas de pb, hésites pas!



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
romainst Messages postés 6 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 26 août 2005
4 juin 2005 à 09:30
J'ai essayé et la page fonstionne mais sans la partie du code que j'ai rajouté ....
est-ce que tu pourrais m'expliquer plus en détail ce que fait chaque code ??
ROMAINst
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
4 juin 2005 à 11:04
Salut!



<input name="notec[0]"

En fait, on aura le tableau notec et cette input aura l'index 0




for( $i = 0; $i < 20 ; $i ++ )

{

if( !isset( $_POST['notec'][$i] ) || !empty( $_POST['notec'][$i] ) )

// action;


}


En fait, ca teste chaque élément du formulaire. On peux accéder à un élément avec: $_POST['notec'][2] . Comme un tableau normal



Voili voilou, :)



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
Rejoignez-nous