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

Langage PHP Discussion :

[PHP-JS] Activation liste déroulante (disabled)


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut [PHP-JS] Activation liste déroulante (disabled)
    Bonjour à tous,

    Mon problème est relativement simple je pense mais moi pas y'arriver !
    En fait j'ai deux listes déroulantes chargées par un BDD, la deuxième se charge en fonction de la première. Je veux donc tout simplement que la deuxième liste deroulante soit grisée tant qu'aucun choix n'a été fait dans la première.
    J'ai déjà essayé en testant l'index de la première liste mais pas réussi qd même, voila mon code et merci pour votre aide :

    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
     
    	////////////////////////////
    	//1ERE LISTE DEROULANTE//
    	////////////////////////////
     
    $req_marque = mysql_query ("SELECT marque_id, marque_text FROM marque 
    	WHERE outils_id=1 
    	ORDER BY marque_text");
    echo "<form name='guide' method='GET' action='essai.php'>
    <p><select name='marque' onchange='guide.btnsubmit.click();'>
    <option selected value='0'>Sélectionner votre marque</option>";
     
    //Chargement de la liste déroulante des marques
    		while(list($marque_id, $marque_text) = mysql_fetch_row($req_marque)) 
    		{
    			if ($marque_id==$marque) 
    				{ 
    				$sel = "selected"; 
    				}
    			echo "<option $sel value=$marque_id>$marque_text</option>\n";
    			$sel = ""; 
    		}
    echo "</select>";
     
    	/////////////////////////////
    	//2EME LISTE DEROULANTE//
    	/////////////////////////////
     
    //Recherche des types de tronconneuse associée à la marque selectionnée
    $req_type = mysql_query ("SELECT type_id, marque_id, type_text FROM type 
    	WHERE marque_id = $marque 
    	ORDER BY type_text");
    echo "</p><p>
    <select name='type' disabled onchange='guide.btnsubmit.click();'>
    <option selected value='0'>Sélectionner votre modèle</option>";
    	//Chargement de la liste déroulante des types 
    	while(list($type_id, $marque_id, $type_text) = mysql_fetch_row($req_type)) 
    	{
    		if ($type_id==$type) 
    			{
    			$sel = "selected ";
    			}
    		echo "<option $sel value=$type_id >$type_text</option>\n";
    		$sel = "";
    	}	
    echo "</select>";

  2. #2
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Et bien passe par javascript....

    Tu mets un evenement OnChange sur la première liste qui vérifie si quelquechose est sélectionné et si c'est le cas tu "active" la seconde liste de sélection....

    Oriente toi vers du javascript, a mon avis la solution passe par là.

    Bonne journée
    cadou
    LMN24 - Site d'actualité internationale multilingue
    http://www.lmn24.com

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Ok, je voulais passer par onechange mais ca ne marche pas. La deuxième liste déroulante se dégriser à la sélection d'une marque dans la première liste mais du coup elle ne se charger plus via la BDD. Alors peut etre que onechange ne peut gérer qu'un seul événement ?
    Voilà le code que j'avais fait :

    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
     
    ////////////////////////////
    	//1ERE LISTE DEROULANTE//
    	////////////////////////////
     
    $req_marque = mysql_query ("SELECT marque_id, marque_text FROM marque 
    	WHERE outils_id=1 
    	ORDER BY marque_text");
    echo "<form name='guide' method='GET' action='essai.php'>
    <p><select name='marque' onchange='if(this.selectedIndex > 0){this.form.type.disabled = false;} ''guide.btnsubmit.click();'>
    <option selected value='0'>Sélectionner votre marque</option>";
     
    //Chargement de la liste déroulante des marques
    		while(list($marque_id, $marque_text) = mysql_fetch_row($req_marque)) 
    		{
    			if ($marque_id==$marque) 
    				{ 
    				$sel = "selected"; 
    				}
    			echo "<option $sel value=$marque_id>$marque_text</option>\n";
    			$sel = ""; 
    		}
    echo "</select>";
     
    	/////////////////////////////
    	//2EME LISTE DEROULANTE//
    	/////////////////////////////
     
    //Recherche des types de tronconneuse associée à la marque selectionnée
    $req_type = mysql_query ("SELECT type_id, marque_id, type_text FROM type 
    	WHERE marque_id = $marque 
    	ORDER BY type_text");
    echo "</p><p>
    <select name='type' disabled onchange='guide.btnsubmit.click();'>
    <option selected value='0'>Sélectionner votre modèle</option>";
    	//Chargement de la liste déroulante des types 
    	while(list($type_id, $marque_id, $type_text) = mysql_fetch_row($req_type)) 
    	{
    		if ($type_id==$type) 
    			{
    			$sel = "selected ";
    			}
    		echo "<option $sel value=$type_id >$type_text</option>\n";
    		$sel = "";
    	}	
    echo "</select>";

  4. #4
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    Ta requete n'est bien sur pas appelée au premier changement, pour cela il faudrait soit :

    des le depart tu charges tous tes types dans un tableau (ou des) que tu charges lors du changement

    soit tu apelles une fonction qui recharge ta page avec en argument ta ligne selectionnée
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

  5. #5
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    A mon avis les données sont mal récupérées dans ton onChange. Tu as testé les valeurs ? Essayé de récupérer les données par un getElementById ? Ou comme pour le submit en faisant guide.marque.selectedIndex ?
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Oui j'ai testé et les données sont bien récupérer et j'ai obtenu le même resultat avec getElementById, de meme j'ai essayé avec guide.marque.selectedIndex mais ca n'a rien donné.

    Est-ce que je peux le mettre faire ma boucle if à l'extérieur du select et comment ?

    Je ne l'est pas préciser mais je débute alors merci pour votre aide.

    ...Benoit...

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je pense avoir compris le souci, et à mon avis pour gérer ça proprement il faut le faire en PHP, tu as juste à faire un test sur $_POST['marque'], si il existe et n'est pas vide alors il faut afficher la deuxième liste sinon il faut la mettre à DISABLED.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Ok, j'en étais arriver aussi à cette conclusion mais quand je l'avais fait ça n'avait pas marché, si tu arrives corriger le code que j'avais fait ce serait génial.

    J'avais l'erreur suivante :
    Parse error: parse error, unexpected '=' in C:\Program Files\wamp\www\Essai de pro\mainfile.php on line 48

    La ligne 48 étant celle de l'instruction if

    Voilà le code que j'avais fait :
    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
     
    	////////////////////////////
    	//1ERE LISTE DEROULANTE//
    	////////////////////////////
     
    //Recherche des marques de tronconneuse		
    $req_marque = mysql_query ("SELECT marque_id, marque_text FROM marque 
    	WHERE outils_id=1 
    	ORDER BY marque_text");
    echo "<form name='guide' method='GET' action='essai.php'>
    <p><select name='marque' onchange='guide.btnsubmit.click();'>
    <option selected value='0'>Sélectionner votre marque</option>";
     
    //Chargement de la liste déroulante des marques
    		while(list($marque_id, $marque_text) = mysql_fetch_row($req_marque)) 
    		{
    			if ($marque_id==$marque) 
    				{ 
    				$sel = "selected"; 
    				}
    			echo "<option $sel value=$marque_id>$marque_text</option>\n";
    			$sel = ""; 
    		}
    echo "</select>";
     
    	/////////////////////////////
    	//2EME LISTE DEROULANTE//
    	/////////////////////////////
     if($marque!=0)
    	{guide.type.disabled=false;}
    //Recherche des types de tronconneuse associée à la marque selectionnée
    $req_type = mysql_query ("SELECT type_id, marque_id, type_text FROM type 
    	WHERE marque_id = $marque 
    	ORDER BY type_text");
    echo "</p><p>
    <select name='type' disabled onchange='guide.btnsubmit.click();'>
    <option selected value='0'>Sélectionner votre modèle</option>";
    	//Chargement de la liste déroulante des types 
    	while(list($type_id, $marque_id, $type_text) = mysql_fetch_row($req_type)) 
    	{
    		if ($type_id==$type) 
    			{
    			$sel = "selected ";
    			}
    		echo "<option $sel value=$type_id >$type_text</option>\n";
    		$sel = "";
    	}	
    echo "</select>";

  9. #9
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Ah oui il faut pas faire guide.type.disabled=false, c'est en JS ça mais en PHP je pense qu'il va juste falloir afficher DISABLED dans les attributs de ton SELECT (ûn peu dans le même genre que ce qui est fait pour SELECTED).
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Ok merci c'est bon ça marche JWhile.
    C'est pas la première fois que tu m'aides alors un grand MERCI !!!

    ...Benoit...

  11. #11
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par benooiit
    Ok merci c'est bon ça marche JWhile.
    C'est pas la première fois que tu m'aides alors un grand MERCI !!!

    ...Benoit...


    C'est cool ça. Bon courage pour la suite
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

Discussions similaires

  1. [PHP-JS] Une liste déroulante
    Par amine_en_france dans le forum Langage
    Réponses: 12
    Dernier message: 29/03/2007, 17h15
  2. [PHP-JS] affichage liste déroulante
    Par marie4449 dans le forum Langage
    Réponses: 8
    Dernier message: 23/03/2007, 17h57
  3. [PHP-JS] Deux listes déroulantes dynamiques
    Par zana74 dans le forum Langage
    Réponses: 9
    Dernier message: 29/08/2006, 12h36
  4. [PHP-JS] Firefox - Liste déroulante
    Par Dlfine dans le forum Langage
    Réponses: 7
    Dernier message: 08/06/2006, 09h48
  5. activation liste déroulante sur un checkbox
    Par julio_097 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2005, 15h45

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