IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Listes imbriquées liées en ajax


Sujet :

AJAX

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Listes imbriquées liées en ajax
    Bonjour àtous,

    J'espère que vous allez bien.

    Je souhaite créé des listes imbriquées.

    Je m'explique:

    Je developpe une application qui concerne plusieurs hotels. Et selonl'hotel, l'agent devra renseigné : la fromule qu'il souhaite (SINGLE ou COUPLE ) dans un menu déroulant.
    Lorsqu'il aura selectionné '''COUPLE''' par exemple un autre menu deroulant aparaitra pour qu'il choisisse le nombre de nuitee puis enfin le montant s'affichera.

    J'ai tenté quelque chose mais en jquery/javascript je souhaiterais le mettre en Jquery/AJAX et le rendre focntionnel puisque là j'arrive à choisir la formule mais la 2nde étape ne fonctionne pas.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <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');
    				idform = sel.options[sel.selectedIndex].value;
    				xhr.send("idform="+idform);
    			}
    		</script>

    Mon menu déroulant :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
        <?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 le 2nd menu déroulant:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    	echo "<select name='livre'>";
    	if(isset($_POST["idform"])){
    						$conn = new mysqli('localhost', 'ree', 'ee', '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

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Indente bien ton code, et tu verras que la balise fermante option n'est pas dans la boucle laquelle elle devrait-être (Tu peux vérifier dans le code source du navigateur que le code HTML généré est bancal).

    A+.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse
    J'ai pu avoir un code avec lequel travailler que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <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="formula"  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="formul"  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 />
    Mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     <script>
    $(document).ready(function(){
    	var $formula =$('#formula');
    	var $formul =$('#formul');
     
    	$.ajax({
    		url: 'formula.php',
    		data : 'go',
    		dataType : 'json',
     
    		success: function(json) {
    			$.each(json, function(index, value)
    			{
    				$formula.append('<option value="'+index+'">'+value+'</option>');
    			});
    		} 
     
     
    	});
    	$formula.on('change', function() {
    		var val =$this.val();
    		if(val != ''){
    			$formul.empty();
    			$.ajax({
     
    				url: 'formula.php',
    				type: 'GET',
    				data:'id_form=' +val,
    				dataType : 'json',
    				success: function(json){
    					$.each(json, funtion(index, value){
    						$formul.append('<option value="'+index+'">'+value+'</option>');
    					})
    				}
     
    			});
    		}
    	});
    	});
     
    </script>
    et enfin mon fichier formula.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
     
    if(isset($_GET['go']) || isset($_GET['idform']))
    {
            $json = array();
            
            if(isset($_GET['go'])){
                    $requete='SELECT id,libelle FROM formula';
            }
            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=eeee; charset=ut8','root, '',");
                    
            }
            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);
    }
    ?>
    Mais ça ne fonctionne pas. Je ne sais pas si j'ai oublier quelque. Merci pour l'aide

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var val =$(this).val();
    Vire aussi les onchange="go()" sur tes selects puisque tu n'as pas cette fonction.

    A+.

Discussions similaires

  1. Listes imbriquées (liées) avec PHP/MySQL/jQuery
    Par mel.cam12 dans le forum jQuery
    Réponses: 1
    Dernier message: 10/04/2014, 10h34
  2. [AJAX] sécurité liste imbriqué et SQL
    Par renardchan dans le forum AJAX
    Réponses: 3
    Dernier message: 12/10/2011, 07h50
  3. [jQuery] sélection d'une liste imbriqué
    Par Spir dans le forum jQuery
    Réponses: 4
    Dernier message: 25/11/2008, 12h23
  4. [XHTML] Listes imbriquées valides ?
    Par Amon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 23/09/2005, 23h05
  5. [CSS] listes imbriquées et conformité W3C
    Par rapathonyk dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/07/2005, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo