Remplacement de each par foreach

Résolu/Fermé
Bernardl91 Messages postés 2 Date d'inscription mardi 26 novembre 2019 Statut Membre Dernière intervention 26 novembre 2019 - 26 nov. 2019 à 10:15
Bernardl91 Messages postés 2 Date d'inscription mardi 26 novembre 2019 Statut Membre Dernière intervention 26 novembre 2019 - 26 nov. 2019 à 10:59
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

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
26 nov. 2019 à 10:51
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
0
Bernardl91 Messages postés 2 Date d'inscription mardi 26 novembre 2019 Statut Membre Dernière intervention 26 novembre 2019
26 nov. 2019 à 10:59
Génial ! Ça marche ! Merci beaucoup.
0