Quote from: grand-mère at Oct 17, 2006, 04:57 PM
Merci David
Au fait, tant qu’on y est, mais ça n’a rien à voir avec Modx, connaissez-vous un moyen d’envoyer des formulaires par mail à mes correspondants qu’ils puissent remplir et me renvoyer (en attendant de faire marcher un maginifique Newmanager ? J’ai vu qu’il y a InfoPath de Bill mais je me demane si on peut pas faire ça avec OO ou Word ? En PDF, c’est pas possible, faut payer un truc à Adobe...Si vous avez des idées..j’ai la nuit pour trouver une solution Super la fin des vacances !
Bonjour Grand-mere
As tu trouvé solution à ta demande ?
Si pas, et cela pourra peut-être servir à d’autres, pour un besoin, j’ai créé un snippet simple qui permet d’afficher un formulaire et son script d’envoi.
Il comprend le bout de code en php pour envoyer le formulaire par email
Un bout de code adapté à mes besoins en javascript généré par dreamweaver
Un bout de code html avec mon fourmulaire
Il faut juste modifier les éléments dans les premières lignes pour adapter à ton cas, le javascript et le formulaire bien sûr)
Dans le formulaire, il doit y avoir ce champs caché juste avant le </form> par exemple
<input name="mm_envoi" type="hidden" value="ok">
<?php // snippet formulaire_job
// mettre ici la page qui va servir de remerciement
$insertGoTo="index.php?id=24" ;
// adresse d'envoi du formulaire
$from="adresse email";
// adresse de réception du formulaire
$to="adresse email";
// sujet
$sujet="Formulaire job info";
function sendMail($mFrom,$mTo,$sujet,$body) {
// l'émetteur
$tete = "From: ".$mFrom."\n";
$tete .= "Reply-To: ".$mFrom."\n";
// et zou... false si erreur d'émission
return mail($mTo,$sujet,$body,$tete);
}
// SI LE FORM A ETE POSTE
if(!empty($_POST["mm_envoi"])) {
// Récupère les éléments du form
$temp="";
while (list($truc, $val) = each($_POST))
$temp .= $truc." : ".$val."\n\n";
// Caractères spéciaux
$temp = stripslashes($temp);
// Envoie le message
if(@sendmail($from,$to,$sujet,$temp)) {
// Affiche un message de confirmation
header(sprintf("Location: %s", $insertGoTo));
exit;
}
}
?>
<script language="JavaScript" 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 YY_checkform() { //v4.71
//copyright (c)1998,2002 Yaromat.com
var a=YY_checkform.arguments,oo=true,v='',s='',err=false,r,o,at,o1,t,i,j,ma,rx,cd,cm,cy,dte,at;
for (i=1; i<a.length;i=i+4){
if (a[i+1].charAt(0)=='#'){r=true; a[i+1]=a[i+1].substring(1);}else{r=false}
o=MM_findObj(a[i].replace(/\[\d+\]/ig,""));
o1=MM_findObj(a[i+1].replace(/\[\d+\]/ig,""));
v=o.value;t=a[i+2];
if (o.type=='text'||o.type=='password'||o.type=='hidden'){
if (r&&v.length==0){err=true}
if (v.length>0)
if (t==1){ //fromto
ma=a[i+1].split('_');if(isNaN(v)||v<ma[0]/1||v > ma[1]/1){err=true}
} else if (t==2){
rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-zA-Z]{2,4}$");if(!rx.test(v))err=true;
} else if (t==3){ // date
ma=a[i+1].split("#");at=v.match(ma[0]);
if(at){
cd=(at[ma[1]])?at[ma[1]]:1;cm=at[ma[2]]-1;cy=at[ma[3]];
dte=new Date(cy,cm,cd);
if(dte.getFullYear()!=cy||dte.getDate()!=cd||dte.getMonth()!=cm){err=true};
}else{err=true}
} else if (t==4){ // time
ma=a[i+1].split("#");at=v.match(ma[0]);if(!at){err=true}
} else if (t==5){ // check this 2
if(o1.length)o1=o1[a[i+1].replace(/(.*\[)|(\].*)/ig,"")];
if(!o1.checked){err=true}
} else if (t==6){ // the same
if(v!=MM_findObj(a[i+1]).value){err=true}
}
} else
if (!o.type&&o.length>0&&o[0].type=='radio'){
at = a[i].match(/(.*)\[(\d+)\].*/i);
o2=(o.length>1)?o[at[2]]:o;
if (t==1&&o2&&o2.checked&&o1&&o1.value.length/1==0){err=true}
if (t==2){
oo=false;
for(j=0;j<o.length;j++){oo=oo||o[j].checked}
if(!oo){s+='* '+a[i+3]+'\n'}
}
} else if (o.type=='checkbox'){
if((t==1&&o.checked==false)||(t==2&&o.checked&&o1&&o1.value.length/1==0)){err=true}
} else if (o.type=='select-one'||o.type=='select-multiple'){
if(t==1&&o.selectedIndex/1==0){err=true}
}else if (o.type=='textarea'){
if(v.length<a[i+1]){err=true}
}
if (err){s+='* '+a[i+3]+'\n'; err=false}
}
if (s!=''){alert('The required information is incomplete or contains errors:\t\t\t\t\t\n\n'+s)}
document.MM_returnValue = (s=='');
}
//-->
</script>
<form name="form1" method="post" action="">
<table width="500" border="0">
<tr>
<td>Nom:</td>
<td><input name="nom" type="text" id="nom"></td>
</tr>
<tr>
<td>Prénom:</td>
<td><input name="prenom" type="text" id="prenom"></td>
</tr>
<tr>
<td>Adresse:</td>
<td><textarea name="adresse" id="adresse"></textarea></td>
</tr>
<tr>
<td>Téléphone:</td>
<td><input name="telephone" type="text" id="telephone"></td>
</tr>
<tr>
<td>Adresse email: </td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan="2">Faites ci-dessous un bref descriptif de vos disponibilités :</td>
</tr>
<tr>
<td colspan="2"><textarea name="cv" cols="50" rows="10" id="cv"></textarea></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr align="center">
<td colspan="2"><input name="Submit" type="submit" onClick="YY_checkform('form1','nom','#q','0','Quel est votre nom ?','email','#S','2','Adresse email invalide !','cv','10','1','Le champs de vos compétences est vide !');return document.MM_returnValue" value="Envoyer"></td>
</tr>
</table>
<input name="mm_envoi" type="hidden" value="ok">
</form>
?>