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 :

[AJAX] impossible de récuperer totalement valeur d'une liste déroulante


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 30
    Points : 19
    Points
    19
    Par défaut [AJAX] impossible de récuperer totalement valeur d'une liste déroulante
    Bonjour !

    Je vais vous exposer rapidement mon problème, en espérant me faire comprendre correctement.

    J'ai 3 listes déroulante dynamique, toutes trois traitées avec AJAX, la première "NomBaseDeDonnee" comme son l'indique, il s'agit de la Base de donnée séléctionnée, la seconde "titreGeneral", il s'agit d'une table et la dernière "chapitre", il s'agit du contenu de cette table, notamment son titre.

    Les 3 listes fonctionnent, elles vont toute récuperer les valeurs des tables via des requêtes en php. Seulement la dernière liste pose un problème, elle récupere uniquement la première table de la base de donnee sélectionnée. Et même lorsque je clique sur un autre élément de la derniere liste, il charge toujours la première table alors qu'il devrait charger la table qui est séléctionnée.

    Merci d'avance aux personnes qui auront la patience de m'aider !

    voila, je vous donne les codes sources.

    AdminAjoutTitreChap.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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
     
     
    //Début de la fonction des listes liées (ajax)
     
    function getXhr()
    {
    	var xhr = null;
     
    	if(window.XMLHttpRequest) //Firefox et autres
    		{
    			xhr = new XMLHttpRequest();
    		}
    	else if(window.ActiveXObject)	//I.E.
    	{	
    		try 
    		{
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch(e)
    		{
    			xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	else //XMLHttpRequest non supporté par le naviguateur
    	{
    		alert("Le naviguateur ne supporte par 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éfinit ce que l'on va faire lorsque l'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)
    			{
     
    		      var rst = xhr.responseXML;
    		      var items = rst.getElementsByTagName('element');
    		      document.getElementById('titre').options.length=0;
    		      for (var i=0;i<items.length;i++)
     
    		     		{
    						var myOption = new Option(items[i].getElementsByTagName('option')[0].firstChild.nodeValue,items[i].getElementsByTagName('valeur')[0].firstChild.nodeValue,false,true)
    						 document.getElementById('titre').options[i]=myOption;
     
    					}
     
    			}
    	}
    	//Ici on va voir comment faire du post
    	xhr.open("POST","sujetAjout.php",true);
    	//Ne pas oublie le header pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	//ne pas oublier de poster les arguments
    	//ici l'id du titre général
    	sel = document.getElementById('NomBdd');
    	NomBdd = sel.options[sel.selectedIndex].value;
     
     
     
    	xhr.send("NomBdd="+NomBdd);
     
     
     
     
    }
     
    function goChap()
    {
    	var xhr = getXhr();
    	//on définit ce que l'on va faire lorsque l'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)
    			{
    				var rst = xhr.responseXML;
     
    		      var items = rst.getElementsByTagName('element');
    		      document.getElementById('chap').options.length=0;
    		      for (var i=0;i<items.length;i++)
     
    		     		{
    						var myOption = new Option(items[i].getElementsByTagName('option')[0].firstChild.nodeValue,items[i].getElementsByTagName('valeur')[0].firstChild.nodeValue,false,true)
    						 document.getElementById('chap').options[i]=myOption;
     
    					}
    			}
    	}
    	//Ici on va voir comment faire du post
    	xhr.open("POST","ajoutChap.php",true);
    	//Ne pas oublie le header pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	//ne pas oublier de poster les arguments
    	//ici l'id du titre général
     
    	selNomBdd = document.getElementById('NomBdd');
    	nomBdd = selNomBdd.options[sel.selectedIndex].value;
     
    	selTitre = document.getElementById('titre');
    	titre = selTitre.options[sel.selectedIndex].value;
     
     
     
    	donnees = xhr.send("Titre=" +titre + "&NomBdd=" +nomBdd);
     
     
     
     
    }
     
     
     
        <select name="NomBaseDeDonnee" id="NomBdd" onchange="go();">
    		<option selected >Choisir une table</option>	
     
    		   <?php 
                            $Bdd = mysql_query("SHOW DATABASES"); 
                                    
                              while ($TableauDonnees = mysql_fetch_row($Bdd) )
                            
                                    
                                    {
                                                    
                                       $AffichageDonnees =  $TableauDonnees[0];
    echo '<option value=  '.$AffichageDonnees. ' >' . $AffichageDonnees . '</option>';
                                                    
                                    }               
     
                               ?>					
     
     
    			</select>
    			<b>Séléction du sujet:</b>
     
    	<div id="Letitre" >
    	       <select name="titreGeneral" id="titre" onchange="goChap()"> 
     
    			<option value="-1">Choisir un titre</option>	
     
     
    	      </select>
    	</div>	
     
            <div id="idDuChapitre" style="display:inline"> <!-- Séléction du chapître -->
     
    			<select name="chapitre" id="chap">
     
    			    <option value="-1">Choisir un contenu</option>
     
    			</select>
     
    	</div>

    sujetAjout.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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <?php
                    header("Content-type:text/xml");
                    echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
            echo "<elements>";
     
                    
            
                    include("../Bdd/Identification.php"); // identification à la BDD 
                                                    
                                    $NomBdd = $_POST["NomBdd"];
                                                            
                                    $result = mysql_list_tables($NomBdd) OR die ("Impossible de recuperer la liste de tables de la Base de donnee"); //permet de lister les tables présente dans la BDD
                                    
     
                                    while   ($donnees = mysql_fetch_row($result) ) //Va créer une boucle avec le nom des tables dans la base de donnée
                    
                                            {
                                                            
                                                    $titre = html_entity_decode($donnees[0], ENT_NOQUOTES); //Il va affecter la valeur 0(signifie quel champ il doit afficher) du résultat du tableau mysql_fetch_row 
                                                    echo '<element>';
     
                                                    echo '<option value="'.$titre.'">'.$titre.'</option>';
                                                    echo '<valeur>'.$titre.'</valeur>';
                                                    
                                                    echo '</element>';
     
     
                                            }
                                                                            
                                                                                            
     
            echo "</elements>";
            
     
     
     
     
            
     
    ?>
    ajoutChap.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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php
     
    header("Content-type:text/xml");
                    
                    echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
                    
            echo '<elements>';
     
                    include("../Bdd/Identification.php"); // identification à la BDD 
                            $NomDeBddChap = $_POST["NomBdd"];
            
                            mysql_select_db($NomDeBddChap) or DIE("Impossible de selectionner la base de donnee" . mysql_error());
                            $ValeurTitreGene = $_POST["Titre"];
                    
     
                            $res = mysql_query("SELECT * FROM  `".$ValeurTitreGene."` ");   
                            
     
                    
                    
                    while ($tab = mysql_fetch_row($res) )
                    
                            {
                                    $id = $tab[0];
                                    $titre = $tab[1];
                                    echo '<element>';
                                    echo "<option value='".$id."'>".$id."  ".$titre."</option>";
                                    echo '<valeur>'.$id.'</valeur>';
                                    echo '</element>';
                            }
     
            
                    echo "</elements>";
     
     
            
     
     
            
     
    ?>

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Après de nombreuses recherches, j'ai trouvé la solution à mon problème.

    Il remplacer cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            selTitre = document.getElementById('titre');
    	titre = selTitre.options[sel.selectedIndex].value;
    par celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    titre = document.getElementById('titre').options[document.getElementById('titre').selectedIndex].value;

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oui, en tout cas, utiliser les bonnes variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    selTitre = document.getElementById('titre');
    titre = selTitre.options[sel.selectedIndex].value;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récuperer la valeur d'une liste déroulante
    Par neuneu1 dans le forum Langage
    Réponses: 10
    Dernier message: 25/11/2008, 09h34
  2. Récuperer la valeur d'une liste modifiable créée dans un onglet excel
    Par dimitrios dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/12/2007, 11h34
  3. Réponses: 2
    Dernier message: 01/09/2006, 00h02
  4. Réponses: 1
    Dernier message: 20/06/2006, 14h32
  5. Réponses: 12
    Dernier message: 02/05/2006, 19h37

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