Problème formulaire + PHP

c_bou98
Invité n'ayant pas de compte PHPfrance

07 août 2011, 14:45

Bonjour,

Je souhaite lancer un jeu concours (pronostics) sur le site internet de mon club de foot. Voici le lien :

http://www.usmeilleraiefoot.fr/pronosti ... nnaire.php

Je me heurte cependant à plusieurs problèmes :

1)Au niveau des boutons radios, comment faire pour que le choix se fasse horizontalement (domicile/nul/extérieur) et non verticalement comme c'est le cas actuellement ?

2) Quand je reçois le mail indiquant que le formulaire a été complété, mon mail est blanc (sans aucun texte). Là aussi, comment dois-je faire pour pouvoir recevoir par mail les réponses du pronostiqueur. Je suppose que c'est une histoire de PHP mais je suis un novice.

Merci,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 août 2011, 19:55

Salut,

Pour le 1 a priori c'est bon ^^

Pour le 2 tu a une erreur de syntaxe ligne 4 dans envoi.php

Après sans code on ne peux pas trop t'aider, juste supposer que tu n'a pas mis les infos du formulaire dans le corps du message ;)

Tu trouveras des infos sur la doc de la fonction mail

@+
Il en faut peu pour être heureux ......

c_bou98
Invité n'ayant pas de compte PHPfrance

09 août 2011, 16:50

Voici le code :
<html>
<head>
<?php if(!empty($_POST['m1'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre Bordeaux et St-étienne</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m2'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre Bordeaux et St-étienne</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m3'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre Bordeaux et St-étienne</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m4'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre Marseille et Sochaux</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m5'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre Marseille et Sochaux</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m6'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre Marseille et Sochaux</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m7'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre PSG et Lorient</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m8'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre PSG et Lorient</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m9'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre PSG et Lorient</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m10'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre Ajaccio et Toulouse</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m11'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre Ajaccio et Toulouse</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m12'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre Ajaccio et Toulouse</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m13'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre Caen et Valencienne</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m14'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre Caen et Valencienne</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m15'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre Caen et Valencienne</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m16'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre Nice et Lyon</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m17'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre Nice et Lyon</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m18'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre Nice et Lyon</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m19'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre Montpellier et Auxerre</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m20'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre Montpellier et Auxerre</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m21'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre Montpellier et Auxerre</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m22'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre Brest et Evian TG</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m23'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre Brest et Evian TG</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m24'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre Brest et Evian TG</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m25'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi domicile entre Dijon et Stade Rennais</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m26'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'questionnaire/site';
$right = '';
$msg = ''.$_POST['nom'].'a choisi nul entre Dijon et Stade Rennais</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?><?php if(!empty($_POST['m27'])){
$destinataire = '[email protected]';
$sujet = 'résultats pronostics';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].'a choisi extérieur entre Dijon et Stade Rennais</br>' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?>
</head>
<body>
<br>
<br>
</body>
</html>
Cependant, je ne reçois pas de mail, pourquoi ?

Merci,

c_bou98
Invité n'ayant pas de compte PHPfrance

24 août 2011, 14:43

Me revoilà (avec quelques petits cours de PHP en plus)
http://usmeilleraiefoot.fr/pronostics/pronostics.php

Après quelques essais, j'en suis arrivé à cela (envoi.php) :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php if(!empty($_POST['m1'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg =  ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Domicile" pour St Florent des Bois - St Prouant-Monsireigne' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m2'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Nul" pour St Florent des Bois - St Prouant-Monsireigne' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m3'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Extérieur" pour St Florent des Bois - St Prouant-Monsireigne' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m4'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Domicile" pour Hermenault Sérigné - Grosbreuil' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m5'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Nul" pour Hermenault Sérigné - Grosbreuil' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m6'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Extérieur" pour Hermenault Sérigné - Grosbreuil' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m7'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Domicile" pour Meilleraie-Tillay - St Aubin la Plaine' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m8'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Nul" pour Meilleraie-Tillay - St Aubin la Plaine' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m9'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Extérieur" pour Meilleraie-Tillay - St Aubin la Plaine' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m10'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Domicile" pour Nieul le Dolent - Les Essarts 2' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m11'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Nul" pour Nieul le Dolent - Les Essarts 2' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m12'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Extérieur" pour Nieul le Dolent - Les Essarts 2' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m13'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Domicile" pour Talmont St Hilaire - Roche/Y Robretières 2' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m14'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Nul" pour Talmont St Hilaire - Roche/Y Robretières 2' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m15'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Extérieur" pour Talmont St Hilaire - Roche/Y Robretières 2' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m16'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Domicile" pour Roche/Y Généraudière - Nalliers Foot Espoir' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m17'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Nul" pour Roche/Y Généraudière - Nalliers Foot Espoir' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m18'])){
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg = ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "Extérieur" pour Roche/Y Généraudière - Nalliers Foot Espoir' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
?>
</head>
<body>
<big style="color: rgb(51, 51, 51); text-decoration: underline;"><span style="font-family: Calibri;">Merci de votre participation et bonne
chance !<br>
<br style="color: rgb(204, 0, 0);">
</span></big><a style="color: rgb(204, 0, 0);" href="../index.html"><span style="font-family: Calibri;"><small>> Retour vers la page
d'accueil du site</small></span></a><big style="color: rgb(51, 51, 51); text-decoration: underline;"><span style="font-family: Calibri;"><br>
</span></big>
<br>
</body>
</html>
Il me manque désormais 2 choses :

- La technique pour ne recevoir qu'un seul mail (et non 6). J'ai parcouru les tutos et je n'y comprends vraiment rien du tout !

- Quand je reçois mes 6 mails, je reçois les conditions m1, m2, m3, m4, m5 et m6 alors que je devrais recevoir soit m1, m2 ou m3, puis soit m4, m5 ou m6, et ainsi de suite (c'est assez compliqué à expliquer)

Merci de votre compréhension,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 août 2011, 16:16

1/ tu a 16 fois la fonction mail donc 6 mails tout va bien ...
tu ne devrais avoir qu'une seul utilisation de la fonction mail !

tu fait tes test et tu utilise la concaténation pour ajouter chaque infos à une seule variable qui sera le corps du message qui sera envoyé

@+
Il en faut peu pour être heureux ......

c_bou98
Invité n'ayant pas de compte PHPfrance

24 août 2011, 16:36

Oula ! Tu parles là à un novice du PHP :)

Peux-tu me ré-expliquer ta thèse s'il te plaît (je te laisse un fragment de code pour que tu me montres comment tu réduis ça)
<?php if(!empty($_POST['m1'])){
switch($_POST['m1'])
{
    case('1'): $choix='Domicile';
    case('2'): $choix='Nul';
    case('3'): $choix='Extérieur';
}
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg =  ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "'.$choix.'" pour St Florent des Bois - St Prouant-Monsireigne' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
if(!empty($_POST['m2'])){
switch($_POST['m2'])
{
    case('1'): $choix='Domicile';
    case('2'): $choix='Nul';
    case('3'): $choix='Extérieur';
}
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg =  ''.$_POST['nom'].' ('.$_POST['mail'].') a choisi "'.$choix.'" pour Hermenault Sérigné - Grosbreuil' ;
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
}
Merci de ton aide,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 août 2011, 17:21

dans ton exemple tu utilise deux fois la fonction mail,

vu tes switch je suppose que le mec choisis toujours extérieur ?
correction du code pour une seul utilisation
<?php 
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$var = 'From '. $left.' <'.$right.'>' ."r/n";
$msg =  $_POST['nom'].' ('.$_POST['mail'].') a choisi '."\r\n";
function choix($c) {
	switch($c){
		case 1 : $choix='Domicile';break;
		case 2 : $choix='Nul';break;
		case 3 : $choix='Extérieur';break;
		default : $choix='Nul';break; // choix par défaut si il y a d'autre valeurs que l'une des 3 premières (ça peux arriver faut prévoir ;) )
	}
	return $choix
}
if(!empty($_POST['m1'])){
	$msg .= choix($_POST['m1']) .'pour St Florent des Bois - St Prouant-Monsireigne';
}
if(!empty($_POST['m2'])){
	$msg .= choix($_POST['m2']) . ' pour Hermenault Sérigné - Grosbreuil' ;
}

mail($destinataire, $sujet, $msg, $var);
?>
maintenant si tu veux rendre tous sa super dynamique (pour les jour ou y a moins de pronostique tous ça) tu peux utiliser un foreach pour traiter le tous en une boucle
par exemple
<?php
foreach ($_POST as $key => $value) {
	if (preg_match('/^m(\d)*$/i',$value) {//on vérifie que la clef soit m(un chiffre)
		$msg .= choix($value) .'pour la faut gerer dynamiquement le nom de la rencontre et ça roule ;à)'."\r\n";
	}
}
?>
avec les 5 lignes si dessus tu remplace les 3x nombres de rencontre (48 dans ton cas d'exemple, ce qui est extrémement mieux que les 15x16= 240 lignes de traitement de ton 1er formulaire :)

Le principe c'est de généraliser au maximum et de condenser ton code.
tu test à chaquefois la valeur du bouton pour savoir si domicile nul ou extérieur, pas de soucis on fait un fonction le code devient plus condensé et surtout plus clair (car moins lourd a lire ;) ).

ensuite le but c'est de faire un truc qui va fonctionner quelque soit le nb de rencontre (et quelque soit leur intitulé tu va pas te farcir les modif tous le temps ;) ).
donc le foreach parcourt tous le tableau $_POST et regarde s'il n'y a pas un index qui est du style (m1, m2) il ne va pas tenir compte du reste car y a pas de else ;) (au pire on pourrait mettre un else { continue) la c'est franchement inutile.

après la difficulté c'est de retrouver la rencontre associé pour cela le mieux c'est de passer une info permettant d'identifier cette rencontre sans problème (par exemple tu passe l'id de la rencontre comme chiffre dans le nom du champs et tu le retrouve avec une requete sql, si tu utilise une base de données, mais le principe est bon si tu utilise autre chose (fichier plat ou autre ;) )

@+
Il en faut peu pour être heureux ......

c_bou98
Invité n'ayant pas de compte PHPfrance

24 août 2011, 17:37

Actuellement, j'ai ça :
<?php if(!empty($_POST['m1'])){
switch($_POST['m1'])
{
    case('1'): { $choix[1]='Domicile'; break ; }
    case('2'): { $choix[1]='Nul'; break ; }
    case('3'): { $choix[1]='Extérieur'; break ; }
}
$match[1] = 'St Florent des Bois - St Prouant-Monsireigne'
if(!empty($_POST['m2'])){
switch($_POST['m2'])
{
    case('1'): { $choix[2]='Domicile'; break ; }
    case('2'): { $choix[2]='Nul'; break ; }
    case('3'): { $choix[2]='Extérieur'; break ; }
}
$match[2] = 'Hermenault Sérigné - Grosbreuil'
if(!empty($_POST['m3'])){
switch($_POST['m3'])
{
    case('1'): { $choix[3]='Domicile'; break ; }
    case('2'): { $choix[3]='Nul'; break ; }
    case('3'): { $choix[3]='Extérieur'; break ; }
}
$match[3] = 'Meilleraie-Tillay - St Aubin la Plaine'
if(!empty($_POST['m4'])){
switch($_POST['m4'])
{
    case('1'): { $choix[4]='Domicile'; break ; }
    case('2'): { $choix[4]='Nul'; break ; }
    case('3'): { $choix[4]='Extérieur'; break ; }
}
$match[4] = 'Nieul le Dolent - Les Essarts 2'
if(!empty($_POST['m5'])){
switch($_POST['m5'])
{
    case('1'): { $choix[5]='Domicile'; break ; }
    case('2'): { $choix[5]='Nul'; break ; }
    case('3'): { $choix[5]='Extérieur'; break ; }
}
$match[5] = 'Talmont St Hilare - Roche/Y Robretières 2'
if(!empty($_POST['m6'])){
switch($_POST['m6'])
{
    case('1'): { $choix[6]='Domicile'; break ; }
    case('2'): { $choix[6]='Nul'; break ; }
    case('3'): { $choix[6]='Extérieur'; break ; }
}
$match[6] = 'Roche/Y Généraudière - Nalliers Foot Espoir'
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg =  '';
$i=0;
while(isset($match[$i]))
{
   $i++;
   $msg = "\r\n".'a choisi "'.$choix[$i].'" pour '.$match[$i] ;
}
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
?>
Il me reste une petite erreur qui me dérange mais sinon, avec l'aide de tout le monde, je dois approcher de la fin.

Mon code peut-il être vraiment simplifié ou ce que j'ai est correct ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 août 2011, 21:48

oui il le peut avec une fonction plutôt que 4000 switch à la suite ^^
comme j'ai mis dans mon dernier message :)
function choix($c) {
switch($c){
case 1 : $choix='Domicile';break;
case 2 : $choix='Nul';break;
case 3 : $choix='Extérieur';break;
default : $choix='Nul';break; // choix par défaut si il y a d'autre valeurs que l'une des 3 premières (ça peux arriver faut prévoir <img src="./images/smilies/icon_wink.gif" alt=";)" title="Wink" /> )
}
return $choix
}

@+
Il en faut peu pour être heureux ......

c_bou98
Invité n'ayant pas de compte PHPfrance

25 août 2011, 11:06

En fait, j'en bave tellement avec ce code que j'aimerais juste qu'on me corrige les erreurs (il ne doit plus en rester beaucoup je pense) sur mon code afin que je puisse enfin l'utiliser.. ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 août 2011, 14:37

En fait, j'en bave tellement avec ce code que j'aimerais juste qu'on me corrige les erreurs (il ne doit plus en rester beaucoup je pense) sur mon code afin que je puisse enfin l'utiliser.. ;)
euh oui mais non, car la prochaine faudra le refaire tu a tout, si tu ne comprend pas comment fonctionne une fonction en php voici un peu de lecture sur le sujet. c'est super simple et très pratique.

dans ton cas tu a un code que tu répète X fois. pour gagner de la place dans le fichier, pour que ton code soit plus lisible et surtout plus maintenable on utilise une fonction (c'est comme empty, preg_match ou ini_set mais c'est toi qui la définie et elle fait ce que tu veux).

maintenable ça veux dire quoi ?
grossièrement ça veux dire que le jour (dans 6mois ou 4 ans) où tu va devoir retoucher ton tu ne va forcément savoir ce que tu a fait lors de la création. La tu devras faire ce que je fait pour te répondre, c'est a dire lire le code et essayer de comprendre ce qu'il avait dans ta tête quand tu a pondu le code ;)
Pire encore si jamais tu modifie la façon de faire pour ajouter ou retirer quelque chose de ce switch tu va devroi le faire X fois alors qu'avec la fonction c'est une seule fois :)

donc plus simple et plus rapide :)

tu définis la fonction en haut et tu l'utilise après ;)

hésite à me dire si tu ne comprend pas quelque chose dans ce que j'ai fait, je veux bien te répondre mais pas tout faire (quoi la tu a tout).

indique aussi les erreurs c'est plus facile, je ne suis pas parfait il m'arrive (trop souvent) de faire des erreurs de syntaxe lorsque je répond rapidement :/

@+
Il en faut peu pour être heureux ......

c_bou98
Invité n'ayant pas de compte PHPfrance

26 août 2011, 11:13

C'est bon, mon code fonctionne enfin :
<?php if(!empty($_POST['m1'])){
switch($_POST['m1'])
{
    case('1'): { $choix[1]='Domicile'; break ; }
    case('2'): { $choix[1]='Nul'; break ; }
    case('3'): { $choix[1]='Extérieur'; break ; }
}
$match[1] = 'St Florent des Bois - St Prouant-Monsireigne';
}
if(!empty($_POST['m2'])){
switch($_POST['m2'])
{
    case('1'): { $choix[2]='Domicile'; break ; }
    case('2'): { $choix[2]='Nul'; break ; }
    case('3'): { $choix[2]='Extérieur'; break ; }
}
$match[2] = 'Hermenault Sérigné - Grosbreuil';
}
if(!empty($_POST['m3'])){
switch($_POST['m3'])
{
    case('1'): { $choix[3]='Domicile'; break ; }
    case('2'): { $choix[3]='Nul'; break ; }
    case('3'): { $choix[3]='Extérieur'; break ; }
}
$match[3] = 'Meilleraie-Tillay - St Aubin la Plaine';
}
if(!empty($_POST['m4'])){
switch($_POST['m4'])
{
    case('1'): { $choix[4]='Domicile'; break ; }
    case('2'): { $choix[4]='Nul'; break ; }
    case('3'): { $choix[4]='Extérieur'; break ; }
}
$match[4] = 'Nieul le Dolent - Les Essarts 2';
}
if(!empty($_POST['m5'])){
switch($_POST['m5'])
{
    case('1'): { $choix[5]='Domicile'; break ; }
    case('2'): { $choix[5]='Nul'; break ; }
    case('3'): { $choix[5]='Extérieur'; break ; }
}
$match[5] = 'Talmont St Hilare - Roche/Y Robretières 2';
}
if(!empty($_POST['m6'])){
switch($_POST['m6'])
{
    case('1'): { $choix[6]='Domicile'; break ; }
    case('2'): { $choix[6]='Nul'; break ; }
    case('3'): { $choix[6]='Extérieur'; break ; }
}
$match[6] = 'Roche/Y Généraudière - Nalliers Foot Espoir';
}
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg =  '';
$i=0;
while(isset($match[$i]))
{
   $i++;
   $msg .= "\r\n".'a choisi "'.$choix[$i].'" pour '.$match[$i] ;
}
$var = 'From '. $left.' <'.$right.'>' ."r/n";
mail($destinataire, $sujet, $msg, $var);
?>
Dernier problème : je ne reçois aucun mail suite à la validation du formulaire. (pour info, j'utilise RoundCube et je suis chez OVH)

c_bou98
Invité n'ayant pas de compte PHPfrance

30 août 2011, 13:57

Je reçois maintenant le mail, mais presque vide :

"From Pronostics <>" (il n'y a que ça de marquer dans mon mail, alors que je devrais avoir mes 6 résultats..)

c_bou98
Invité n'ayant pas de compte PHPfrance

31 août 2011, 11:59

Voici mon nouveau code :
<?php
if(!empty($_POST['m1'])){
switch($_POST['m1'])
{
    case('1'): { $choix[1]='Domicile'; break ; }
    case('2'): { $choix[1]='Nul'; break ; }
    case('3'): { $choix[1]='Extérieur'; break ; }
}
$match[1] = 'St Florent des Bois - St Prouant/Monsireigne';
}
if(!empty($_POST['m2'])){
switch($_POST['m2'])
{
    case('1'): { $choix[2]='Domicile'; break ; }
    case('2'): { $choix[2]='Nul'; break ; }
    case('3'): { $choix[2]='Extérieur'; break ; }
}
$match[2] = 'Hermenault Sérigné - Grosbreuil';
}
if(!empty($_POST['m3'])){
switch($_POST['m3'])
{
    case('1'): { $choix[3]='Domicile'; break ; }
    case('2'): { $choix[3]='Nul'; break ; }
    case('3'): { $choix[3]='Extérieur'; break ; }
}
$match[3] = 'Meilleraie-Tillay - St Aubin la Plaine';
}
if(!empty($_POST['m4'])){
switch($_POST['m4'])
{
    case('1'): { $choix[4]='Domicile'; break ; }
    case('2'): { $choix[4]='Nul'; break ; }
    case('3'): { $choix[4]='Extérieur'; break ; }
}
$match[4] = 'Nieul le Dolent - Les Essarts 2';
}
if(!empty($_POST['m5'])){
switch($_POST['m5'])
{
    case('1'): { $choix[5]='Domicile'; break ; }
    case('2'): { $choix[5]='Nul'; break ; }
    case('3'): { $choix[5]='Extérieur'; break ; }
}
$match[5] = 'Talmont St Hilare - Roche/Y Robretières 2';
}
if(!empty($_POST['m6'])){
switch($_POST['m6'])
{
    case('1'): { $choix[6]='Domicile'; break ; }
    case('2'): { $choix[6]='Nul'; break ; }
    case('3'): { $choix[6]='Extérieur'; break ; }
}
$match[6] = 'Roche/Y Généraudière - Nalliers Foot Espoir';
}
$destinataire = '[email protected]';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg =  '';
$i=1;
while(isset($match[$i]))
{
   $i++;
   $msg .= "\r\n".'a choisi "'.$choix[$i].'" pour '.$match[$i] ;
}
$var = 'From '. $left.' <'.$right.'>' ."\r\n";
mail($destinataire, $sujet, $msg, $var);
?>
Et voici ce que je reçois par mail :

From Pronostics <>

a choisi "Domicile" pour Hermenault Sérigné - Grosbreuil
a choisi "Nul" pour Meilleraie-Tillay - St Aubin la Plaine
a choisi "Domicile" pour Nieul le Dolent - Les Essarts 2
a choisi "Nul" pour Talmont St Hilare - Roche/Y Robretières 2
a choisi "Nul" pour Roche/Y Généraudière - Nalliers Foot Espoir
a choisi "" pour

Comme vous pouvez le voir, mon match m1 ne s'affiche pas. De plus, je souhaitais que le nom de la personne, et son adresse mail entre parenthèse s'affichent avant "a choisi..". Exemple :

Prénom NOM ([email protected]) a choisi "Domicile" pour Hermenault Sérigné - Grosbreuil

Merci de votre aide,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 août 2011, 13:04

normal $right n'est modifiée nulle part et tu la crée vide donc tous va bien .......................
Il en faut peu pour être heureux ......