Remplacement de each par foreach [Résolu]

Messages postés
2
Date d'inscription
mardi 26 novembre 2019
Statut
Membre
Dernière intervention
26 novembre 2019
- - Dernière réponse : 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:http://monsite.net/textes/avis-ok.htm");
?>

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:http://monsite.net/textes/avis-ok.htm");
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.
Afficher la suite 

1 réponse

Messages postés
3526
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2019
918
0
Merci
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
Bernardl91
Messages postés
2
Date d'inscription
mardi 26 novembre 2019
Statut
Membre
Dernière intervention
26 novembre 2019
-
Génial ! Ça marche ! Merci beaucoup.
Commenter la réponse de Reivax962