> Tous les forums > Forum des Webmasters
 petit probleme de formulaire ???Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
tom2
  Posté le 27/07/2007 @ 13:34 
Aller en bas de la page 
Petit astucien

Bonjour,

j'ai crée un petit formulaire avec une zone ou l'on peut m'envoyer des photos cependant lorsque l'on remplit celui-ci, à la reception du mail je n'ai aucun fichier dans le message sauf l'intitulé de la photo !

URL de la page : http://fgr7.free.fr/formulaire2.html

Publicité
tom2
 Posté le 27/07/2007 à 14:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

je voudrais aussi que le formulaire ne passe pas par une messagerie avant d' arriver sur ma boite : je vous laisse le code !

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
<script src="parametre.js"></script>
<SCRIPT LANGUAGE="JavaScript">
function Envoyer(f) {
f.submit();
}
</SCRIPT>
<style type="text/css">
<!--
@import url("feuille titre.css");
-->
</style>
<script type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\ ';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\ ';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\ ';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\ '; }
} if (errors) alert('The following error(s) occurred:\ '+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>
</head>

<body bgcolor="#000000">
<form action="mailto:johann.mare@free.fr?subject=ptitquestionnaire" method="post" enctype="text/plain" name="ptit questionnaire" id="ptit questionnaire" onsubmit="MM_validateForm('quelsport','','R');return document.MM_returnValue">
<p>&nbsp;</p>
<table width="65%" height="377" border="0" align="center" cellspacing="0" background="images/fond-formulaire.png">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="50%"><div align="right"><span class="lesquestions"><font color="#666666"><b>Pratiquez-vous un sport de glisse ?</b> </font></span></div></td>
<td width="44%"><label>
<input type="radio" name="oui" value="radiobutton" />
<b><span class="lesquestions"><font color="#666666">oui</font></span></b><span class="lesquestions"><font color="#666666"></font></span> <span class="lesquestions">
<input type="radio" name="non" value="radiobutton" />
<b><font color="#666666">non</font></b></span></label></td>
<td width="6%">&nbsp;</td>
</tr>
<tr>
<td class="lesquestions"><div align="right"><font color="#999999"><b>Si oui lequel(s) ? </b></font></div></td>
<td><label>
<textarea name="quelsport" id="quelsport"></textarea>
</label></td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="165" class="lesquestions"><div align="right"><font color="#CCCCCC"><b>Peut-&ecirc;tre une petite anecdote :</b></font> </div></td>
<td><label>
<textarea name="anecdote" cols="30" rows="10" id="anecdote"></textarea>
</label></td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="26" class="lesquestions"><div align="right"><font color="#FFFFFF"><b>Vos photos : </b></font></div></td>
<td><label>
<input name="parcourir" type="file" id="parcourir" />
</label></td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="21">&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="21">&nbsp;</td>
<td><label>
<input name="envoie" type="submit" id="envoie" value="envoyer" />
</label>
<label>
<input name="r&eacute;init" type="reset" id="r&eacute;init" value="R&eacute;initialiser" />
</label></td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="21">&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>

fennec.
 Posté le 27/07/2007 à 16:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
bonjour, voila le problème. ENCTYPE spécifie l'encodage utilisé pour la forme que prendra le contenu du formulaire. Ce paramètre ne peut être utilisé qu'accompagné par la méthode POST. ENCTYPE peut prendre plusieurs valeurs: * ENCTYPE="application/x-www-form-urlencoded" valeur par défaut; encode le contenu du formulaire selon une forme URL qui est difficilement lisible par le destinataire; http://Votre.Serveur.com/cgi-bin/VotreScript?ObjetDeFormulaire1=valeur1&... * ENCTYPE="text/plain" le contenu du formulaire sera retourné en format texte lisible par le destinataire; option accompagnée le plus souvent de ACTION=mailto: * ENCTYPE="multipart/form-data" permet d'expédier un fichier attaché au message. faire attention avec ce genre de formulaire apparament on peur t'envoyé n'importe quelle type de fichier change ton en et lors du clic sur le bouton la personne ne pourra ajouté que des .gif et .jpg voila
fennec.
 Posté le 27/07/2007 à 16:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
sorry, j'aurrai du metre des crochets change ton [input name="parcourir" id="parcourir" type="file" /] en [ input name="parcourir" id="parcourir" accept="image/jpeg" type="file" /] voila
tom2
 Posté le 27/07/2007 à 17:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
fennec. a écrit :

sorry, j'aurrai du metre des crochets

change ton

[input name="parcourir" id="parcourir" type="file" /]

en

[ input name="parcourir" id="parcourir" accept="image/jpeg" type="file" /]


voila

Tout d'abord merci d'avoir répondu, et puis sinon ben au niveau de l'envoie de fichiers, enfin de JPEG cela ne fonctionne toujours pas !

Malcolm
 Posté le 27/07/2007 à 17:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

je viens de répondre à ton MP tom2, si ça marche, on partage.
tom2
 Posté le 27/07/2007 à 19:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Malcolm a écrit :

je viens de répondre à ton MP tom2, si ça marche, on partage.

merci Malcolm mais j'ai encore un souci, je t' ai envoyé 1 MP !

fennec.
 Posté le 27/07/2007 à 22:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

slt,

tu as bien mit ENCTYPE="multipart/form-data" dans ton tag form

et pour l'input j'ai mit accept="image/gif"

mais sur firefox il laisse selectionner tout les fichiers et sur ie7 on a la choix entre selectionner tous les fichiers et les gif / jpg

pas core au point les browser pour l'attribut accept

si ca ne marche pas comme ca plutot que de faire mailto: ds ton form => fait mail.php

récupère ton image avec ton script php, si tu veux tu peux faire des tests

-si c'est bien un gif ou un jpg

-la taille du fichier

-si ton fichier passe bien par le web server

-si ton fichier est complet

-ect...

ensuite il ne reste plus qu'a l'envoyer par mail toujours avec php

tom2
 Posté le 28/07/2007 à 17:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

j'ai essayé de régler le probleme sous vos conseils mais une erreur demeure dans la partie PHP : (Parse error: syntax error, unexpected '}' in /mnt/155/sda/d/7/fgr7/questionnaire.php on line 95)

Mon fichier PHP :

<?php

$destination = "johan.mare@free.fr";

$sujet = "remplissage d'un questionnaire";

$pratique_sport_glisse = (isset($_POST['pratique_sport_glisse'])) ? $_POST['pratique_sport_glisse'] : ''; // pareil pour chaque "name", $_POST parce que la méthode est "post"

//pour le fichier uploadé, c'est un poil plus complexe, il faut l'écrire dans un dossier

$name_fichier = $_FILES['parcourir']['name'];
$source=$_FILES['
parcourir']['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;
}

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




$msg = "Bonjour, un formulaire a été soumis :\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 .= "Pratique-t-il des sports de glisse ? : $pratique_sport_glisse\n";

// [...] mettre avec .= toutes les variables précédemment récupérées

$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 = $_POST['to'];
$expediteur = $_POST['from'];


// envoi du mail
mail($destinataire, $sujet, $msg, "Reply-to: $destinataire\r\nFrom: Mail de formulaire \r\n".$header);

}

?>


Publicité
fennec.
 Posté le 29/07/2007 à 13:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

slt,

a première vue il me semble que ton acollade fermant avat ?> ne sert a rien

pour éviter ce genre d'ereur voila quelque conseil

avant tout lorsqu'une condition ou une boucle n'a qu'une seul instruction ne met pas les acolades. attention pour les fonctions elle sont obligatoire

example :

if (i<2)

j=5;

lorsque tu as des crochets, des parenthèse ou des accolades commence par les mètre toutes les deux

example :

étape 1 : if ()

étape 2 : if (i<2)

étape 3 : if (i<2) {}

ensuite tu tappe ton code dans les accolades

il est difficile de si retrouvé la dedans

if ((())()(()()))

certain programme lorsque tu passe sur une acolades, une parenthese ou un crochet, te met l'ouvrant et le fermant en couleur 'est plus facil de s'y retrouvé

tom2
 Posté le 29/07/2007 à 13:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut,

j' ai viré l' acolade qui se trouve à la fin c'est a dire avant: ?>

mais rien n'a changé maintenant l'erreur se situe ligne 93 et comme je n'ai aucune notion en php c'est assez difficile, pour moi de déchiffrer quoi que se soit... C'est un peu tordu tout ça, lol !

Malcolm
 Posté le 29/07/2007 à 14:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

fennec : les accolades ne sont effectivement pas obligatoires, mais par souci de clarté je les ai mises. Et mon exemple est largement différent de ce que tu expliquais au début.

tom2 : c'est gentil de dire "j'ai une erreur", mais comme je viens de te le dire par MP, si onn'a pas la ligne, on ne peut pas la deviner.

tom2
 Posté le 29/07/2007 à 15:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
excusez moi la voila : mail($destinataire, $sujet, $msg, "Reply-to: $destinataire\r\nFrom: Mail de formulaire \r\n".$header);
Malcolm
 Posté le 29/07/2007 à 19:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

la ligne est bonne, c'est ss doute une parenthèse mal fermée avant ou une accolade mal fermée.
tom2
 Posté le 29/07/2007 à 19:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je voudrais pas paraitre chiant mais ya bon nombre de parenthèses dans tout ça et tout ne me semble pas rationnnellement français ou meme mathematique à mon niveau, alors Malcolm je te fais de nouveau parvenir le script :

<?php

$destination = "johan.mare@free.fr";

$sujet = "remplissage d'un questionnaire";

$pratique_sport_glisse = (isset($_POST['pratique_sport_glisse'])) ? $_POST['pratique_sport_glisse'] : ''; // pareil pour chaque "name", $_POST parce que la méthode est "post"

//pour le fichier uploadé, c'est un poil plus complexe, il faut l'écrire dans un dossier

$name_fichier = $_FILES['parcourir']['name'];
$source=$_FILES['
parcourir']['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;
}

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




$msg = "Bonjour, un formulaire a été soumis :\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 .= "Pratique-t-il des sports de glisse ? : $pratique_sport_glisse\n";

// [...] mettre avec .= toutes les variables précédemment récupérées

$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 = $_POST['to'];
$expediteur = $_POST['from'];


// envoi du mail
mail($destinataire, $sujet, $msg, "Reply-to: $destinataire\r\nFrom: Mail de formulaire \r\n".$header);

}

?>

tom2
 Posté le 29/07/2007 à 19:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
L'erreur ne serait pas ici par hasard : $boundary = "-----=".md5(uniqid(rand()));
Malcolm
 Posté le 29/07/2007 à 23:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

non mais la dernière accolade me semble être en trop, je vais revoir de mon coté dès que j'aurai un peu de temps.
Publicité
tom2
 Posté le 30/07/2007 à 08:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Ok merci c' est sympa !
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
149,99 €Smartphone 6.53 pouces Xiaomi Redmi Note 8 Pro (FHD+, 6Go/64Go) à 149,99 €
Valable jusqu'au 16 Juin

Cdiscount fait une promotion sur le smartphone 6.53 pouces Xiaomi Redmi Note 8 Pro qui passe à 149,99 € livré gratuitement au lieu de 200 €. Ce smartphone dispose d'un écran 6.53 pouces FHD+ (2340x1080 pixels), un processeur 8 coeurs Helio G90T, 6 Go de mémoire, de 64 Go d'espace de stockage extensible par microSD, d'un APN 64 +8 +2 + 2 MPixels et d'un APN 20 MP avant, du bluetooh, du Wifi, d'un lecteur d'empreintes digitales. Il est compatible avec les fréquences 2G, 3G et 4G. Le tout tourne sous Android 9 avec une surcouche Xiaomi. La batterie est de haute capacité 4500 mAh et est compatible charge rapide.


> Voir l'offre
21,99 €Switch Gigabit Netgear GS308 8 ports à 21,99 €
Valable jusqu'au 15 Juin

Amazon fait une vente flash sur l'excellent switch Netgear GS308 Gigabit 8 ports 10/100/1000 qu'il propose à 21,99 € alors qu'on le trouve ailleurs autour de 29 €.


> Voir l'offre
109,99 €Ecran PC 23,8 pouces Acer K243Ybmix (Full HD, 75 Hz, IPS, 1 ms) à 109,99 €
Valable jusqu'au 17 Juin

Cdiscount fait une promotion sur l'écran PC 23,8 pouces Acer K243Ybmix qui passe à 109,99 € alors qu'on le trouve ailleurs à partir de 125 €. Cet écran possède une dalle IPS Full HD (1920x1080) qui offre un temps de réponse de 1 ms un rafraichissement de 75 Hz (FreeSync). Il dispose d'entrées VGA et HDMI et intègre des haut-parleurs (2W)


> Voir l'offre

Sujets relatifs
Formulaire Flash qui a un tout petit problème
Problème pour recevoir infos formulaire
petit probleme!!
probleme formulaire php
comment créer et recevoir un petit formulaire tout
Petit problème
Problème de formulaire html (Orange)
Petit problème script PHP
Problème formulaire PHP
petit probleme d'hebergement
Plus de sujets relatifs à petit probleme de formulaire ???
 > Tous les forums > Forum Forum des Webmasters