8800 sujets

Développement web côté serveur, CMS

Bonjour, je souhaite mettre en place un concours de pronostics sur mon site.

Voici ma page "pronostics.php" :

http://www.usmeilleraiefoot.fr/pronostics/pronostics.php

Et ma page "envoi.php" :

http://www.usmeilleraiefoot.fr/pronostics/envoi.php

Ci-dessous, le code de ma page envoi.php (qui pose problème)


<?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 = 'postmaster@usmeilleraiefoot.fr';
$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);
?>


A la réception du mail, voici ce que je reçois :

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 (adresse@mail.fr) a choisi "Domicile" pour Hermenault Sérigné - Grosbreuil

Merci de votre aide,
Salut,
tu as un problème dans ta boucle, il faut incrémenter $i après avoir réalisé les traitements.


while(isset($match[$i]))
{
   $msg .= "\r\n".'a choisi "'.$choix[$i].'" pour '.$match[$i] ;
   $i++;
}


a écrit :
De plus, je souhaitais que le nom de la personne, et son adresse mail entre parenthèse s'affichent avant "a choisi..".


Tu les récupères où les variables Nom/Prénom/@mail ?
Comme tu initialises le message dans envoi.php tu es obligé d'avoir les infos dans cette page, et les mettre à la place du "\r\n" dans le code:
$msg .= [b]"\r\n"[/b].'a choisi "'.$choix[$i].'" pour '.$match[$i] ;


La solution la plus simple c'est de passer les noms/prénoms/mail en champ hidden dans ton formulaire pronostics. Comme ça tu les récupères avec un $_POST['nom'], etc...


Ca marchera mais c'est moche comme solution. Pour tout ce qui est informations utilisateur, je te conseille d'utiliser les variables de session...
Je ne comprends pas trop la démarche.. C'est bête comme question mais en les passant en hidden, comment récupérer les infos ?
Les champs de formulaire hidden ne s'affichent pas, mais permettent le transmission de l'info. C'est leur seule utilité, d'ailleurs.
Je vais donc essayer. Mais dans ma page envoi.php, je dois remplacer \r\n par $_POST['nom'] comme ceci ?


$destinataire = 'postmaster@usmeilleraiefoot.fr';
$sujet = 'Résultats';
$left = 'Pronostics';
$right = '';
$msg =  '';
$i=1;
while(isset($match[$i]))
{
$msg .= "$_POST['nom']".'a choisi "'.$choix[$i].'" pour '.$match[$i] ;
$i++; 
}
$var = 'From '. $left.' <'.$right.'>' ."\r\n";
mail($destinataire, $sujet, $msg, $var);
?>
Grosso modo, oui, à condition que dans le formulaire de ta page pronostic.php tu retrouves bien l'input caché ayant l'attribut name='nom' et pour valeur le nom/prénom/mail de l'utilisateur identifié.

$msg .= $_POST['nom'].'a choisi "'.$choix[$i].'" pour '.$match[$i] ;

Modifié par Zed13 (01 Sep 2011 - 10:04)
J'ai changé les lignes suivantes dans mes codes

envoi.php :


{
$msg .= $_POST['nom'].'a choisi "'.$choix[$i].'" pour '.$match[$i] ;
$i++; 
}


pronostics.php :


<td style="vertical-align: top; text-align: center;"><small style="color: rgb(51, 51, 51);"><span style="font-family: Calibri;">Adresse
e-mail<br>
        </span></small></td>
        <td colspan="3" rowspan="1" style="vertical-align: top;"><input type="hidden" name="mail"><br>
        </td>
        <td style="vertical-align: top;"><br>
        </td>
      </tr>
      <tr>
        <td style="vertical-align: top; width: 100px; text-align: center;"><small style="color: rgb(51, 51, 51);"><span style="font-family: Calibri;">Prénom
- NOM</span></small><br>
        </td>
        <td colspan="3" rowspan="1


Je reçois ce mail :

From Pronostics <>


a choisi "Domicile" pour St Florent des Bois - St Prouant/Monsireignea choisi "Nul" pour Hermenault Sérigné - Grosbreuila choisi "Domicile" pour Meilleraie-Tillay - St Aubin la Plainea choisi "Nul" pour Nieul le Dolent - Les Essarts 2a choisi "Extérieur" pour Talmont St Hilaire - Roche/Y Robretières 2a choisi "Nul" pour Roche/Y Généraudière - Nalliers Foot Espoir
Visiblement tu as de grosses lacunes sur le fonctionnement des formulaires; lis des tutos à ce propos, car tu ne vas pas aller loin sinon.
Peux-tu me donner quelques liens de tutos et me dire quels sont les points que je dois plus spécialement travailler ?

Merci,