Remplacement de each par foreach

Résolu
Bonjour,
Je ne connais un peu HTML et JavaScript mais absolument rien au PHP. J'ai trouvé sur Internet un petit code qui permet d'envoyer le contenu d'un formulaire par e-mail et qui m'est bien utile. Le voici :
<?php
$TO = "contact@monsite.net";
$h = "From: " . $TO;
$subject = "Avis sur le site";
$message = "";
while (list($key, $val) = each($_POST)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location:https://www.monsite.net;
?>

Il fonctionne très bien mais utilise la fonction obsolète "each". J'ai trouvé sur votre forum une réponse qui donnerait cela :
<?php
$TO = "contact@monsite.net";
$h = "From: " . $TO;
$subject = "Avis sur le site";
$message = "";
foreach($_POST as $index=>$val)
{
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location:https://www.monsite.net;
exit;
?>

Malheureusement elle ne permet de recevoir que le contenu de $val. J'ai fait plusieurs essais mais, vue mon incompétence, je n'arrive pas à paramétrer la fonction "foreach" correctement. Si quelqu'un pouvait m'aider ce serait très sympa ! Merci d'avance.

1 réponse

  1. Bonjour,

    Le problème vient du fait que dans le foreach, tu déclares $index=>$val, mais ensuite, tu utilises $key.
    $index et $key devraient être la même variable :
    foreach($_POST as $key => $val)
    {
        $message .= "$key : $val\n";
    } 

    Xavier
    1. Génial ! Ça marche ! Merci beaucoup.