Formulaire trop complexe pour moi ! sos

bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 - 14 août 2006 à 10:27
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 - 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

3 réponses

apacheswiss Messages postés 154 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 août 2007
14 août 2006 à 23:27
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
0
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024
15 août 2006 à 18:10
merci mais pourrais-tu être plus précis ?
@mitiés

  B G
0
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024
15 août 2006 à 18:15
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
0
Rejoignez-nous