Utiliser la fonction mail

Eléphanteau du PHP | 24 Messages

08 janv. 2008, 23:48

Bonjour,

J'ai un formulaire html dans lequel j'ai inséré du code php de cette maniére :
      <p><label for="nom"><font color="#000000"><b>Nom :</b> <i> Name :</font></i></label>
        <input type="text" size="30" name="nom" id="nom" value="<?php
        if (!empty($_POST["nom"])) {
// Saisi du nom
                echo htmlspecialchars($_POST["nom"],ENT_QUOTES);
        }
        ?>" />
        </p>

        <p><label for="prenom"><font color="#000000"><b>Prenom : </b><i>First Name :</i></font></label>
        <input type="text" size="30" name="prenom" id="prenom" value="<?php
        if (!empty($_POST["prenom"])) {
// Saisi du prenom
                echo htmlspecialchars($_POST["prenom"],ENT_QUOTES);
        }
        ?>" />
        </p>
La section qui utilise la fonction mail est la suivante :
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["prenom"],$_POST["message"],$entete))
Or je souhaite envoyer par email le prenom + le nom.
Si j'inscrit ceci :
  if (@mail($email_webmaster,$_POST["titre"],$_POST["prenom,nom"],$_POST["message"],$entete))
Je n'ai pas de message d'erreur, mais le prénom et le noom saisi dans le formulaire ne sont pas inscrit dans l'email.

J'ai aussi essayé cette syntaxe :

  if (@mail($email_webmaster,$_POST["titre"],$_POST["prenom"], $POST["nom"],$_POST["message"],$entete))
Mais, ça me fait la même chose : l'email est envoyé, mais il n'y a pas toutes les informations que je souhaite y inclure.

Comment puis je passer plusieurs informations saisies dans mon formulaire html avec la fonction mail de php ?

ViPHP
ViPHP | 1996 Messages

09 janv. 2008, 00:03

C'est normal...

La variable $_POST corespond a un tableau. Ainsi $_POST["nom"] correspond à la ligne "nom" de ton tableau (schématiquement).

Quand tu demandes $_POST["prenom,nom"] du demande la ligne "prenom,nom" et non prenom+nom.

Ainsi si tu veux avoir le nom+ le prénom utilise la concaténation.
$nom_prenom = $_POST["nom"].' '.$_POST["prenom"];
Tu as aussi des fonctions qui te permettent d'écrire les premières lettres en majuscule :
$nom_prenom = ucfirst($_POST["nom"]).' '.$_POST["prenom"];
ou d'autres qui te permettent d'écrire le nom en Majuscule par exemple :
$nom_prenom = strtoupper($_POST["nom"]).' '.ucfirst($_POST["prenom"];
Avec cette dernière ligne, ton code s'écrira :
if (@mail($email_webmaster,$_POST["titre"],$nom_prenom,$_POST["message"],$entete))
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

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

09 janv. 2008, 00:40

  if (@mail($email_webmaster,$_POST["titre"],$_POST["prenom,nom"],$_POST["message"],$entete))
Je n'ai pas de message d'erreur (...)
C'est on ne peut plus normal, tu demandes toi même explicitement à php de ne surtout pas t'avertir des éventuelles erreurs que la fonction mail pourrait retourner en utilisant l'opérateur de silence "@". C'est dommage car php t'aurait dit tout de suite que les arguments passés à la fonction ne correspondaient pas, que ton message était envoyé à la place des entêtes, ces dernieres à la place des paramètres, etc.

Cet opérateur n'est rien d'autre qu'un cache misère lorsque vous n'avez pas été capable de gérer les erreurs éventuelles par des tests en amont. Ne l'utilisez surtout pas lorsque vous être en train de développer et que vous avez régulièrement besoin de debugger, vous vous privez de la seule et unique information que vous avez à votre disposition. En fait, d'une manière générale, ne l'utilisez pas du tout, ça sera encore mieux :x

Pour le reste, je te laisse consulter la réponse d'Aureusms :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 24 Messages

09 janv. 2008, 00:43

Merci, c'est bien ça :) . Avec la concaténation, ça fonctionne.

J'ai cherché sur google si il existe un moyen de concaténer plusieurs chaines de caractéres.

En fait, je souhaite concaténer plusieurs chaines de caracéteres, par exemple nom + prenom + adresse + code postal + ville + tél. Est-ce possible ?

@Ryle, merci pour cette information. Je ne comprenais pas ce qu'il faisait là le @. Je ne le voyais pas dans la documentation PHP, mais vu qu'il était sur le script que j'ai récupéré, j'osais pas le virer.

Mammouth du PHP | 881 Messages

09 janv. 2008, 05:18

Merci, c'est bien ça :) .
En fait, je souhaite concaténer plusieurs chaines de caracéteres, par exemple nom + prenom + adresse + code postal + ville + tél. Est-ce possible ?
La concaténation se fait simplement par l'ajout d'un point hors guillemets.
Regarde bien comment Aureusms a fait la variable $prenom_nom pour toi et remarque l'usage du point (.)
Soyez artisans de paix