Bonjour,
Je n'arrive pas a recuperer une piece jointe par email d'un formulaire par contre toutes les autres donnée sont recuperées
HTML
<INPUT name="piece" id="piece" TYPE="file">
PHP
$msg="$prenom $nom $email $tel $ville $piece $date";
mail('exemple@gmail.com','contact', $msg);
Je reussi à recuperer toutes les donnée sauf la piece jointe . Est ce qu'il y a une errueur dans mon code ou bien est ce qu'il faut faire autrement ?
Bonsoir.
Montres-nous la création de ton formulaire, soit toute la balise form
, ainsi que comment tu récupéres les valeurs de l'input.
Le meiux serait même que tu montres le code de ton formulaire complet, ainsi que niveau PHP tout son traitement.
Ce n'est pas juste en montrant une balise et 2 lignes de code PHP, que nous pourrons te répondre.
Surtout qu'une pièce jointe à un email, ça ne se fait pas juste en affichant la valeur de l'input dans le message de l'email.
Voici un petit indice concernant l'envoi de fichier via formulaire.
Mon code PHP ( il est pas super mais c'est la seule façon que j'ai pu le faire foncionner )
<?php
extract($_POST);
if (empty($_POST['nom']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['prenom']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['email']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['telephone']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['piece']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['ville']))
{
echo "<font color=red><br/></font>";
}
else {
header('Location: index.html');
$msg="$prenom $nom $email $tel $ville $piece $date";
mail('exemple@gmail.com','contact', $msg);
}
?>
Pour un input de type file, ce n'est pas $_POST
qu'il faut utiliser, mais $_FILES
pour information.
Voir ici, une fois que tu as modifié $_POST['piece']
par $_FILES['piece']
, tu devrais faire un var_dump
de $_FILES['piece']
, tu verras qu'il te retourne un tableau, comme tu peux le voir également en suivant le lien que je t'ai indiqué ci-dessus, je vois donc mal comment tu pourrais afficher une variable de type tableau comme tu le fait actuellement.
Montres ton code tel qu'il est à présent, en incluant autant le traitement du formulaire que le processus de l'envoi de mail.
Le code html est le même .
Voici le php :
<?php
extract($_POST) && ($_FILES['piece']);
if (empty($_POST['nom']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['prenom']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['email']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['telephone']))
{
echo "<font color=red><br/></font>";
}
if (empty($_FILES['piece']))
{
echo "<font color=red><br/></font>";
}
if (empty($_POST['ville']))
{
echo "<font color=red><br/></font>";
}
else {
header('Location: index.html');
$msg="$prenom $nom $email $tel $ville $_FILES $date";
mail('exemple@gmail.com','contact', $msg);
}
?>
Première chose, pour la première ligne je comprends le extract($_POST)
, mais je ne comprends absolument pas la seconde partie : ($_FILES['piece'])
, ça ne veut absolument rien dire.
Deuxième chose, quel est l'intérêt de faire un echo
en cas d'erreur d'une balise certe stylisée mais vide ?
Troisième chose, si tu veux faire une redirection, fais la après que le code que tu veux qui soit exécuté ait eu le temps de s'exécuter.
Pour finir, qu'est-ce que tu ne comprends pas quand je te dis :
je vois donc mal comment tu pourrais afficher une variable de type tableau comme tu le fait actuellement.
Pour rappel, la fonction mail ne va pas interpréter du code PHP dans la partie message
que tu lui définis, il ne te faut donc lui transmettre que des variables qui vont être interprétés par ton code PHP comme une chaine de caractères.
Je tiens a preciser que je ne suit pas de cours de programmage le peu que je sais est appris d'internet .Il n'ya donc personne qui peut corriger mes codes ou me conseiller c'est la raison pour laquelle j'ai decider de venir poster sur ce forum et j'ai eu la chance d'avoir des reponses . J'ai envlever le ($_FILES['piece'])
et pour la fonction ' echo ' vide , je sais que ca ne sert a rien mais c'est la seule façon que j'ai pu faire pour que l'email ne s'envois que si les champs sont remplit sinon meme avec la fonction ' requiered ' de html le mail part vide . Et sinon tout ce que j'essaye de faire pour extraire la pièce jointe ne marche pas , toutes les autres info sont bien envoyé , mais pour la pièce ( même si je reprend et j'adapte un code ) ça me dit soit erreur soir ca ne s'envoit juste pas .
Et sinon tout ce que j'essaye de faire pour extraire la pièce jointe ne marche pas
Concernant l'envoi de pièce jointe, tu peux par exemple regarder ceci : Envoyer un e-mail en PHP » Annexe : joindre un fichier.