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

Signaler
Messages postés
6
Date d'inscription
vendredi 10 décembre 2004
Statut
Membre
Dernière intervention
26 août 2005
-
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
-
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

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
6
Date d'inscription
vendredi 10 décembre 2004
Statut
Membre
Dernière intervention
26 août 2005

Merci de ta réponse coockiesch
je vais essayer mais comme je suis noob je comprend pas tout
ROMAINst
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
6
Date d'inscription
vendredi 10 décembre 2004
Statut
Membre
Dernière intervention
26 août 2005

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
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"