Partage
  • Partager sur Facebook
  • Partager sur Twitter

liste déroulantes liées AJAX

AJAX PHP MYSQL JSON

    12 décembre 2018 à 10:44:17

    Bonjour à Tous,

    J'espère que vous allez bien.

    Je développe une application depuis un certains moment et il y a un problème que je rencontre cependant. 

    Je souhaite faire 3listes déroulantes lieés les unes aux autres. 

    Lorsqu'on choisit  SINGLE dans la première liste (SINGLE - COUPLE), dans la 2nde liste on doit avoir les nuitées de (1 nuitee -2 nuitees -3nuitees ) et dans la troisieme liste MONTANT liée à la nuitée de la formule.

    voici mon code :

    HTML 

    <strong class="text-muted d-block mb-2">FORMULE</strong>
    								<div class="form-row">
                      
                                  <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="">Montant</option>
    								   
                    
                                    </select>
                                  </div>
                                </div> <br />

    javascript se trouvant dans la meme page que mon html

     <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="">Selectionner 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> 

    Et enfin mon JSON. 

    C'est lui et le javascript que je souhaite modifierpour le rendre dynamique (Communication avec la BDD) pour afficher par hotel 

    [
     {
      "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"
     }, 
     {
      "id":"11",
      "name":"304400",
      "parent_id":"6"
     }, 
     {
      "id":"12",
      "name":"341800",
      "parent_id":"7"
     }, 
     {
      "id":"13",
      "name":"404800",
      "parent_id":"8"
     }, 
     {
      "id":"14",
      "name":"467800",
      "parent_id":"9"
     }
    ]


    Quelqu'un pourrait m'indiquer la marche à suivre pour le faire communiquer avec ma base de données afin de faire ressortir les montant de nuitee par formule. 

    Mercid'avance


    • Partager sur Facebook
    • Partager sur Twitter
      12 décembre 2018 à 14:56:20

      salut,

      si tu veux ecrire ou aller chercher dans ta bdd des infos, tu dois aller voir dans le forum php et apprendre sql. C est pas tres dur, il faut juste suivre un tuto. SELECT * WHERE nuitees = 2 par exemple, ou INSERT INTO pour ecrire.

      -
      Edité par Arthur222 12 décembre 2018 à 15:14:09

      • Partager sur Facebook
      • Partager sur Twitter
        12 décembre 2018 à 16:52:46

        Bonsoir PaulLou,

        Si tu avais bien lu ce que j'ai écrit tu ne dirais pas tout ceci. ce que je cherche à faire c'est de transformer mon SCRIPT juste en haut de sorte qu'il puisse communiquer avec une page php qui lui donnera des informations via les requetes car actuellement il fonctionne avec un fichier .JSON. Pour les requetes je peux très bien me débrouiller.  Merci. Maintenant, as-tu quelque chose à me proposer ? 

        J'ai modifier mon SCRIPT j'ai maintenant ceci :

         <script>
        $(document).ready(function(){
        	var $formula =$('#formula');
        	var $formul =$('#formul');
        	
        	$formula.append('<option value="">Choisir formule</option>');
        	$.ajax({
        		url: 'formula.php',
        		data : 'go',
        		dataType : 'json',
        		
        		success: function(json) {
        			$.each(json, function(key, value)
        			{
        				$formula.append('<option value="'+index+'">'+value+'</option>');
        			});
        		} 
        		
        		
        	});
        	$(document).on('change','#formula' function() {
        		var val =$this.val();
        		if(val != ''){
        			$formul.empty();
        			$.ajax({
        				
        				url: 'formula.php',
        				type: 'GET',
        				data:'idform=' +val,
        				dataType : 'json',
        				success: function(json){
        					$.each(json, funtion(index, value){
        						$formul.append('<option value="'+index+'">'+value+'</option>');
        					})
        				}
        				
        			});
        		}
        	});
        	});
        
        </script> 

        et ma requete :

        <?php
        
        if(isset($_GET['go']) || isset($_GET['idform']))
        {
        	$json = array();
        	
        	if(isset($_GET['go'])){
        		$requete='SELECT id,libelle FROM formula WHERE libelle= ';
        	}
        	else if (isset($_GET['idform'])){
        		
        		$idform=($_GET['idform']);
        		$requete = 'SELECT id,nbre,montant FROM formul WHERE idform ='.$idform;
        	}
        	Try {
        		$bdd = new PDO ("mysql:host=localhost; dbname=aing; charset=ut8','eee, 'eeee',");
        		
        	}
        	catch(Exception $e){
        		
        		die('Erreur : '.$e->getMessage());
        	}
        	$resultat =$bdd->query($requete) or die (print_r($bdd->errorInfo()));
        	while($donnees=$resultat->fetch(PDO::FETCH_ASSOC)){
        		
        	$json[$donnees['id']][] = $donnees['libelle'];
        	}
        	echo json_encode($json);
        }
        ?>




        -
        Edité par FMITOfficiel 12 décembre 2018 à 16:55:50

        • Partager sur Facebook
        • Partager sur Twitter
          12 décembre 2018 à 18:08:56

          J ai effacé de mon edit ma reponse sur ajax, vu ta question ’afin de communiquer avec la bdd’, et comme c etait pas dur, j ai pensé que tu etais debutant. 

          • Partager sur Facebook
          • Partager sur Twitter
            12 décembre 2018 à 18:43:06

            Ok, t'inquiète pas bien grave. 

            Mais est-ce que tu vois une erreur ou une syntaxe non complète dans mon code ?

            • Partager sur Facebook
            • Partager sur Twitter
              12 décembre 2018 à 20:56:00

              non ca m’a l’air correct, il faut tester. Faut faire attention avec la securité en php, de memoire il y a ’prepare’ et ’execute’ pour verifier les requetes.
              • Partager sur Facebook
              • Partager sur Twitter
                12 décembre 2018 à 21:00:13

                En fait, ça ne fonctionne pas rien ne s'affiche quand je clique sur le  menu déroulant. J'ai l'impression que c'est une petite erreur avec mon SCRIPT mais je ne la retrouve pas. Là je suiis vraiment coincé pffffffff
                • Partager sur Facebook
                • Partager sur Twitter
                  12 décembre 2018 à 21:51:25

                  en mettant des morceaux de code entre commentaires et en regardant les erreurs dans la console, avec le numero de la ligne de l erreur a coté, tu vas trouver la ou ca bug.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  liste déroulantes liées AJAX

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown