Rechercher : dans
Par :

Pb pour joindre fichier a formulaire HTML

Dernière réponse le 8 avr 2008 à 16:50:05 Papy2B, le 11 sep 2007 à 16:12:07 
 Signaler ce message aux modérateurs

Bonjour,

Je suis débutant en HTML. Je viens de faire un site et dans ma page contact j'ai fait un formulaire.
J'ai mis la possibilité au client de me joindre un fichier, le problème c'est que je le recois pas ! comment ca se fait ?

Merci!

Voici mon formulaire :

<FORM enctype="multipart/form-data" action="mailto:blablabla@blablavla.fr" method="post">

<FIELDSET STYLE="background: #FFFFDD ;">
<LEGEND STYLE="background: #E5F5EE ;" <b>Complément de demande :</b></LEGEND>
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="10" WIDTH="95%">
<TR>
<TD WIDTH="70%">
Précisions ou informations concerantn votre demande :<br>
<textarea name="Autres" cols="100" rows="3"></textarea><br>
<br>
Nous joindre un fichier (Plans, photo...) :
<input name=fichier type=file />

</TABLE>
</FIELDSET><br><br>
<CENTER><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="10" WIDTH="95%">

<TR><TH>

<INPUT TYPE=SUBMIT VALUE=" Soumettre formulaire "> <INPUT TYPE=RESET VALUE=" Effacer ">
</TABLE></CENTER>
</FORM>

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Pb pour joindre fichier a formulaire HTML » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Les formulaires HTML VoirIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Servlets - Gestion des formulaires VoirIntroduction aux formulaires Les servlets rendent très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML, c'est-à-dire une interface graphique permettant à l'utilisateur de saisir des données. Grâce à la balise...

1

Pi_Xi, le 11 sep 2007 à 16:40:33

Bonjour,

la fonction mailto() permet d'envoyer un mail, pas de joindre un fichier, il va falloir procéder différemment, en utilisant un script PHP par exemple.

Répondre à Pi_Xi

2

Papy2B, le 11 sep 2007 à 19:24:10

Ah ok...

Peux tu m'aider car j'y connais rien du tout :o)

Répondre à Papy2B

3

Pi_Xi, le 12 sep 2007 à 10:00:47

Bonjour,

http://www.asp-php.net/ressources/bouts_de_code.aspx?id=83

et aussi:

formulaire php fichier joint

Dis-moi si tu rencontres des soucis!

Bon courage :o)

Répondre à Pi_Xi

4

Papy2B, le 12 sep 2007 à 13:41:33

Tout d'abord merci de m'aider...

Bon j'ai fait un copier coller de ton formulaire avec le fichier joint. J'ai mis mon adresse mail, et ca ne marche toujours pas, c'est même pire, IE plante et m'affiche un rapport d'erreur...

Quand je met ENCTYPE="TEXT/PLAIN" ca marche bien pour le contenu du formulaire je recois bien toutes les données mais des que je remplace par "multipart/form-data" et que je joins un fichier la ca plante...

Personne ne pourrai reprendre mon code et modifier la ligne qui merde ? ca serait plus simple car je comprend vraiement rien au code moi..
.lol

MERCI

Répondre à Papy2B

5

Pi_Xi, le 12 sep 2007 à 14:31:45

Quel fichier as-tu essayé de joindre? car le code du premier lien ne prend pas en compte toutes les extensions, il fonctionne seulement avec : .doc, .xls, .png, .gif et .bmp, mais on peut arranger ça.

C'est normal que ça plante si tu envois une autre extension, car il n'y a pas d'instructions dans ce cas (je viens de m'apercevoir que ce code n'est pas complet!)

Par ailleurs, la valeur "text/plain" ne prend en compte que les données du formulaire, tu ne peux pas l'utiliser pour joindre un fichier.

Envoi ton code ;o)

Répondre à Pi_Xi

6

Papy2B, le 12 sep 2007 à 17:47:19

Ben ce que j'appelle mon code c'est ca : fais un copié coller et va voir a quoi ca ressemble.. j'ai bien sur d'autre rubriques ds mon questionnaire mais je l'ai simplifié car la c'est surtout pour comprendre comment faire pour que mes clients arrivent a joindre un fichier...pour l'instant ca marche pas avec le code ci dessous...

<FORM enctype="multipart/form-data" action="mailto:blablabla@blablavla.fr" method="post">

<FIELDSET STYLE="background: #FFFFDD ;">
<LEGEND STYLE="background: #E5F5EE ;" <b>Complément de demande :</b></LEGEND>
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="10" WIDTH="95%">
<TR>
<TD WIDTH="70%">
Précisions ou informations concerantn votre demande :<br>
<textarea name="Autres" cols="100" rows="3"></textarea><br>
<br>
Nous joindre un fichier (Plans, photo...) :
<input name=fichier type=file />

</TABLE>
</FIELDSET><br><br>
<CENTER><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="10" WIDTH="95%">

<TR><TH>

<INPUT TYPE=SUBMIT VALUE=" Soumettre formulaire "> <INPUT TYPE=RESET VALUE=" Effacer ">
</TABLE></CENTER>
</FORM>

Répondre à Papy2B

7

Pi_Xi, le 13 sep 2007 à 10:20:52

Bonjour,

oui ce code là je l'avais déjà vu, je demandais celui après les modif pour joindre un fichier...

Répondre à Pi_Xi

8

Papy2B, le 13 sep 2007 à 11:02:14

Ah ok...

Ben j'ai fait encore aucune modif, j'avais tout simplement echangé mon code avec celui que tu m'as donné..Lol

Mais ca faisait planter IE (message d erreur).

Et puis comme je disais j y connais rien, si je modifie mon fichier j'ai peur de faire des conneries a moins qu on m explique exactement ou je dois modifier...

Bon je v quand mm essayer mais c pas gagné..

Répondre à Papy2B

9

Pi_Xi, le 13 sep 2007 à 11:03:29

Et c'était quoi le message d'erreur?

Tu as bien crée 2 fichiers? mail3.php (le formulaire) et mail4.php??

Répondre à Pi_Xi

10

Papy2B, le 13 sep 2007 à 11:36:53

AAAAA !!!

Non ! j'avais juste copier mail4.php je pensais pas qu'il fallait mettre l autre aussi...

Dslé ;o)

Je v voir ca

Répondre à Papy2B

11

Papy2B, le 13 sep 2007 à 16:38:29

J'ai pas réussi,

EN fait il faut que je te dise une info que j'ai omis de te dire mais qui je vois a son importance..

Je fais mon site via un logiciel qui fait tout TOWEB.

Donc si tu veux il me demande le nom de mes rubriques etc.. je définis pas moi même le code que j utilise et les extensions.

Cependant il me laisse ajouter du code HTML si je le desire. Cependant je reste à l interieur du logiciel, donc je vois pas comment créer 2 pages différentes dans la meme rubriques "contact" de mon site.. je suis obligé de mettre le code à la suite ou alors je sait pas comment faire...

En fouillant dans le repertoir du site j'ai vu des fichier avec les extensions .xml
J'ai trouvé ca aussi en en ouvrant un <?xml version="1.0" encoding="ISO-8859-1" ?>

C'est pour ca que je demandais qu on modifie directement mon code car là je suis perdu...lol

C'est pas possible de mettre tout le code à la suite dans la même page ?

Répondre à Papy2B

12

Pi_Xi, le 13 sep 2007 à 16:59:47

Désolée mais là du boulot, je n'ai pas le temps de faire ton code :o)

Dans ton répertoire, tu peux faire un clic droit<<Nouveau<<Document texte, et tu nomme ce fichier mail4.php, puis tu recopie le code adéquat dedans.
GoOgle est ton ami ;o)

Répondre à Pi_Xi

13

Pi_Xi, le 13 sep 2007 à 17:35:22

J'ai un peu de temps alors j'ai adapté le code vite fait (j'espère ne rien avoir oublié)

Tout d'abord, pour le formulaire, tu as oublié de fermer des balises </TR></TD>, et des guillemets aussi. J'ai apporté qq petites modifs à ton code:

<FORM enctype="multipart/form-data" action="./mail4.php" method="post"> 
<FIELDSET STYLE="background: #FFFFDD ;"> 
<LEGEND STYLE="background: #E5F5EE ;" <b>Complément de demande :</b></LEGEND> 
 <TABLE BORDER="0" CELLSPACING="2" CELLPADDING="10" WIDTH="95%"> 
  <TR> 
    <TD WIDTH="70%">Précisions ou informations concernant votre demande :<br> 
      <textarea name="Autres" cols="100" rows="3"></textarea>
      <br><br>Nous joindre un fichier (Plans, photo...) : 
      <input type="file" name="fichier" /> 
   </TD>
  </TR>
 </TABLE> 
</FIELDSET><br><br> 
<CENTER>
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="10" WIDTH="95%"> 
 <TR>
   <TH> 
      <INPUT TYPE="SUBMIT" VALUE=" Soumettre formulaire ">
      <INPUT TYPE="RESET" VALUE=" Effacer "> 
   </TH>
  </TR>
 </TABLE>
</CENTER> 
</FORM>

pour le fichier mail4.php:
<html>
<body>
<center>
<?

$name_file = $_FILES['fichier']['name']; 
$source=$_FILES['fichier']['tmp_name'];

move_uploaded_file($source, "./".$name_file); 

$extension=get_extension($name_file);

$type="text/plain";
if($type=="doc")
{
   $type="text/vnd.ms-word";
}
else if($type=="xls")
{
   $type="text/vnd.ms-excel";
}

$type2="image/png";

if($extension=="gif")
{
   $type2="image/gif";
}
else if($extension=="bmp")
{
   $type2="image/bmp";
}

function get_extension($filename)
{
   $parts = explode('.',$filename);
   $last = count($parts) - 1;
   $ext = $parts[$last];
   return $ext;
}

//----------------------------------
// Construction de l'entête
//----------------------------------

$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";

$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";

$msg .= "--$boundary\r\n";

$msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= $_POST['Autres'];
$msg .= "\r\n";

if($name_file!="")
{
$file = $name_file;
$fp = fopen($file, "rb");  
$attachment = fread($fp, filesize($file));
fclose($fp);

$attachment = chunk_split(base64_encode($attachment));


$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type2; name=\"$file\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";
}

$destinataire = "toto@tata.fr";

mail($destinataire, "le sujet", $msg, $header);

if($name_file!="")
{
unlink($name_file);
}
print("<br>\n");
print("<br><A href=./mail3.php target=\"principal\"><font size=\"2\">Envoyer un autre mail</font></A>");
?>
</center>
</body>
</html>

GoOgle est ton ami ;o)

Répondre à Pi_Xi

14

Papy2B, le 13 sep 2007 à 17:41:06

Franchement merci pour le mal que tu te donne, mais je crois que ten a malheureusement pas encore finit avec moi ! loool
:o)

C'est exactement ce que j'ai fait mais windows n'a pas l'air de reconnaitre cette extension... ca m 'apparait comme un fichier qu'il reconnait pas...

Comment mon logiciel où tous les fichiers sont en .xml va savoir qu'il peut ouvrir ces fichiers, si ca se trouve il peut mm pas les lire vu que c'est pas les mêmes extensions ?

Répondre à Papy2B

15

Pi_Xi, le 13 sep 2007 à 17:43:37

Ben faut passer par un serveur php, sinon ça peut pas marcher!

Je repasse peut-être dans 30 minutes, après je suis plus là pour aujourd'hui, je prendrai des nouvelles demain. Essaye de mettre en place le code ci-dessus :o)

Bonne fin de journée!
GoOgle est ton ami ;o)

Répondre à Pi_Xi

16

Papy2B, le 13 sep 2007 à 18:08:24

Passer par un serveur PHP ?? ca veut dire quoi...olalala ca devient trop compliqué pour moi tout ca je sens que mes clients m'enverons des fichiers par mail plus tard...ca me soul trop là j'y comprend absoluement rien tu me parle chinois ! lol

J'ai fait les 2 fichiers mail3.php et mail4.php

Je les ai mis dans le repertoire ou se trouve l index.html du site

mais bon ca ne marche pas et pour cause, le logiciel que j utilise à sa propre hirarchie et ses codes ou je ne sais quoi donc ce que je lui rajoute il en tiens pas compte...je peux pas ajouter des pages manuellement comme on est en train de faire, donc je suis obligé de rentrer dans le logiciel d'aller ds ma page contact dans la partie texte, d'y inserer un champ texte, par exemple %MAIL4%.

En fait cela signifie qu'il renvois vers le champ MAIL4. le champs MAIL4 est en fait le code que j ai copier collé de ce que tu appelle toi MAIL4.PHP
Le probleme c'est que ca renvois qur mail4.php et la ca sort donc de mon site pour aller sur ta page, mais l utilisateur n'est plus dans mon site...

C LA MERDE

telecharge la demo du logiciel tu comprendra peut etre mieux...lol

http://www.lauyan.com/fr/tw-home/index.html

C'est gratuit (demo) c 'est pas gros

Répondre à Papy2B

17

Pi_Xi, le 14 sep 2007 à 10:23:45

Bonjour,

tu n'as pas besoin de ce logiciel pour faire ce que l'on cherche à ajouter ; tu peux utiliser le bloc note, ou mieux télécharger Notepad++

On peut dans un premier temps faire fonctionner nos 2 fichiers indépendemment de ton site et l'intégrer plus tard, éventuellement par un lien vers le fomulaire si on ne trouve pas d'autre solution.

Par contre pour que ça fonctionne, tu es obligé de passer par un serveur php, je te propose donc d'installer EasyPhp, comme son nom l'indique il est très simple d'utilisation ;o)

http://www.01net.com/windows/Internet/serveur_ftp/fiches/147­44.html

Php est un langage serveur et doit donc passer par un serveur pour être interprété. Ca sonne chinois car tu n'en a jamais entendu parler, mais il n'y a rien d'obscur là-dedans, on peut y arriver ensemble.
GoOgle est ton ami ;o)

Répondre à Pi_Xi

18

Papy2B, le 14 sep 2007 à 11:04:19

OK j installe tout ca et je re

Répondre à Papy2B

19

Papy2B, le 14 sep 2007 à 11:14:51

Re :

Alors j'ai installer tout ce beau monde à savoir notepad++ et eastphp.

J'ai recréé les deux fichier mail3.php et mail4.php avec notepad++ je les ai pour l'instant enregistré sur mon bureau.

J'ai lancé easyphp et là j'ai ce message qui s'affiche : le port d'apache (80) est occupé par inetinfo.exe
C un pb ?

Je clique sur ok et la j ai deux feux, un rouge avec apacha a coté et un vert avec MySQL démarré

Voila ou j'en suis :o)

Répondre à Papy2B

20

Pi_Xi, le 14 sep 2007 à 11:50:13

Ah ben ça avance ^^

Alors pour le conflit, tu fais clic droit sur le fichier "httpd.conf" qui se trouve à l'emplacement:

C:\Program Files\EasyPHP1-8\apache\conf

et tu clic sur "Edit with Notepad++"

Puis tu fais une recherche (CTRL+F) sur "Port 80", tu ajoute un "#" au début de la ligne pour la commenter et tu ajoute la ligne (sans le "#"):

Port 8080

Ainsi il n'y aura plus de conflit.

Ensuite pour atteindre tes pages avec EasyPhp, il faut que tu places tes fichiers dans le répertoire:

C:\Program Files\EasyPHP1-8\www
GoOgle est ton ami ;o)

Répondre à Pi_Xi

21

Papy2B, le 14 sep 2007 à 12:44:31
  • +1

C'est fait et effectivement ca marche le feu est passé au vert, j'ai mis les fichiers dans le repertoire que tu m as dit.

Je fais quoi maintenant ?

:o)

COurrage, on va y arriver...

Répondre à Papy2B

22

Papy2B, le 14 sep 2007 à 12:52:39

Petite précisions, tu me parles biens des fichiers mail3.php et mail4.php a mettree ds le repertoire ou tout le site ?

Répondre à Papy2B

23

Pi_Xi, le 14 sep 2007 à 14:06:51

On peut déjà tester le formulaire sans le site dans un premier temps. Le point d'entrée sera donc mail3.php

1- Dans www/, tu crée un répertoire, tu mets tes 2 fichiers dedans,

2- puis clic droit sur l'icône de EasyPhp<<Administration (en bas de l'écran à droite). Dans la première liste nommée Apache, tu clic sur "Ajouter", tu tape un nom pour l'alias et tu rentres le nom du chemin du répertoire (par exemple C:\Program Files\EasyPHP1-8\www\FormEnvoiMail), puis tu valide.

3- Ensuite clic droit sur l'icone EasyPhp<<Redémarrer,

4- puis Administration et tu clic sur le nom de ton alias. Si tout fonctionne bien, les deux noms de tes fichiers s'affichent, tu clic sur mail3.php et le formulaire s'affiche.

Par la suite, il faudra placer le répertoire du site entier dans ce répertoire "www/".
GoOgle est ton ami ;o)

Répondre à Pi_Xi

24

Papy2B, le 14 sep 2007 à 14:54:59

Quand je clique sur "administration" ca m envoit dans l internet explorer à cette adresse http://127.0.0.1:8080/home/
Donc une page d erreur quoi...

J'ai pas de menu

Répondre à Papy2B

25

Pi_Xi, le 14 sep 2007 à 15:08:29

Oui, ça arrive, essaye:

http://localhost/home/
GoOgle est ton ami ;o)

Répondre à Pi_Xi

26

Papy2B, le 14 sep 2007 à 17:35:15

Ok j'ai procédé aux etapes...

Maintenant je fé quoi ? comment lancer les pages ?

Répondre à Papy2B

27

Pi_Xi, le 14 sep 2007 à 20:54:47

Via: http://localhost/home/

tu clic sur l'alias que tu as donné à ton répertoire, puis sur mail3.php
GoOgle est ton ami ;o)

Répondre à Pi_Xi

28

Papy2B, le 15 sep 2007 à 11:55:17

Ok tout apparait, quand je clique sur mail3.php j'ai bien le formulaire qui apparait, je charge un fichier et je fais "soumettre" et là page d'erreur :

http://localhost/FormEnvoiMail/mail4.php
La page est introuvable

:o(

Pourtant elle y est
quand je clique dessus elle apparait d'ailleur y a marqué que ca c normal :
\n"); print("
Envoyer un autre mail"); ?>

Bref je vois toujours pas ou on veut en venir car maintenant comment je fais le lien avec mon site ? je veux dire comment mon formaulaire va apparaitre a l interieur de mon site et pas une page a part ?

Répondre à Papy2B

29

Pi_Xi, le 15 sep 2007 à 12:48:57

Bonjour,

faut déjà voir si ce script marche, je vais tester en local là. Il va surement falloir que tu modifie une ligne du php.ini dans le répertoire apache, on verra ça quand tu n'auras plus ton erreur d'emplacement de fichier.

Après on ajoutera un <a href="...">Envoyer un fichier</a>, sur ta page si ça te va. J'y connais rien moi au logiciel que tu utilise, j'ai toujours tout tapé à la main pour faire un site.

Tu as bien placé "mail4.php" dans le même répertoire que mail3.php? g pas cette erreur chez moi, et tout fonctionne à merveille ^^

Ca m'impressionne toujours la rapidité avec laquelle le mail arrive à destination! :o)
GoOgle est ton ami ;o)

Répondre à Pi_Xi

30

Papy2B, le 15 sep 2007 à 18:22:45

Tu me fais bisquer moi ca marche pas !!!!

Les 2 fichiers sont biens dans le même répertoire....

J'attend tes explications pour les modifs dont tu parles :)

MERCI pour ta patience...

Répondre à Papy2B

31

Pi_Xi, le 15 sep 2007 à 19:00:15
  • +1

Ca marche pas et y'a toujours le même message d'erreur?

Chez moi, les 2 fichiers mail3.php et mail4.php sont dans le même répertoire que j'ai nommé "form", donc à l'emplacement:

C:\Program Files\EasyPHP1-8\www\form
GoOgle est ton ami ;o)

Répondre à Pi_Xi