Calcul auto montant d'un séjour selon dates choisies

Calcul auto montant d'un séjour selon dates choisies - HTML/CSS - Programmation

Marsh Posté le 15-11-2009 à 15:57:53    

Bonjour à tous,
 
Après avoir passé plusieurs heures sur l'ami Google, je n'ai toujours pas trouvé solution à mon problème, c'est pourquoi je me permet de faire appel à vous.
 
J'ai actuellement un formulaire pour les Internautes souhaitant effectuer une demande de réservation de leur séjour en ligne... et je souhaite que lorsqu'ils remplissent le formulaire, apparaît (dans un textarea par exemple) le total de leur séjour en fonction de la date d'arrivée et la date de départ qu'ils vont entrer dans le formulaire.
La difficulté principale c'est qu'il y a 2 tarifs différents... 22e/j en semaine, et 50e/we (du ve au di) ! Le tout doit ce multiplier par le nombre de personne, bien sur...
 
Par exemple, un Internaute qui souhaite réserver pour 2 personnes du 13.11 au 17.11 :
- dans "date d'arrrivée" : 13.11
- dans "date de départ" : 17.11
- pour "2 personnes"
- we du 13.11 au 15.11 = 50e + lu 16.11 = 22e + ma 17.11 = 22e, soit 50 + 22 + 22 = 94e / personne, donc 188 euros
 
Je ne maîtrise que quelques bases du html et du javascript...
 
Si quelqu'un à une piste, ou un début de piste, je l'en remercie d'avance !!
 
Cdt, Guillaume

Reply

Marsh Posté le 15-11-2009 à 15:57:53   

Reply

Marsh Posté le 15-11-2009 à 19:44:56    

voici en pseudo code comment je structurerais mon raisonnement à ta place :
 

Code :
  1. fonction prixJour(date)
  2. {
  3.     typeJour = getDay(date)
  4.     // le type de jour commence à 0 (dimanche) => 6 (samedi)
  5.     si ((typeJour == 0) || (typeJour == 6))
  6.         renvoie 50;
  7.     sinon
  8.         renvoie 22;
  9. }
  10. si jourDépart < jourArrivee
  11. affiche erreur
  12. sinon
  13. pour chaque jour de jourArrivee à jourDépart
  14. prixJournee = prixJour(jourEnCours);
  15. somme += nombrePersonnes * prixJournee;



---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 15-11-2009 à 21:47:21    

NewsletTux a écrit :

voici en pseudo code comment je structurerais mon raisonnement à ta place :
 

Code :
  1. fonction prixJour(date)
  2. {
  3.     typeJour = getDay(date)
  4.     // le type de jour commence à 0 (dimanche) => 6 (samedi)
  5.     si ((typeJour == 0) || (typeJour == 6))
  6.         renvoie 50;
  7.     sinon
  8.         renvoie 22;
  9. }
  10. si jourDépart < jourArrivee
  11. affiche erreur
  12. sinon
  13. pour chaque jour de jourArrivee à jourDépart
  14. prixJournee = prixJour(jourEnCours);
  15. somme += nombrePersonnes * prixJournee;




 
 
En effet, ce serait un début de piste et t'en remercie... mais comment mettre ça concrètement dans un code html pour le mettre sur ma page ?
 
Voici le formulaire qui est actuellement en ligne :

Code :
  1. <html>
  2. <head>
  3.   <script>function checkrequired(which){
  4. var pass=true
  5. if (document.images){
  6. for (i=0;i<which.length;i++){
  7. var tempobj=which.elements[i]
  8. if (tempobj.name.substring(0,8)=="required" ){
  9. if (((tempobj.type=="text"||tempobj.type=="textarea" )&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
  10. pass=false
  11. break
  12. }
  13. }
  14. }
  15. }
  16. if (!pass){
  17. alert("Certains champs de ce formulaire sont obligatoires, merci de bien vouloir les renseigner" )
  18. return false
  19. }
  20. else
  21. return true
  22. }
  23.   </script>
  24. </head>
  25. <body>
  26. <form action="http://perso0.free.fr/cgi-bin/form2mail.pl"
  27. onsubmit="return checkrequired(this)" method="post"
  28. name="RESERVATION">
  29.   <table style="text-align: left; width: 556px;" border="1"
  30. cellpadding="2" cellspacing="2">
  31.     <tbody>
  32.       <tr>
  33.         <td style="font-family: Helvetica Neue; width: 100px;"><small>Nom*</small></td>
  34.         <td style="font-family: Helvetica Neue; width: 181px;"><small><input
  35. name="requiredNOM"></small></td>
  36.         <td style="font-family: Helvetica Neue; width: 62px;"><small>Pr&eacute;nom*</small></td>
  37.         <td style="font-family: Helvetica Neue; width: 179px;"><small><input
  38. name="requiredPRENOM"></small></td>
  39.       </tr>
  40.       <tr>
  41.         <td style="font-family: Helvetica Neue; width: 100px;"><small>Adresse*</small></td>
  42.         <td colspan="3" rowspan="1"
  43. style="font-family: Helvetica Neue; width: 179px;"><small><input
  44. size="50" name="requiredADRESSE"></small></td>
  45.       </tr>
  46.       <tr>
  47.         <td style="font-family: Helvetica Neue; width: 100px;"><small>Code
  48. postal*</small></td>
  49.         <td style="font-family: Helvetica Neue; width: 181px;"><small><input
  50. maxlength="5" size="10" name="requiredCODE_POSTAL"></small></td>
  51.         <td style="font-family: Helvetica Neue; width: 62px;"><small>Ville*</small></td>
  52.         <td style="font-family: Helvetica Neue; width: 179px;"><small><input
  53. name="requiredVILLE"></small></td>
  54.       </tr>
  55.       <tr>
  56.         <td style="font-family: Helvetica Neue; width: 100px;"><small>T&eacute;l&eacute;phone*</small></td>
  57.         <td style="font-family: Helvetica Neue; width: 181px;"><small><input
  58. name="requiredTELEPHONE"></small></td>
  59.         <td style="font-family: Helvetica Neue; width: 62px;"><small>Email*</small></td>
  60.         <td style="font-family: Helvetica Neue; width: 179px;"><small><input
  61. name="requiredEMAIL"></small></td>
  62.       </tr>
  63.     </tbody>
  64.   </table>
  65.   <br>
  66.   <table style="text-align: left; width: 511px;" border="1"
  67. cellpadding="2" cellspacing="2">
  68.     <tbody>
  69.       <tr>
  70.         <td style="width: 110px; font-family: Helvetica Neue;"><small>Date
  71. d'arriv&eacute;e*</small></td>
  72.         <td style="width: 150px; font-family: Helvetica Neue;"><small><input
  73. size="15" value="jj/mm/aaaa" name="ARR_DATE"></small></td>
  74.         <td style="width: 110px; font-family: Helvetica Neue;"><small>Heure
  75. d'arriv&eacute;e*</small></td>
  76.         <td style="width: 111px; font-family: Helvetica Neue;"><small>
  77.         <select name="ARR_HEURE">
  78.         <option selected="selected">Apr&egrave;s 17h00</option>
  79.         </select>
  80.         <br>
  81.         </small></td>
  82.       </tr>
  83.       <tr>
  84.         <td style="width: 110px; font-family: Helvetica Neue;"><small>Date
  85. de d&eacute;part*</small></td>
  86.         <td style="width: 150px; font-family: Helvetica Neue;"><small><input
  87. size="15" value="jj/mm/aaaa" name="DEP_DATE"></small></td>
  88.         <td style="width: 110px; font-family: Helvetica Neue;"><small>Heure
  89. de
  90. d&eacute;part*</small></td>
  91.         <td style="width: 111px; font-family: Helvetica Neue;"><small>
  92.         <select name="DEP_HEURE">
  93.         <option selected="selected">Avant 15h00</option>
  94.         </select>
  95.         <br>
  96.         </small></td>
  97.       </tr>
  98.     </tbody>
  99.   </table>
  100.   <br>
  101.   <table style="text-align: left; width: 314px;" border="1"
  102. cellpadding="2" cellspacing="2">
  103.     <tbody>
  104.       <tr>
  105.         <td style="width: 80px; font-family: Helvetica Neue;"><small>Adultes*</small></td>
  106.         <td style="width: 60px; font-family: Helvetica Neue;"><small>
  107.         <select name="ADULTES">
  108.         <option>1</option>
  109.         <option>2</option>
  110.         <option>3</option>
  111.         <option>4</option>
  112.         </select>
  113.         </small></td>
  114.         <td style="width: 80px; font-family: Helvetica Neue;"><small>Enfants*</small></td>
  115.         <td style="width: 60px; font-family: Helvetica Neue;"><small>
  116.         <select name="ENFANTS">
  117.         <option>0</option>
  118.         <option>1</option>
  119.         <option>2</option>
  120.         <option>3</option>
  121.         <option>4</option>
  122.         </select>
  123.         </small></td>
  124.       </tr>
  125.     </tbody>
  126.   </table>
  127.   <small><span style="font-family: Helvetica Neue;"></span></small><br>
  128.   <table style="text-align: left; width: 450px;" border="1"
  129. cellpadding="2" cellspacing="2">
  130.     <tbody>
  131.       <tr>
  132.         <td style="width: 113px; font-family: Helvetica Neue;"><small>Petits
  133. d&eacute;jeuners</small></td>
  134.         <td style="width: 48px; font-family: Helvetica Neue;"><small>
  135.         <select name="PETITS DEJEUNERS">
  136.         <option selected="selected">0</option>
  137.         </select>
  138.         <br>
  139.         </small></td>
  140.         <td style="width: 76px; font-family: Helvetica Neue;"><small>D&eacute;jeuners</small></td>
  141.         <td style="width: 48px; font-family: Helvetica Neue;"><small>
  142.         <select name="DEJEUNERS">
  143.         <option selected="selected">0</option>
  144.         </select>
  145.         <br>
  146.         </small></td>
  147.         <td style="width: 60px; font-family: Helvetica Neue;"><small>D&icirc;ners</small></td>
  148.         <td style="width: 55px; font-family: Helvetica Neue;"><small>
  149.         <select name="DINERS">
  150.         <option selected="selected">0</option>
  151.         </select>
  152.         <br>
  153.         </small></td>
  154.       </tr>
  155.     </tbody>
  156.   </table>
  157.   <small><span style="font-family: Helvetica Neue;">Belle
  158. cuisine &eacute;quip&eacute;e et nombreuses
  159. possibilit&eacute;s de restauration aux alentours.</span></small><br>
  160.   <br>
  161.   <input name="OK" value="Valider" type="submit"><br>
  162. </form>
  163. </body>
  164. </html>


Reply

Marsh Posté le 16-11-2009 à 00:22:16    

Pour avoir une idée un peu plus précise, j'ai fais une rapide esquisse sous Excel :
> http://st0ckw3b.free.fr/expl/expl.xls
 
L'utilisateur n'a qu'à remplir la date d'arrivée, la date de départ et le nombre de personne... sous Excel pas de soucis, mais pour transposer ça en html ?!
 
J'attends vos réponses avec impatience !   :))

Reply

Marsh Posté le 16-11-2009 à 09:14:26    

Salut,
 
Maintenant que le principe d'une fonction en javascript est acquis...
 
Quand souhaites-tu voir le textarea se remplir avec le montant du séjour ? Lorsque l'utilisateur saisit les dates, ou bien lorsqu'il clique sur un bouton ?
 
En répondant à cette question, tu pourras déterminer les événements (au sens javascript) sur lesquels tu appelleras la dite fonction.

Reply

Marsh Posté le 16-11-2009 à 09:43:51    

Fred999 a écrit :

Salut,
 
Maintenant que le principe d'une fonction en javascript est acquis...
 
Quand souhaites-tu voir le textarea se remplir avec le montant du séjour ? Lorsque l'utilisateur saisit les dates, ou bien lorsqu'il clique sur un bouton ?
 
En répondant à cette question, tu pourras déterminer les événements (au sens javascript) sur lesquels tu appelleras la dite fonction.


 
Bonjour Fred999,
 
Idéalement, je souhaite avoir un aperçu concret du code html que je dois mettre dans ma page... car comme dit plus haut, je n'ai que quelques bases de le Javascript et le html et ne saurais construire de moi-même une telle page.  
 
Pour répondre à ta première question, ce serait vraiment super que le textarea ce remplisse et ce mette à jour tout seul lorsque l'Internaute tape sa date d'arrivée, de départ et le nombre de personnes... si tu as une idée ?!
 
Merci également de te pencher sur mon problème !

Reply

Marsh Posté le 17-11-2009 à 08:57:37    

re-Bonjour à tous,
 
Pour simplifier un peu la chose, j'ai pensé à autre chose... si le tarif ne change pas (qu'on soit en semaine ou en weekend), et qu'on le fixe par exemple à 24 euros par jour, quelqu'un peut m'envoyer le code à insérer ?
 
Concrètement :
Date d'arrivée : arr
Date de départ : dep
Nombre d'adulte(s) : adu
Nombre d'enfants) : enf
 
Donc le calcul doit être le suivant :
dep - arr = dur (durée du séjour)
dur x 24 = mon (montant du séjour par personne)
mon x (adu + enf) = montant total du séjour
 
 
J'attends vos réponses avec grande impatience !   :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed