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

JavaScript Discussion :

Select Interactifs en Javascript


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut Select Interactifs en Javascript
    Bonjour à tous,

    Je cherche à faire des select interactif en Javascript avec des appels en BDD:

    Le select 1 représente les constructeurs de mes motos: (ex: APRILIA, BMW, DUCATI)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <select name="constructeur_moto_nom">
    <?php
            //Select Constructeur moto
            $constructeur = 'SELECT constructeur_moto_id,constructeur_moto_nom FROM a_constructeur_moto ORDER BY constructeur_moto_nom';
            $constructeur_query = mysql_query($constructeur) or die( 'Erreur' );
                    echo '<option>Constructeur Moto</option>';
                    while ( $constructeur_list = mysql_fetch_array( $constructeur_query ) ) {
                            echo '<option value="'.$constructeur_list['constructeur_moto_id'].'">'.$constructeur_list['constructeur_moto_nom'].'</option>';
            }
    ?>
    </select>
    Ça c'est bon ça marche

    Si je sélectionne le constructer APRILIA, je voudrais que dans mon 2ème select apparaissent tous les modèles de moto du constructeur sélectionné que j'ai en BDD (Si je choisi APRILIA dans le select1 alors le select 2 propose: Modele1APRILIA, Modele2APRILIA, Modele3APRILIA):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <select name="modele_moto_nom">
    <?php
    	//Select Modèle moto
    	$modele = 'SELECT modele_moto_id,modele_moto_nom FROM a_modele_moto WHERE modele_constructeur_moto_nom="constructeur_moto_id SELECTIONNE" ORDER BY modele_moto_nom';
    	$modele_query = mysql_query($modele) or die( 'Erreur' );
    		echo '<option>Modele Moto</option>';
    		while ( $modele_list = mysql_fetch_array( $query ) ) {
    			echo '<option value="'.$modele_list['modele_moto_id'].'">'.$modele_list['modele_moto_nom'].'</option>';
    	}
    ?>
    </select>
    Je ne sais pas comment récupérer la valeur séléctionné dans le select1 pour la mettre dans le WHERE de la seconde requête ( WHERE modele_constructeur_moto_nom="constructeur_moto_id SELECTIONNE") et que ça prenne effet à chaque fois que je sélectionne un nouveau constructeur.

    Voila si vous pouvez m'aider!

    Fwe!

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Tuto en post-it juste au-dessus... http://www.developpez.net/forums/d59...s-liees-entre/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    Salut!
    Sur le lien que tu m'a donné j'ai deja pris cette exemple: http://siddh.developpez.com/articles/ajax/#LIV-A

    J'ai créé mes tables:
    Code sql : 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
    CREATE TABLE `a_constructeur_moto` (
    `constructeur_moto_id` int unsigned NOT NULL auto_increment primary key,
    `constructeur_moto_nom` VARCHAR (200) NOT NULL unique,
    `constructeur_important` int NOT NULL,
    `constructeur_moto_image_url` text NOT NULL,
    `constructeur_moto_descriptif` text NOT NULL
    )
     
    CREATE TABLE `a_modele_moto` (
    `modele_moto_id` int unsigned NOT NULL auto_increment primary key,
    `modele_moto_nom` VARCHAR (200) NOT NULL,
    `modele_moto_annee` int NOT NULL,
    `modele_constructeur_moto_nom` VARCHAR (200) NOT NULL,
    `modele_constructeur_moto_id` int NOT NULL,
    `modele_moto_image_url` text NOT NULL,
    `modele_moto_descriptif` text NOT NULL
    )

    Ensuite je créé ma page moto.php:
    Code javascript : 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
    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('a_modele_moto').innerHTML = leselect;
    		}
    	}
    	// Ici on va voir comment faire du post
    	xhr.open("POST","ajaxModele.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('a_constructeur_moto');
    	modele_constructeur_moto_id = sel.options[sel.selectedIndex].value;
    	xhr.send("modele_constructeur_moto_id="+modele_constructeur_moto_id);
    }
    <form>
    	<label>Constructeur Moto</label>
    	<select name='a_constructeur_moto' id='a_constructeur_moto' onchange='go()'>
    		<option value='-1'>Choisissez un Constructeur</option>
    <?
    $res = mysql_query("SELECT * FROM a_constructeur_moto ORDER BY constructeur_moto_nom");
    while($row = mysql_fetch_assoc($res)){
    	echo "<option value='".$row["constructeur_moto_id"]."'>".$row["constructeur_moto_nom"]."</option>";
    }
    ?>
    	</select>
    	<label>Modele Moto</label>
    	<div id='a_modele_moto' style='display:inline'>
    		<select name='a_modele_moto'>
    			<option value='-1'>Choisissez un Constructeur</option>
    		</select>
    	</div>
    	</fieldset>
    </form>

    Puis la page de traitement selon la sélection (ajaxModele.php):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    echo $_POST["modele_constructeur_moto_id"];
    echo "<select name='a_modele_moto'>";
    if(isset($_POST["modele_constructeur_moto_id"])){
            $res = mysql_query("SELECT * FROM a_modele_moto WHERE modele_constructeur_moto_id=".$_POST["modele_constructeur_moto_id"]." ORDER BY modele_moto_nom");
            while($row = mysql_fetch_assoc($res)){
                    echo "<option value='".$row["modele_moto_id"]."'>".$row["modele_moto_nom"]."</option>";
            }
    }
    echo "</select>";
    ?>
    Le premier select (constructeur moto) marche bien. Il affiche dans une liste toutes les marques de moto que j'ai en BDD.
    Si je choisi une marque (mettons DUCATI), son ID apparait bien au-dessus du second select (la première ligne de code que j'ai mis dans ajaxModele.php ( echo $_POST["modele_constructeur_moto_id"]; ) permet de vérifier ça.
    Par contre ça n'affiche pas les modèles de Moto qui font partis de ce constructeur dans le second select!

    J'ai fais pleins de test avant de revenir ici mais je ne comprends pas pourquoi ça ne marche pas!

    Fwe!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    D'ailleurs je viens de mettre en pratique cette exemple la:
    http://siddh.developpez.com/articles/ajax/#LIV-A

    Et lorsque je sélectionne un auteur alors le premier select n'a aucune influence sur le second select.

    Donc je pense que le code n'est pas bon et c'est pour ça que ça n'a pas marché quand j'ai mis en pratique sur mon cas.

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    si tu commençais par lire la charte du forum et nous poster du HTML et du Javascript
    et non le code de ton serveur.

    A+JYT

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    Salut Sekaijin,

    Je vois pas très bien de quoi tu parles.

    Par contre de mon coté je n'ai toujours pas avancé.

    Merci.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Par défaut
    Ep,

    Apparemment, t'es au point sur le php/sql alors je te conseille de ne pas inclure tes routines php de suite et de tester avec du code php bidon ...

    Dans ton head : (forcement tu te télécharge ton jquery)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
    Dans ta page hmtl
    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
     
    <script type="text/javascript">
    				function Liste_deroulante(val)
    					{
    					/*alert("La valeur sélectionnée est : " + val);*/
    alert("La valeur sélectionnée est : " + val);
    					$("#liste_modele").load("modele_moto.php?cat="+$("#modele").val()) 
    					}
    			</script>
     
                <h3>Niveau :</h3>
    			<br>
                <select name="modele" size="1" id="modele" class="texte" onchange="Liste_deroulante(this.value)">
    				<option value="">Choisir</option>
    				<option value="cat1">Aprilia</option>
    				<option value="cat2">Ducat</option>
                    <option value="cat3">KTM</option>
    		  	</select>
    Toujours dans ton html a l'endroit ou tu veux ton select de modele :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="liste_modele"></div>
    Ton fichier php qui te permettra ensuite en php/sql de créer le select modèle :
    Fichier : modele_moto.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
     
    <?php
    $cat = $_GET["cat"];
    echo 'Test !!!'; 
    switch($cat) 
        {
        case 'cat1': 
            echo 'Tuono'; 
            break; 
        case 'cat2': 
            echo 'RS'; 
            break; 
        default: 
            echo 'Le best of'; 
        }
    ?>
    Je te laisse te pencher sur le cas ...

  8. #8
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    si tu veux de l'aide efficace lit la charte dy forum

    il est écrit qu'on ne poste pas de code php mais le HTML et JS présent dans le navigateur.

    il te sufit de faire afficher la source dans ton navigateur pour avoir le HTML produit et non le code PHP

    de même tu invoque l'url de ton service ajax et tu copie dans un fichier la réponse.

    et c'est ça qui permetra de trouver le bug côté client s'il est du côté client.

    Sans ça php pouvant produire tout et n'importe quoi il suffit que $row["modele_moto_nom"] contienne du html qui fait une redirection pour ne plus avir quoique se soit qui resemble de pret ou de loint au code HTML que tu présente.
    donc impossible de garantir que ce qu'on pense être le code HTML généré est effetivement ce que le client exécute

    du coup on fait des conjectures dans le vide.
    Important : Les règles incontournables d'utilisation de ce forum

    A+JYT

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    Ecoute, si tu veux pas répondre ne réponds pas mais arrêtes de faire le flic ça me gonfle!

  10. #10
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Salut

    Je ne fais pas le flic. On veu bien répondre mais tu ne nous fourni pas ce qui permet de le faire.
    je comprends pas ce que te coute de faire un view source dans ton navigateur

    @squal31 lui aussi te dit que pour déboquer le pb il vaut mieux
    Citation Envoyé par squal31
    je te conseille de ne pas inclure tes routines php de suite
    Si tu veux pas de réponse clos la discu
    Si tu pense que c'est pb php poste sur le forum PHP


    A+JYT

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    Je veux juste que tu ne publie plus rien la dedans, tu pourris la discussion. Donc stop.

Discussions similaires

  1. Treemenu vertical interactif sans JavaScript
    Par LadyWasky dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 09/08/2010, 13h37
  2. select box avec javascript
    Par flamant dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/09/2008, 11h53
  3. CSS par dessus des Select avec script javascript.
    Par Joe Le Mort dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/01/2007, 13h56
  4. Peut-on faire un équivalent du SELECT html en javascript ?
    Par lodan dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 14/01/2007, 20h16
  5. "onchange" sur select créé par javascript
    Par NicoNours dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/10/2006, 09h53

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