Afficher le montant de façon automatique

Fermé
fedely0899 Messages postés 10 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 11 décembre 2018 - 10 déc. 2018 à 22:08
fedely0899 Messages postés 10 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 11 décembre 2018 - 11 déc. 2018 à 14:45
Bonsoir à Tous,

Veuillez m'excuser pour la mauvaise expression de mon besoin.
En fait, ce que je souhaite faire, c'est enregistré des informations via un formulaire. Dans ce formulaire, il y a un champ ''HOTEL''' un champ '''FORMULE''' un champ ''''NUITEE''' et enfin un champ """"MONTANT''''''. Ce que je souhaite faire c'est que lorsque l'agent rempli le champ '''Hotel''' et le champ """FORMULE""" et le champ nuitee, le """MONTANT''' s'affiche automatiquement dans le champ ''''MONTANT''''' affilié à l'hotel correspondant à la formule (SINGLE ou COUPLE) pour 1, 2 ou 3 nuitée.

FORMULE = SINGLE ou COUPLE (Nous sommes dans le cas d'un hotel)

NUITEE = 1 nuit / 2 nuits / 3 nuits

MONTANT = Montant 1e nuitee/ Montant 2 nuitee / Montant 3 nuitee

J'espère avoir été explicite

Merci d'avance

4 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
10 déc. 2018 à 22:14
Tes données sont dans quels types de champs ? Select ? Input ?
Que vaut une nuit en formule Single ? en formule Double ?
Est-ce le même prix en fonction de l'hotel ?
Sinon où trouves tu les "tarifs" à appliquer ?
Quelle formule souhaites tu écrire ?

Sais tu coder un minimum en javascript ?
Sais tu ce que sont les "event" ? Onchange ? OnClick ? OnKeyUp ?
https://www.w3schools.com/jsref/event_onchange.asp
https://developer.mozilla.org/fr/docs/Web/api/Document/getElementById
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/parseFloat
https://www.w3schools.com/jsref/prop_text_value.asp

Reviens nous voir lorsque tu auras pris connaissance de ces liens et essayé d'écrire un minimum de code.
A ce moment là, j'espère que tu seras capable de nous expliquer la formule à appliquer ainsi que de nous indiquer où trouver les "montants" à utiliser pour ce calcul.

Sans ça.... IMPOSSIBLE de t'aider !

(déjà 10 fois que je te le dis !! )


0
fedely0899 Messages postés 10 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 11 décembre 2018
Modifié le 10 déc. 2018 à 22:32
Merci Jordane 45

Ah si si je ccomprends mieux maintenant.
Je m'explique

Les montants des nuitee diffèrent par Hotel.

Exemple :

HOTEL PIERRE BERNARD

SINGLE 1e nuitée = 190400
SINGLE 2 nuitée = 200400
SINGLE 3 nuitée = 300400
COUPLE 1e nuitée = 341400
COUPLE 2 nuitée = 441400
COUPLE 3 nuitée = 541400

HOTEL LA COLINE

SINGLE 1e nuitée = 150000
SINGLE 2 nuitée = 189200
SINGLE 3 nuitée = 224000
COUPLE 1e nuitée = 278000
COUPLE 2 nuitée = 318400
COUPLE 3 nuitée = 441400

Mes champs sont présentement en SELECT pour le choix de la FORMULE et dunombre de nuitee et en INPUT pour le montant.
Concernant le javascript je m'y connais un peu. Néanmoins je jette un coup d’œil écrire un code.
0
fedely0899 Messages postés 10 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 11 décembre 2018
11 déc. 2018 à 11:34
Bonjour,

Merci pour tes réponses jusque là. Je viens de trouver quelque chose.

J'ai créé 2 tables à savoir table FORMULE (id, libelle) et la table NUITEE(id, nbre, montant, idform).
J'ai utilisé du jquery de table liée de sorte que lorsque je choisi la formule, dans le champ nuitee le nombre de nuitee disponibles pour cette formule y soit automatiquement ainsi que le montant.

Là j'arrive à choisir la formule mais ça ne fonctionne pas.

Voici mon code:

Pour afficher les infos automatiquement :
<script type='text/javascript'>
 
			function getXhr(){
                                var xhr = null; 
				if(window.XMLHttpRequest) // Firefox et autres
				   xhr = new XMLHttpRequest(); 
				else if(window.ActiveXObject){ // Internet Explorer 
				   try {
			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
			            } catch (e) {
			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
			            }
				}
				else { // XMLHttpRequest non supporté par le navigateur 
				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
				   xhr = false; 
				} 
                                return xhr;
			}
 
			/**
			* Méthode qui sera appelée sur le click du bouton
			*/
			function go(){
				var xhr = getXhr();
				// On défini ce qu'on va faire quand on aura la réponse
				xhr.onreadystatechange = function(){
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					if(xhr.readyState == 4 && xhr.status == 200){
						leselect = xhr.responseText;
						// On se sert de innerHTML pour rajouter les options a la liste
						document.getElementById('nuitee').innerHTML = leselect;
					}
				}
 
				// Ici on va voir comment faire du post
				xhr.open("POST","ajaxLivre.php",true);
				// ne pas oublier ça pour le post
				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				// ne pas oublier de poster les arguments
				// ici, l'id de l'auteur
				sel = document.getElementById('formule');
				idauteur = sel.options[sel.selectedIndex].value;
				xhr.send("idform="+idform);
			}
		</script>


Ma liste déroulante :

    <?php 
								//   $output = '';  
								//   $query = "SELECT * FROM formula WHERE id_user = '$pid'";  
							//	 $result = mysqli_query($conna, $query); 
								// 
									 		$res = "SELECT * FROM formula";
												$result = mysqli_query($conna, $res); 
					
				
         if(mysqli_num_rows($result) > 0)  {
								
	
								
								
								
								?>
								<strong class="text-muted d-block mb-2">FORMULE</strong>
								<div class="form-row">
                  
                              <div class="form-group col-md-12">
                                <select id='formule' class="form-control"  name="nafor"  onchange='go()'>
                                  <option selected   value='-1'>Choisir la formule</option>
								    <?php  while ($row = mysqli_fetch_array($result)){   
								
									
										?>
                                  <option  value = "<?php   
									   // echo $row["type"] ; echo "|";   echo $row["nuitee"] ; echo "|";  echo $row["montant"] ;
									   echo $row["id"];
										?>">
								  <?php 
								  //echo $row["type"] ; echo "|";   echo $row["nuitee"] ; echo "|";  echo $row["montant"] ;
								  echo $row["libelle"];
					}
								 } 
	?>
	  </option>
                                </select>
                              </div>
                            </div> 
								<div class="form-row">
							<div id='nuitee' style='display:inline'>
				<select name='livre'>
					<option value='-1'>Choisir nuitee</option>
				</select>
				</div>     </div> 



Et enfin mon code pour afficher les nuitees dans le 2 ème menu déroulant

<?php
	echo "<select name='livre'>";
	if(isset($_POST["idform"])){
						$conn = new mysqli('localhost', 'ee', 'eee', 'eee');
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
		$res = mysqli_query("SELECT id,montant FROM formul 
			WHERE idform=".$_POST["idform"]."");
		while($row = mysqli_fetch_assoc($res)){
			echo "<option value='".$row["id"]."'>".$row["montant"]."</option>";
		}
	}
	echo "</select>";
?>


Merci d'avance pour l'aide
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
11 déc. 2018 à 12:00
Tu dis avoir utilisé jquery pour tes listes imbriquées... mais tu as conservé du xmlhttprequest en "pur" javascript...
Si tu utilises Jquery, utilises donc l' Ajax.
https://www.w3schools.com/jquery/ajax_ajax.asp

Ensuite, lorsque tu nous dis que ça ne fonctionne pas ... c'est à dire ??
Tu as un message d'erreur ? As tu regardé dans la CONSOLE de ton navigateur ?
NB: Si tu utilises Chrome, pense à installer le plugin : https://chrome.google.com/webstore/detail/ajax-debugger/lgfefckpdealogpcfjdhinecfbcgedam


0
fedely0899 Messages postés 10 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 11 décembre 2018
11 déc. 2018 à 14:45
Je viens de trouver un bon tuto dessus sur ce que je recherche.
Là ça fonctionne avec JSON.

voici mon ficher
[
{
"id":"1",
"name":"SINGLE",
"parent_id":"0"
},
{
"id":"2",
"name":"COUPLE",
"parent_id":"0"
},

{
"id":"4",
"name":"1 nuitee",
"parent_id":"1"
},
{
"id":"5",
"name":"2 nuitees",
"parent_id":"1"
},
{
"id":"6",
"name":"3 nuitees",
"parent_id":"1"
},
{
"id":"7",
"name":"1 nuitee",
"parent_id":"2"
},
{
"id":"8",
"name":"2 nuitees",
"parent_id":"2"
},
{
"id":"9",
"name":"3 nuitees",
"parent_id":"2"
},
{
"id":"10",
"name":"194400",
"parent_id":"4"
},
{
"id":"11",
"name":"249400",
"parent_id":"5"
},

]


et ensuite :
 <script>
$(document).ready(function(){

 load_json_data('country');

 function load_json_data(id, parent_id)
 {
  var html_code = '';
  $.getJSON('country_state_city.json', function(data){

   html_code += '<option value="">Select '+id+'</option>';
   $.each(data, function(key, value){
    if(id == 'country')
    {
     if(value.parent_id == '0')
     {
      html_code += '<option value="'+value.id+'">'+value.name+'</option>';
     }
    }
    else
    {
     if(value.parent_id == parent_id)
     {
      html_code += '<option value="'+value.id+'">'+value.name+'</option>';
     }
    }
   });
   $('#'+id).html(html_code);
  });

 }

 $(document).on('change', '#country', function(){
  var country_id = $(this).val();
  if(country_id != '')
  {
   load_json_data('state', country_id);
  }
  else
  {
   $('#state').html('<option value="">Select state</option>');
   $('#city').html('<option value="">Select city</option>');
  }
 });
 $(document).on('change', '#state', function(){
  var state_id = $(this).val();
  if(state_id != '')
  {
   load_json_data('city', state_id);
  }
  else
  {
   $('#city').html('<option value="">Select city</option>');
  }
 });
});
</script> 



<div class="form-group col-md-12">
                                <select  class="form-control"   id="country"  name="nafor"  onchange='go()'>
                                  <option selected   value="">Choisir la formule</option>
								   
                
                                </select>
                              </div>
                            </div> 
							  <br />
							  <strong class="text-muted d-block mb-2">NOMBRE NUITEE</strong>
								<div class="form-row">
                  
                              <div class="form-group col-md-12">
                                <select  class="form-control"   id="state"  name="nafor"  onchange='go()'>
                                  <option selected   value="">Choisir le nombre</option>
								   
                
                                </select>
                              </div>
                            </div> <br />
							  <strong class="text-muted d-block mb-2">MONTANT</strong>
								<div class="form-row">
                  
                              <div class="form-group col-md-12">
                                <select  class="form-control"    id="city" name="nafor"  onchange='go()'>
                                  <option selected   value="">Choisir le nombre</option>
								   
                
                                </select>
                              </div>
                            </div> <br />

Tout fonctionne bien je souhaite juste le rendre dynamique de sorte à ce qu'il échange avec ma BDD aussi que le montant s'affiche dans un INPUT au lieu de SELECT.

Merci pour l'aide
0