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 - Javascript possible ?


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Select - Javascript possible ?
    Bonjour,

    A force de chercher sur divers forums une solution pour mon problème j'ai réussi à créer ce bout de code qui répond +/- à mes besoins mais j'ai un sérieux problème et je pense que du Javascript pourrait m'aider, malheureusement je ne sais pas comment coder ce code ci dessous en java.

    Je m'explique: je voudrais afficher une picklist via un select suivant l'option choisie dans la première picklist.

    Ca fonctionne très bien sauf que pour que ça marche j'ai dû utiliser la fonction submit sur mon premier onchange. Résultat mon formulaire est envoyé alors qu'il n'est pas complet...

    Biensûr ceci est du PHP mais je suppose que je dois créer une fonction en javascript (d'où ma question ici) que je déclare dans mon onchange et lorsque la fonction est appelée, elle vérifie dans la DB les options du premier select. Le but étant d'afficher les modèles de véhicules suivant la marque de voiture que l'on a choisie.

    En plus à cause du submit de la première picklist le nom de la marque ne s'affiche jamais puisque le formulaire est rafraichi à chaque fois

    Est-il possible de remplacer ces onchange/submit par une fonction javascript ??? Je sais bien que le javascript s'exécute côté client mais j'imagine qu'il est possible de faire un query sql vers le serveur lorsque la fonction est exécutée, non ? Au pire charger toutes les données de la DB (vu qu'il n'y a pas non plus des milliers de modèles et de marques) et de n'afficher que ce dont on a besoin...

    PS: je suis nul en javascript


    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
    <?php
    include 'connect.php';
    $db=mysql_connect($DBHost,$DBUser,$DBPass);
    mysql_select_db($DBName,$db);
    echo '<form name="valid" method="post" action="result.php">';
     
    $sql1 = 'SELECT * FROM auto_marques';
    $result1=mysql_query($sql1) or die ("Erreur requete");
     
    echo'<form method="post" action="test.php">
    <select name="marques" onChange="this.form.submit()">
    <option value='.$data['nom'].'></option>';
    while ($data = mysql_fetch_array($result1))
          {
          echo '<option onChange="this.form.submit()" value='.$data['nom'].'>'.$data['nom'].'</option>';
          }
    echo '</select></form>';
     
    $marque = $_POST['marques'];
     
    echo '<form method="post" action="test.php">
    <select name="modele">
    <option value="'.$data['nom'].'"></option>';
    $sql2 = "SELECT * FROM auto_modeles WHERE idmarques='$marque'";
    $result2=mysql_query($sql2) or die ("Erreur requete");
    while ($data = mysql_fetch_assoc($result2))
          {
          echo '<option value='.$data['nom'].'>'.$data['nom'].'</option>';
          }
    echo '</select>';
     
    echo '</form><BR><input type="submit" name="submit" value="Envoyer"></form>';
     
    ?>

  2. #2
    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
    A force de chercher sur divers forums une solution pour mon problème
    Tu n'as pas dû chercher bien loin : réponse ici

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ah bhein en fait si, enfin pas cette page là mais la première solution je l'avais déjà vue sous une autre forme mais comme ce sont des array je ne savais pas comment faire (et je ne sais toujours pas d'ailleur) pour modifier les array par les données de ma DB...

    Par contre, je suis un vrai newbie parce que j'ai toujours éjecté de mes recherches celles qui parlaient d'AJAX vu que je ne savais pas ce que c'était lol mais je viens de faire un tour sur wiki pour me rendre compte que ce n'est pas un langage en soi (enfin pas un nouveau), sauf que je ne suis pas sûr que le XML tourne sur le serveur que j'utilise en intrAnet... je vais donc devoir tester ça

    Merci pour ta réponse Bovino

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bon après essais la solution AJAX ne fonctionne pas

    J'ai bien les deux picklists mais elles sont vides, pas moyen de choisir un auteur dans la DB et donc aucun livre... pourtant j'ai juste fait un copier coller du code. J'ai vérifié les login/password c'est ok et les deux tables dans la DB sont bien remplies avec les données pour l'exemple...

    Une petite idée d'où peut venir le problème ? Parce que là je reste sur ma faim

  5. #5
    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
    Sans nous montrer de code (html généré plutôt que php / js / éventuellement la réponse serveur Ajax) point de salut !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bhein en fait j'ai testé le code de la FAQ que tu m'as envoyé (sur le lien que tu as mis ci dessus, le deuxième car le premier ce sont des Arrays)

    Je n'ai aucun message d'erreur, même pas le message "Votre navigateur ne supporte pas les objets XMLHTTPRequest..." prévu dans le code, donc visiblement ça devrait fonctionner mais on dirait que la DB n'est pas consultée. En tous cas les deux SELECT sont bien là mais désespérément vides.

    Voici les codes que j'ai utilisés (j'ai bien entendu créé les deux tables dans la DB "test" et inclus les données via une requête SQL, après vérifications, elles sont bien là et les données dedans. Les noms des tables, DB, login et password corrects):

    auteurs.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
    <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('livre').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('auteur');
    				idauteur = sel.options[sel.selectedIndex].value;
    				xhr.send("idAuteur="+idauteur);
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Liste liées</legend>
    				<label>Auteurs</label>
    				<select name='auteur' id='auteur' onchange='go()'>
    					<option value='-1'>Aucun</option>
    					<?
    						mysql_connect("localhost","root","root");
    						mysql_select_db("test");
    						$res = mysql_query("SELECT * FROM auteur ORDER BY nom");
    						while($row = mysql_fetch_assoc($res)){
    							echo "<option value='".$row["id"]."'>".$row["nom"]."</option>";
    						}
    					?>
    				</select>
    				<label>Livres</label>
    				<div id='livre' style='display:inline'>
    				<select name='livre'>
    					<option value='-1'>Choisir un auteur</option>
    				</select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>


    ajaxLivre.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    	echo "<select name='livre'>";
    	if(isset($_POST["idAuteur"])){
    		mysql_connect("localhost","root","root");
    		mysql_select_db("test");
    		$res = mysql_query("SELECT id,titre FROM livre 
    			WHERE idAuteur=".$_POST["idAuteur"]." ORDER BY titre");
    		while($row = mysql_fetch_assoc($res)){
    			echo "<option value='".$row["id"]."'>".$row["titre"]."</option>";
    		}
    	}
    	echo "</select>";
    ?>

Discussions similaires

  1. Interpréter du php dans du javascript : possible?
    Par floctc dans le forum Langage
    Réponses: 3
    Dernier message: 19/06/2009, 11h55
  2. Requête SELECT Multibase possible ?
    Par asenaici dans le forum Connexion aux bases de données
    Réponses: 5
    Dernier message: 07/04/2009, 08h41
  3. Visibility d'un SELECT Javascript
    Par cyrilskof dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/09/2008, 17h36
  4. [DOM] <select> JAVASCRIPT sous IE
    Par kosowski dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/06/2008, 16h43
  5. Requête SELECT CASE possible ?
    Par david71 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/01/2008, 09h34

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