Formulaire trop complexe pour moi ! sos

Messages postés
23253
Date d'inscription
samedi 22 octobre 2005
Statut
Modérateur
Dernière intervention
27 août 2019
- - Dernière réponse : bg62
Messages postés
23253
Date d'inscription
samedi 22 octobre 2005
Statut
Modérateur
Dernière intervention
27 août 2019
- 15 août 2006 à 18:15
bonjour, je me suis lancé dans l'élaboration d'un formulaire (en php mais avec aussi du javascript) et je rame complètement, malgré toutes les astuces que j'ai pues trouver ! alors : SOS !
Je viens encore de faire quelques modifs, je m'approche de ce que je voudrais, mais il y a encore quelques incompatibilités:
1 - Vérifier le nombre de mots dans les zônes concernées (si possible avec un 'compte à rebours'ou une alerte) 2 - Vérifier le nombre de caractères dans les zônes concernées (si possible avec un 'compte à rebours'ou une alerte ) cela fonctionne sur une ligne mais pas sur la deuxième !!! même en recopiant le même code ! 3 - n'accepter que des adresses mail valides dans les champs d'adresse (je ne sais pas si le procédé fonctionne bien !)
(il est à cette adresse:http://refok.free.fr/super/pages/essai_formulaire.php)
voici le code:

<?php

// FAUT IL RECHANGER LES 'votresite.com" ?????

function email($destinataire, $sujet , $messtxt, $messhtml,$mailfrom,$namefrom= "votresite.com")
{

$boundary = "_".md5 (uniqid (rand()));
$entete = "MIME-Version: 1.0\n";

$entete .= "X-Sender: <www.votresite.com>\n";
$entete .= "X-Mailer: PHP\n";
$entete .= "X-auth-smtp-user: webmaster@votresite.com \n";
$entete .= "X-abuse-contact: abuse@votresite.com \n";

$entete .= "Reply-to: $namefrom <$mailfrom>\n";
$entete .= "From:$namefrom <$mailfrom>\n";
//www-data@planet-work.com , dépend de votre hebergeur, envoyé vous un mail depuis la fonction mail sur une adresse non filtrée pour récuperer cette valeur

$entete .= "Content-Type: multipart/alternative; boundary="$boundary"";
$message = "--" . $boundary . "\n";
$message.= "This is a multi-part message in MIME format.\n\n";

$message .= "Content-Type: text/plain; charset="iso-8859-1"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $messtxt;
$message .= "\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/html; charset="iso-8859-1"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= str_replace("=","=3D",$messhtml);
$message .= "\n\n";

return mail($destinataire, $sujet, $message, $entete);
}

// correction - - $email_dest = "bg62@free.fr";
$email_dest = "bg62@laposte.net";

if ($_POST['envoi']) {

$message_remerciement = "merci de votre demande je vous réponds au plus vite sur votre adresse mail";

$subject = "depuis refok";

$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) { $partie_champs_texte ."" . $_POST['titre_champ'.$a] . " " . $_POST['champ'.$a] . "
";
}

if ($_POST['nbre_zone_email'] != 0) { $partie_zone_email "" . $_POST['titre_email'] . " " . $_POST['zone_email'] . "
";
}

if ($_POST['nbre_zones_texte'] != 0) { $partie_zone_texte "" . $_POST['titre_zone'] . " " . $_POST['zone_texte'] . "
";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$fin = "</html>";

$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;

// Send the e-mail

email($email_dest,$subject,$sortie,$sortie,$_POST['champ14'],$_POST['champ15']);
// LES CHAMPS SONT BONS ICI ??????????????????????????????????????

} // Closing if edit
?><html>
<head>
<title>envoi de formulaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript"><!-- Hide script from older browsers
//ORIGINAL<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
function checkwords(val1,maxlength){
var maxwords=maxlength
var temp=val1.split(" ")
if (temp.length>maxwords){
return false
}
else
{
return true;
}
}

//function verifSelection() {
//if (checkwords(mail_form.champ1.value,20)==false)
//{
// alert ("trop de mots pour le titre du site")
// return false;
//}
// PEUT ON METTRE UN TRUC DANS CE GENRE POUR VERIFIER LES AUTRES SELECTIONS ???? ET COMMENT INSERER ???
//function verifSelection2() {
//if (checkwords(mail_form.champ1.value,15)==false)
//{
//alert ("trop de mots pour MOTS CLEFS 1")
//return false;
//}

//function verifSelection3() {
//if (checkwords(mail_form.champ1.value,200)==false)
//{
//alert ("trop de mots pour MOTS CLEFS 2")
//return false;
//}
if (checkwords(mail_form.champ1.value,20)==false)
{
alert ("trop de mots pour le titre du site")
return false;
}
if (checkwords(mail_form.champ5.value,15)==false)
{
alert ("trop de mots pour les Mots clefs 1")
return false;
}
if (checkwords(mail_form.champ6.value,200)==false)
{
alert ("trop de mots pour les Mots clefs 2")
return false;
}

if (mail_form.champ1.value == "") {
alert("non rempli !")
return false
} if (mail_form.champ2.value == "") {
alert("non rempli !")
return false
} if (mail_form.champ3.value == "") {
alert("non rempli !")
return false
} if (mail_form.champ4.value == "") {
alert("non rempli !")
return false
} if (mail_form.champ5.value == "") {
alert("non rempli !")
return false
}} if (mail_form.champ6.value == "") {
alert("non rempli !")
return false
} if (mail_form.zone_email.value == "") {
alert("non rempli !")
return false
}

invalidChars = " /:,;'"

for (i=0; i -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}

atPos = mail_form.zone_email.value.indexOf("@",1) // there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) { // and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

periodPos = mail_form.zone_email.value.indexOf(".",atPos)

if (periodPos == -1) { // and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (periodPos+3 > mail_form.zone_email.value.length) { // must be at least 2 characters after the
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}if (mail_form.zone_texte.value == "") {
alert("non rempli !")
return false
} } // Fin de la fonction

</script>

<script type="text/javascript">

var ns6=document.getElementById&&!document.all

function restrictinput(maxlength,e,placeholder){
if (window.event&&event.srcElement.value.length>=maxlength)
return false
else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength){
var pressedkey=/[a-zA-Z0-9\.\,\/]/
if (pressedkey.test(String.fromCharCode(e.which)))
e.stopPropagation()
}
}

function countlimit(maxlength,e,placeholder){
var theform=eval(placeholder)
var lengthleft=maxlength-theform.value.length
var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder)
if (window.event||e.target&&e.target==eval(placeholder)){
if (lengthleft<0)
theform.value=theform.value.substring(0,maxlength)
placeholderobj.innerHTML=lengthleft
}
}

function displaylimit(thename, theid, thelimit){
var theform=document.getElementById(theid)
var limit_text=' '+thelimit+' characteres Maximum.'
if (document.all||ns6)
document.write(limit_text)
if (document.all){
eval(theform).onkeypress =function(){ return restrictinput(thelimit,event,theform)}
eval(theform).onkeyup=function(){ countlimit(thelimit,event,theform)}
}
else if (ns6){
document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) }, true);
document.body.addEventListener('keyup', function(event) { countlimit(thelimit,event,theform) }, true);
}
}

</script>
</head>



<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">


comment faire pour :


1 - Vérifier
le nombre de mots dans les zônes concernées (si possible
avec un 'compte à rebours'ou une alerte) 2
- Vérifier le nombre de caract&egrave;res dans les
zônes concernées (si possible avec un 'compte à rebours'ou une alerte )
cela fonctionne sur une ligne mais pas sur la deuxi&egrave;me !!! m&ecirc;me
en recopiant le m&ecirc;me code ! 3 - n'accepter que des adresses mail valides
dans les champs d'adresse (je ne sais pas si le proc&eacute;d&eacute; fonctionne
bien !)




 

<?php
if ($message_remerciement) {
echo("");
echo(stripslashes($message_remerciement));
echo("

</html>");
exit();
}
?>
Attention ! tous les champs sont obligatoires ...

Pour le Site: ,

----

Titre du Site,

maximum 20 mots (Les majuscules ne sont pas recommandées),

----

URL du site,
,

----

Description courte,

maximum 150 caractères (tout caract&egrave;re ou espace compte pour 1)
<script>
displaylimit("Limite","champ3txtlimiter",150)
</script>,

----

Description longue,

maximum 200 caract&egrave;res (tout caract&egrave;re ou espace compte
pour 1)
----, Mots clefs 1</td>

15 mots maximum, séparés par des &quot; , &quot; Ne pas mettre d'espaces
avant ou apr&egrave;s les virgules.,

----

Mots clefs 2,

maximum 200 mots, séparés par des &quot; , &quot; Ne pas mettre d'espaces
avant ou apr&egrave;s les virgules.,

----

La catégorie dans laquelle on veut placer le site,
,

----

Eventuellement sous-catégorie,
,

----

Pour la Personne :,
 ,

----

prénom,
,

----

nom,
,

----

M ou Mme,
,

----

titre,
,

----

Pour le Webmaster :,
 ,

----

nom et prénom,
,

----

adresse email pour les soumissions,

attention ! bien lire les recommandations pour ce choix !,

----

adresse email pour contact,

adresse 'normale' : important pour le suivi !,

----

mot de passe,

choisi pour les soumissions,

----

Pour la ‘Compagnie’.,
(Dans cette catégorie, l’on peut ignorer ou refuser certaines lignes
en mettant simplement un ‘ – ‘, sauf pour l'adresse e-mail : remettez
la même que pour les soumissions ),

----

société,
,

----

pays,
,

----

rue,
,

----

code postal,
,

----

ville,
,

----

email général,
,

----

téléphone,
,

----

fax,
,

----

portable,
,

----

numéro vert,
,

----

produits,
,

----

E MAIL,

Le m&ecirc;me que celui choisi pour les soumissions .,

----

message personnel complèmentaire
: ,
<textarea name="zone_texte" cols="50" rows="10"></textarea>,

----



,




</form>

</html>

  si quelqu'un pouvais m'aider, ou encore mieux le corriger complètement ce serait suprt
@mitiés B G
Afficher la suite 

3 réponses

Messages postés
154
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
22 août 2007
0
Merci
déjà je te conseillerais de mettre ton code javascript dans un fichier séparer...

et ensuite pour les input..
un truc du genre....

etc etc etc
Commenter la réponse de apacheswiss
Messages postés
23253
Date d'inscription
samedi 22 octobre 2005
Statut
Modérateur
Dernière intervention
27 août 2019
0
Merci
merci mais pourrais-tu être plus précis ?
@mitiés

  B G
Commenter la réponse de bg62
Messages postés
23253
Date d'inscription
samedi 22 octobre 2005
Statut
Modérateur
Dernière intervention
27 août 2019
0
Merci
attention , merci pour vos explications, mais j'ai bien précisé : je suis débutant (archi débutant ....)
tenez-en compte svp
@mitiés

  B G
Commenter la réponse de bg62