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] Transmission d'informations


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut [AJAX] Transmission d'informations
    Bonjour à tous !

    J'ai besoin de votre aide pour sur un souci de liste déroulantes liées..
    Primo: J'ai une liste déroulante avec le résultat d'une requete.
    Secundo: J'ai une seconde liste déroulantes avec comme résultat le résultat d'une autre requete qui est liée à la première liste déroulante.

    Actuellement ma première liste fonctionne très bien mais c'est la deuxième qui ne va pas... Quand je clique sur la une la deuxième ne se charge pas.

    Je suis débutant en JS. En conséquence, j'ai pris un code que j'ai essayer d'adapter avec ce que je désire.

    Je vous transmet mon code.. peut être est-il faux ?

    Première page avec mes deux listes.
    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
    <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<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('class').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('department');
    				idDepartment = sel.options[sel.selectedIndex].value;
    				xhr.send("idDepartment="+idDepartment);
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Catagories search</legend>
    				<label>Department</label>
    				<select name='department' id='department' onchange='go()'>
    					<option value='-1'>None</option>
    					<?php					
    						$sql1 = "select distinct(d_name) as D_NAME from dcs_v order by D_NAME";
    						$db = new DB();
    						$t = $db->select($sql1);
    						$selected = '';
    					   //$tuple->D_NAME = array();
    						for ($i = 0; $i < count($t); $i++) {
    							$tuple =  $t[$i];
    							echo "\t",'<option value="', $tuple->D_NAME ,'"', $selected ,'>', $tuple->D_NAME ,'</option>',"\n";
    							$selected='';
     
    						}
    					?>
    				</select>
    				<label>Classes</label>
    				<div id='class' style='display:inline'>
    				<select name='class'>
    					<option value='-1'>Choose Class</option>
    				</select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    Deuxième page en php qui en théorie permet de charger la deuxième liste déroulante

    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
    <?php
    	echo "<select name='livre'>";
    	//echo($_POST["idAuteur"]);
     
    	$var = "test";
    	if(isset($_POST["idDepartment"])){
    		$sql1 = "select distinct(c_name) as C_NAME from dcs_v where d_name = '".$_POST["idDepartment"]."' order by D_NAME";
    		$db = new DB();
    		$t = $db->select($sql1);
    		$selected = '';
    	   //$tuple->D_NAME = array();
    		for ($i = 0; $i < count($t); $i++) {
    			$tuple =  $t[$i];
    			//echo "\t",'<option value="', $tuple->C_NAME ,'"', $selected ,'>', $tuple->C_NAME ,'</option>',"\n";
    			echo "\t",'<option value="', $var ,'"', $selected ,'>', $var ,'</option>',"\n";
    			$selected='';
     
    		}
    	}
    	echo "</select>";
     
    ?>

    Merci beaucoup d'avance pour votre 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
    Par défaut
    Bonjour,

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id='class' style='display:inline'>
    				<select name='class'>
    					<option value='-1'>Choose Class</option>
    				</select>
    				</div>
    Évite d'utiliser la même valeur pour l'id et le name pour différent éléments. Tu pourrais avoir de problème avec IE.

    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<select name='livre'>";
    Le name du second liste généré ("livre") sera différent de l'original ("class").

    3- Remplace cette partie de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    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('class').innerHTML = leselect;
    					}
    				}
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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){
    			if (xhr.status == 200 || xhr.status == 0){
    				leselect = xhr.responseText;
    				// On se sert de innerHTML pour rajouter les options a la liste
    				document.getElementById('class').innerHTML = leselect;
    			}
    			else {
    				alert ("erreur :" + xhr.status+ " " + xhr.statusText);
    			}
    		}
    	}
    A+.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut
    Salut Andry,


    tout d'abord merci pour ton aide.

    Ensuite désolé pour le echo j'avais ommis de changer ca.

    Et enfin pour le reste cela ne fonctionne toujours pas. J'ai même aucun message d'erreur afficher...

    Juste je clique sur ma premiere liste je selectionne un élément et la deuxieme n'est pas créee... J'ai un petit début de liste avec rien dedans

    Je ne sais pas du tout pourquoi

    Merci

  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
    Par défaut
    Vérifie si la requête sql est bonne. Comme si tu compares un truc du genre varchar (d_name) avec un type int 'idDepartement'.

    A+.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut
    Bah non justement...
    Elle n'est pas bonne le d_name est un type varchar, le id un type int.

    Je veux en fait récupérer le contenu de la liste déroulante et pas l'id associé


    Comment fait-on cela ?

  6. #6
    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
    Par défaut
    Bonsoir,

    Mais c'est quoi la clé étranger dans la table dcs_v qui fait référence à la table D_NAME ?
    Mais un echo $_Post["idDepartment"] pour vérifier.

    A+.

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

Discussions similaires

  1. [AJAX] transmission de données.
    Par Killion dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 29/09/2007, 13h34
  2. [AJAX] Transmission de variable, j'ai pas tout compris
    Par msg_dracula dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/07/2007, 00h15
  3. Réponses: 6
    Dernier message: 31/03/2007, 01h39
  4. Transmission d'informations entre deux fenêtres ouvertes
    Par lnplnp dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/02/2007, 12h04
  5. [VB.Net] Transmission d'information entre 2 Form
    Par stargatejojo dans le forum Windows Forms
    Réponses: 8
    Dernier message: 08/05/2006, 11h31

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