8792 sujets

Développement web côté serveur, CMS

Salut à tous,


J'ai créé un formulaire de pré-inscription à un congrès (du mieux que je peux...mon métier est très loin du web, ne me blâmez pas biggrin.gif ).

Une fois que l'utilisateur a validé son formulaire, je recois un mail récapitulatif, avec ses coordonnées et ses choix.

Le problème est le suivant :
Il arrive parfois que certains de ces choix ( par exemple Gala) ne soient pas restitués dans l'email, alors que le total correspondant est bon....et je ne comprends pas pourquoi....


Voici donc le code de mon formulaire, ainsi qu'un exemple de mail récapitulatif, pour rendre la chose plus claire.(désolé c'est un peu long wacko.gif )

Si quelqu'un peut éclaire ma lanterne...

Merci
Lutin

<head>


<script type="text/javascript" language="Javascript" >
<!--
function verification()
{


if(document.getElementById('R1').checked === true) document.getElementById('C1').value = "Cotisation CNO 2007 classique (130 euros)";
if(document.getElementById('R2').checked === true) document.getElementById('C1').value = "Cotisation CNO 2007 reduite (65 euros)";
if(document.getElementById('R16').checked === true) document.getElementById('C1').value = "Dispensé de Cotisation";
if(document.getElementById('R18').checked === true) document.getElementById('C1').value = "Etudiant invité";
if(document.getElementById('R3').checked === true) document.getElementById('C2').value = "Inscription avant le 20/02/07 (300 euros)";
if(document.getElementById('R4').checked === true) document.getElementById('C2').value = "Inscription apres le 20/02/07 (345 euros)";
if(document.getElementById('R5').checked === true) document.getElementById('C2').value = "Etudiant 3e cycle sans activité libérale, sans FIF-PL (150 euros)";
if(document.getElementById('R6').checked === true) document.getElementById('C2').value = "Interne des CHU à jour de sa cotisation (65 euros)";
if(document.getElementById('R15').checked === true) document.getElementById('C2').value = "Invité au Congrès";
if(document.getElementById('R19').checked === true) document.getElementById('C2').value = "Etudiant Invité au Congrès";
if(document.getElementById('R13').checked === true) document.getElementById('C4').value = "Pas de post-congres";
if(document.getElementById('R7').checked === true) document.getElementById('C4').value = "Post-congres - Congressiste (65 euros)";
if(document.getElementById('R8').checked === true) document.getElementById('C4').value = "Post-congres - Non Congressiste membre CNO (65 euros)";
if(document.getElementById('R9').checked === true) document.getElementById('C4').value = "Post-congres - Non Congressiste non membre CNO (85 euros)";
if(document.getElementById('R17').checked === true) document.getElementById('C4').value = "Invité au Post-Congrès";
if(document.getElementById('R20').checked === true) document.getElementById('C4').value = "Etudiant invité au Post-Congrès";
if(document.getElementById('R12').checked === true) document.getElementById('C5').value = "Ne participe pas au Gala";
if(document.getElementById('R10').checked === true) document.getElementById('C5').value = "Participe seul au Gala (100 euros)";
if(document.getElementById('R11').checked === true) document.getElementById('C5').value = "Participe accompagné au Gala (200 euros)";
if(document.getElementById('R14').checked === true) document.getElementById('C5').value = "Invité au Gala";

if(document.formulaire.nom.value == "") {
  alert("Veuillez entrer votre Nom svp");
  document.formulaire.nom.focus();
  return false;
}
  else
    
if(document.formulaire.prenom.value == "") {
  alert("Veuillez entrer votre Prénom svp");
  document.formulaire.nom.focus();
  return false;
}
  else
    

if(document.formulaire.adresse.value == "") {
  alert("Veuillez entrer votre Adresse svp");
  document.formulaire.nom.focus();
  return false;
}
  else


if(document.formulaire.codepostal.value == "") {
  alert("Veuillez entrer votre Code Postal svp");
  document.formulaire.nom.focus();
  return false;
}
  else


if(document.formulaire.ville.value == "") {
  alert("Veuillez entrer votre Ville svp");
  document.formulaire.nom.focus();
  return false;
}
  else



if(document.formulaire.telephone.value == "") {
  alert("Veuillez entrer votre Telephone svp");
  document.formulaire.nom.focus();
  return false;
}
  else



if(document.formulaire.mail.value == "") {
  alert("Veuillez entrer votre E-mail svp");
  document.formulaire.nom.focus();
  return false;
}
  else
  

if(document.formulaire.mail2.value == "") {
  alert("Veuillez confirmer votre E-mail svp");
  document.formulaire.nom.focus();
  return false;
}
  else
  
  
  if(document.formulaire.mail2.value != document.formulaire.mail.value) {
  alert("Vos adreses e-mail sont différentes !");
  document.formulaire.nom.focus();
  return false;
}
  else
  



if(document.formulaire.sectionlocale.value == "") {
  alert("Veuillez entrer votre section locale svp");
  document.formulaire.nom.focus();
  return false;
}
  else


if(document.formulaire.C1.value == "") {
  alert("Veuillez répondre à toutes les questions et recalculer le total svp");
  document.formulaire.nom.focus();
  document.getElementById('resultat').value = "";
  return false;
}
  else

if(document.formulaire.C2.value == "") {
  alert("Veuillez répondre à toutes les questions et recalculer le total svp");
  document.formulaire.nom.focus();
  document.getElementById('resultat').value = "";
  return false;
}
  else


if(document.formulaire.C4.value == "") {
  alert("Veuillez répondre à toutes les questions et recalculer le total svp");
  document.formulaire.nom.focus();
  document.getElementById('resultat').value = "";
  return false;
}
  else
  
if(document.formulaire.C5.value == "") {
  alert("Veuillez répondre à toutes les questions et recalculer le total svp");
  document.formulaire.nom.focus();
  document.getElementById('resultat').value = "";
  return false;
}
  else

  
return true;    
}



//-->
</script>



<script language="JavaScript">
function CalculCalcul()
{

zeTotal = 0;
if(document.getElementById('R1').checked === true) zeTotal = zeTotal + eval(document.getElementById('R1').value);
if(document.getElementById('R2').checked === true) zeTotal = zeTotal + eval(document.getElementById('R2').value);
if(document.getElementById('R3').checked === true) zeTotal = zeTotal + eval(document.getElementById('R3').value);
if(document.getElementById('R4').checked === true) zeTotal = zeTotal + eval(document.getElementById('R4').value);
if(document.getElementById('R5').checked === true) zeTotal = zeTotal + eval(document.getElementById('R5').value);
if(document.getElementById('R6').checked === true) zeTotal = zeTotal + eval(document.getElementById('R6').value);
if(document.getElementById('R7').checked === true) zeTotal = zeTotal + eval(document.getElementById('R7').value);
if(document.getElementById('R8').checked === true) zeTotal = zeTotal + eval(document.getElementById('R8').value);
if(document.getElementById('R9').checked === true) zeTotal = zeTotal + eval(document.getElementById('R9').value);
if(document.getElementById('R10').checked === true) zeTotal = zeTotal + eval(document.getElementById('R10').value);
if(document.getElementById('R11').checked === true) zeTotal = zeTotal + eval(document.getElementById('R11').value);

//alert (zeTotal);

document.formulaire.resultat.value = zeTotal;

}

</script>






</head>





<body bgcolor="#125495">

  

  
  
<div style="background-color: white; border: #FAD348 3px solid;">
<p />
<form method="post" action="traitement_inscript.php" name="formulaire" onSubmit="return verification();">

<input type="hidden" name="C1" id="C1" value="">
<input type="hidden" name="C2" id="C2" value="">
<input type="hidden" name="C4" id="C4" value="">
<input type="hidden" name="C5" id="C5" value="">


<fieldset>
       <legend>INCRIPTION EN LIGNE AU CONGRES :</legend>
      
       <small>MERCI DE REMPLIR TOUS LES CHAMPS.LES DEMANDES INCOMPLETES NE SERONT PAS PRISES EN COMPTE. </small>
        

<table>


<tr><td> <label>Nom :</label></td><td><input type="text" name="nom" size="30" /></td></tr>
<tr><td> <label>Prénom :</label></td><td><input type="text" name="prenom" size="30" /><td></tr>
<tr><td> <label>Adresse :</label></td><td><input type="text" name="adresse" size="30" /></td></tr>
<tr><td> <label>Code Postal :</label></td><td><input type="text" name="codepostal" size="30" /></td></tr>
<tr><td> <label>Ville :</label></td><td><input type="text" name="ville" size="30" /></td></tr>
<tr><td> <label>Telephone :</label></td><td><input type="text" name="telephone" size="30" /></td></tr>
<tr><td> <label>Fax :</label></td><td><input type="text" name="fax" size="30" />(facultatif)</td></tr>
<tr><td> <label>E-mail :</label></td><td><input type="text" name="mail" size="30" /></td></tr>
<tr><td> <label>E-mail (confirmation) :</label></td><td><input type="text" name="mail2" size="30" /></td></tr>
<tr><td> <label>Section Locale :</label></td>
<td> <select name="sectionlocale">
               <option value="Pays Etranger">Pays Etranger</option>
               <option value="Aix-Marseille-Provence">Aix-Marseille-Provence</option>
               <option value="Alsace">Alsace</option>
               <option value="Aquitaine">Aquitaine</option>
               <option value="Auvergne">Auvergne</option>
               <option value="Bretagne-Occidentale">Bretagne Occidentale</option>
               <option value="Centre">Centre</option>
               <option value="Cote-Azur">Cote d'Azur</option>
               <option value="Haute et basse Bretagne">Haute et basse Bretagne</option>
               <option value="Languedoc-Roussillon">Languedoc-Roussillon</option>
               <option value="Lorraine">Lorraine</option>
               <option value="Lyon-Rhône-Alpes">Lyon-Rhône-Alpes</option>
               <option value="Midi-Pyrenees">Midi-Pyrénées</option>
               <option value="Nantes et Pays-de-Loire">Nantes et Pays de Loire</option>
               <option value="Nord">Nord</option>
               <option value="Paris-Ile-de France">Paris-Ile-de France</option>
               <option value="Reims-Champagne-Ardennes">Reims-Champagne-Ardennes</option>
               <option value="Outre-mer">Outre-mer</option>
              
           </select></td></tr>


</table>
<hr />


<p><b>Cotisation (obligatoire) CD-ROM inclus </b></p>
    
<p> <label for="R1">Cotisation CNO 2007 : 130 euros</label> <input type="radio" name="cotisation" value="130" id="R1">  </p>
        



<p> <label for="R2">Cotisation CNO 2007 réduite (retraité/interne) : 65 euros </label><input type="radio" name="cotisation" value="65" id="R2"></p>    

<p> <label for="R16">Dispensé de Cotisation </label><input type="radio" name="cotisation" value="" id="R16"></p>  

<p> <label for="R18">Etudiant formation initiale invité </label><input type="radio" name="cotisation" value="0" id="R18"></p>
<hr />

<!--
<p><b>Tarifs réduits sans CD-ROM (déjeuners compris) : </b> </p>

<p> <label for="R5">Etudiant 3e cycle sans activité libérale, sans FIF-PL : 150 euros</label><input type="radio" name="tarifreduit" value="150" id="R5">  </p>


<p><label for="R6">Interne des CHU à jour de sa cotisation : 65 euros</label> <input type="radio" name="tarifreduit" value="65" id="R6"></p>    
  

  
  <hr />
  
  -->

<p><b>Inscription XXIVemes Journées du CNO (déjeuners compris) : </b> </p>

<p> <label for="R3">Inscription avant le 20/02/07 : 300 euros </label><input type="radio" name="dateinscription" value="300" id="R3">  </p>


<p> <label for="R4">Inscription après le 20/02/07 : 345 euros</label><input type="radio" name="dateinscription" value="345" id="R4"></p>    

<p> <label for="R5">Etudiant 3e cycle sans activité libérale, sans FIF-PL : 150 euros (Sans CD-Rom)</label><input type="radio" name="dateinscription" value="150" id="R5">  </p>


<p><label for="R6">Interne des CHU à jour de sa cotisation : 65 euros (Sans CD-rom)</label> <input type="radio" name="dateinscription" value="65" id="R6"></p>

<p><label for="R15">Invité au Congrès</label> <input type="radio" name="dateinscription" value="" id="R15"></p>

<p><label for="R19">Etudiant formation initiale invité au Congrès</label> <input type="radio" name="dateinscription" value="0" id="R19"></p>




  <hr />







<p><b>Inscription au cours post-congrès (J.P. Okeson - samedi 17 mars) : </b> </p>

<p><label for="R13">Ne participe pas au cours Post-Congrès </label> <input type="radio" name="postcongres" value="" id="R13"> </p>

<p><label for="R7">Congressiste : 65 euros </label> <input type="radio" name="postcongres" value="65" id="R7"> </p>


<p> <label for="R8">Non congressiste membre du CNO : 65 euros</label><input type="radio" name="postcongres" value="65" id="R8"></p>
  
  
<p><label for="R9">Non congressiste non membre du CNO : 85 euros</label> <input type="radio" name="postcongres" value="85" id="R9"></p>

<p><label for="R17">Invité au cours Post-Congrès</label> <input type="radio" name="postcongres" value="0" id="R17"></p>    
<!--
<p><label for="R20">Etudiant invité au cours Post-Congrès</label> <input type="radio" name="postcongres" value="" id="R20"></p>
-->


  <hr />




<p><b>Soirée de Gala - Jeudi 15 mars (A bord du Marseillois) :</b> </p>

  <p><label for="R12">Ne participe pas au Gala</label> <input type="radio" name="gala" value="" id="R12"></p>    


<p><label for="R10">Participe seul au Gala : 100 euros </label> <input type="radio" name="gala" value="100" id="R10"> </p>


<p> <label for="R11">Participe accompagné au Gala : 200 euros</label><input type="radio" name="gala" value="200" id="R11"></p>

<p> <label for="R14">Invité au Gala</label><input type="radio" name="gala" value="0" id="R14"></p>
  
  





  <hr />
  
  
  <p><label for="resultat" /><input type="text" name="resultat" size="5" id="resultat" > <label>euros</label>
  
   <input type="button" value="Calculer total" onClick="CalculCalcul()"> </p>


<p /><p /><p /><p />
  
  

<p> <input type="submit" name="Envoyer"  /> <input type="reset" name="Effacer" /></p>

    
</fieldset>
</form>  
</div>
</body>
</html>




  De :       xxxxxxx
    Objet :     INSCRIPTION CONGRES 2007
    Date :     19 février 2007 17:03:53 HNEC
    À :       xxxxxxxxxx
    Répondre à :       xxxxxxxxx



Nom:     xxxxxx

Prénom:     xxxxx

Adresse:     xxxxx

Code Postal:     xxxx

Ville:     xxxxxxx

Tel:     xxxx

Fax:     xxxx

E-Mail:     xxxx

Section Locale:     Auvergne

Cotisation:     Cotisation CNO 2007 classique (130 euros)

Date d'inscription:     Inscription avant le 20/02/07 (300 euros)

Cours post-congrès:     

Gala:     

TOTAL (euros):     430

Concernant le paiement : Après vérification de votre pré-inscription, un nouvel e-mail contenant toutes les informations nécessaires au réglement vous sera envoyé.Vous aurez le choix entre un paiement, en espèces sur place,par chèque ou par virement bancaire (frais de virement à votre charge).
un bon exemple vaut souvent mieux que de LLLLLOOOOOOOOOOOONNNNNNNGGGGGGUUUUUUUUEEEEEEEESSSSSSSSSS explications Smiley langue
As tu une page de test en ligne pour faire voir et à la limite le code de traitement_inscript.php
Peut être obtiendras tu plus de réponses ainsi
Atomic Lutin a écrit :
C'est si grave que ca ?

Euhm ... Smiley rolleyes
Je crois que ce que l'on veut te faire comprendre, c'est simplement que la longueur de ton code est tout bonnement indigeste Smiley langue
M'est avis que la proposition de gaelgerard est à suivre ... Smiley cligne
Bonjour,

Question à cent balles : as-tu essayé d'envoyer ton formulaire vide en désactivant javascript ?

Dans ce cas, tu aurais dû t'apercevoir que ça marche plutôt bien... Et recevoir un mail vide.
Oui j'eai essayé, je sais bien que les pseudo vérifications mises en place ne sont valables que si le JS est activé sur le navigateur.


Je ne sais pas faire de script vérifiant si le JS est activé ...cela dépasse mes compétences, bien faibles dans le domaine hélas.


Je suis justement ici pour demander un peu d'aide, et progresser par la même occasion Smiley smile
Atomic Lutin a écrit :

Je ne sais pas faire de script vérifiant si le JS est activé ...cela dépasse mes compétences, bien faibles dans le domaine hélas.


Ca n'est pas la solution non plus.

La seule solution valable est de faire les tests côté serveur, en php donc et de ramener sur la page du formulaire avec le message qui va bien en cas d'erreur, ou mieux les champs de formulaires invalides mis en évidence.

Tu peux même laisser le script en javascript si tu veux, il ne pose pas de problèmes s'il est doublé par un script serveur : si les données sont validées par le script PHP, elles devraient l'être par PHP et inversement.
Modifié par Lanza (22 Feb 2007 - 21:28)
Autres petites remarques :
a écrit :
Cotisation (obligatoire) CD-ROM inclus


On a l'impression que c'est la cotisation qui est obligatoire et pas le champ, qui indique pourtant un choix "dispensé de cotisation".

Tu pourrais également préselectionner certains choix (les plus courants par exemple), ce qui éviterait au gens qui ne savent pas de ne pas remplir.

a écrit :
Votre pré-inscription à bien été prise en compte,[...]

Y'a pas d'accents sur le "a". Smiley lol
Modifié par Lanza (22 Feb 2007 - 21:40)
Pour finir, si le total est bon, le problème doit venir du script php, dont tu ne donnes pas la source.
Et voilà Smiley lol

<?php
//Pour définir chaque input du formulaire, ajouter le signe de dollar devant
 
$msg = "Nom: \t$nom\n";
$msg .= "\n";
$msg .= "Prénom: \t$prenom\n";
$msg .= "\n";
$msg .= "Adresse: \t$adresse\n";
$msg .= "\n";
$msg .= "Code Postal: \t$codepostal\n";
$msg .= "\n";
$msg .= "Ville: \t$ville\n";
$msg .= "\n";
$msg .= "Tel: \t$telephone\n";
$msg .= "\n";
$msg .= "Fax: \t$fax\n";
$msg .= "\n";
$msg .= "E-Mail: \t$mail\n";
$msg .= "\n";
$msg .= "Section Locale: \t$sectionlocale\n";
$msg .= "\n";
$msg .= "Cotisation: \t$C1\n";
$msg .= "\n";
$msg .= "Date d'inscription: \t$C2\n";
$msg .= "\n";
$msg .= "Cours post-congrès: \t$C4\n";
$msg .= "\n";
$msg .= "Gala: \t$C5\n";
$msg .= "\n";
$msg .= "TOTAL (euros): \t$resultat\n";
$msg .= "\n";
$msg .= "Concernant le paiement : Après vérification de votre pré-inscription, un nouvel e-mail contenant toutes les informations nécessaires au réglement vous sera envoyé.Vous aurez le choix entre un paiement, en espèces sur place,par chèque ou par virement bancaire (frais de virement à votre charge).";
//Pourait continuer ainsi jusqu'à la fin du formulaire
 
$recipient = "crazy.lutin@free.fr";
$recipient2 = "$mail";
$subject = "INSCRIPTION CONGRES 2007";
 
$mailheaders = "From: $nom $prenom  \n";
$mailheaders .= "Reply-To: $mail\n\n";

$mailheaders2 = "From: Organisation CNO 2007  \n";
$mailheaders2 .= "Reply-To: crazy.lutin@free.fr\n\n";


mail($recipient, $subject, $msg, $mailheaders);

 
mail($recipient2, $subject, $msg, $mailheaders2); 



/* on définit la date et l'heure de l'entree */
$datedujour = date('d/m/y -- H:i:s');
/* on définit le nom et le lieu du fichier qui sera créé pour stocker les infos */
$filename="./inscriptions.txt";
/*on écrit dans le fichier les infos, séparées par une pipe (|) et on termine la ligne par un retour à la ligne */
$fl=fopen($filename,"a+");
fwrite($fl,"$datedujour;$nom;$prenom;$adresse;$codepostal;$ville;$telephone;$fax;$mail;$sectionlocale;$C1;$C2;$C4;$C5;$resultat\n");
/* on ferme le fichier */
fclose($fl);






echo "<HTML><HEAD>";
echo "<TITLE>Inscription au Congrès 2007</TITLE></HEAD><BODY>";
echo "<H1 align=center>Merci pour votre Pré-inscription  </H1>";
echo "<P>";
echo "Votre pré-inscription à bien été prise en compte, vous recevrez très prochainement un e-mail récapitulatif de vos choix à l'adresse : $mail </P>";

echo "<P>Concernant le paiement : Vous avez le choix entre un paiement par chèque ou un virement bancaire (frais de virement à votre charge).</P>";

echo "<P>_______________________________________</P>";

echo "<P>Récapitulatif :</P>";

echo "<P>_______________________________________</P>";

echo "<P>Nom: \t$nom\n</P>";
echo "\n";
echo "<P>Prénom: \t$prenom\n</P>";
echo "\n";
echo "<P>Adresse: \t$adresse\n</P>";
echo "\n";
echo "<P>Code Postal: \t$codepostal\n</P>";
echo "\n";
echo "<P>Ville: \t$ville\n</P>";
echo "\n";
echo "<P>Tel: \t$telephone\n</P>";
echo "\n";
echo "<P>Fax: \t$fax\n</P>";
echo "\n";
echo "<P>E-Mail: \t$mail\n</P>";
echo "\n";
echo "<P>Section Locale: \t$sectionlocale\n</P>";
echo "\n";
echo "<P>Cotisation: \t$C1\n</P>";
echo "\n";
echo "<P>Date d'inscription: \t$C2\n</P>";
echo "\n";
echo "<P>Cours post-congrès: \t$C4\n</P>";
echo "\n";
echo "<P>Gala: \t$C5\n</P>";
echo "\n";

echo "<P>TOTAL (euros): \t$resultat\n</P>";

echo "<P>_______________________________________</P>";



echo "<small>(Vous pouvez fermer cette fenêtre)</small>";
echo "</BODY></HTML>";

 
?>
Lanza a écrit :
Autres petites remarques :
Cotisation (obligatoire) CD-ROM inclus


On a l'impression que c'est la cotisation qui est obligatoire et pas le champ, qui indique pourtant un choix "dispensé de cotisation".

C'est la cotisation qui est obligatoire, sauf pour les conférenciers eux mêmes.
Un peu obscur mais ceux qui sont dispensés le savent.
Ceux qui trichent sont repris à la volée lol.

Tu pourrais également préselectionner certains choix (les plus courants par exemple), ce qui éviterait au gens qui ne savent pas de ne pas remplir.

Délicat, ya pas de choix courant justement, sinon j'aurais fait ca.

a écrit :
Votre pré-inscription à bien été prise en compte,[...]

Y'a pas d'accents sur le "a". Smiley lol


Très juste, erreur d'inattention, merci.
Quand même, je piges pas. Tu te compliques la vie pour rien. Les variables C1 à C5 pourraient tout à fait être crées directement dans le PHP, et ce serait même plus simple. Là tu t'enququines à retrouver un élément dans le DOM et à lui assigner une valeur pour le seul plaisir d'écrire une phrase en PHP. Smiley biggol

Tu augmentes inutilement la complexité du bidule, et du coup non seulement tu perds en fiabilité, mais en plus tu augmentes les risques de faire une erreur. Le seul truc qui ai un intérêt en javascript ici, c'est le calcul du total (pourvu qu'il soit doublé en PHP).

Sinon à vue de nez comme ça je ne vois pas d'erreurs qui crèvent les yeux. Mais en simplifiant tout ça, y'a vraiment moyen que ça marche mieux.
Je te crois volontiers, le seul hic c'est que je ne sais pas faire autrement.
Cette page formulaire, je l'ai faite en combinant plusieurs morceaux de tuto que pu trouver, en essayant de comprendre les mécanismes.


Je ne sais pas partir de rien pour monter çà, le vrai problème est là; il me faut un support de base et je n'ai trouvé que çà.
Bonsoir
tu devrais déjà supprimer tous les "else" complètement inutiles et qui alourdissent la lecture