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

PHP & Base de données Discussion :

Liste déroulante et sélection


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Par défaut Liste déroulante et sélection
    bonjour a tous,

    voila mon probleme, j'ai 2 formulaires, un mini contenant une liste deroulante chargée par mysql qui, lorsque que je selectionne une valeur et que je clique sur le bouton submit, rempli les autres champs de mon 2eme formulaire.

    jusque là tout fonctionne.

    le truc c'est que dans mon 2eme formulaire il y a une autre liste deroulante, elle aussi chargée par mysql.

    ce que je voudrais faire, si c'est possible, et sans ajax, c'est d'afficher en premier l'option du select correspondante au resultat de la premiere liste, sachant qu'elles sont deja remplie toutes les deux.

    je ne peux pas simplement mettre <option value = lecode>lelibellé</option>
    car la liste est remplie comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $reqPROD= mysql_query('SELECT PROD_REF, PROD_NOM FROM produits ORDER BY PROD_NOM');
     
    while ($donnees = mysql_fetch_array($reqPROD)) 
    {
    echo'<option value="'.$donnees[0].'" >'.$donnees[1].'</option>';
    }
    mon code servirait en fait a modifier les informations d'un produit (les produits etant listés dans la premiere liste, leur type dans la 2eme, les autres infos ne necessitant qu'une simple textbox)

    serait il possible, pour faire tres simple, de ne charger la 2eme liste que lorsqu'un produit est selectionné dans la 1ere liste ?
    dans ce cas comment mettre en premier le type correspondant au produit puis tous les autres types a la suite ?

    merci a tous pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Par défaut Liste déroulante et sélection
    Utilisez if(isSet(...)) pour conditionner le remplissage de la 2ème liste à la première.
    Au passage ce n'est possible sur une sélection, il faut aussi soumettre la requête; donc je suppose que l'utilisateur sélectionne puis clique sur le bouton submit du premier formulaire.
    Donc ce serait bien le cas d'utiliser Ajax puisqu'il peut requête sur du PHP.
    Le premier avantage serait que votre utilisateur aurait la 2ème liste remplie suite à un clic sur la première
    et le 2ème avantage est que la charge est plus légère. Le serveur n'a pas à regénérer toute la page mais seulement le contenu de la deuxième liste et le client se charge de mettre à jour la liste.
    Mais vous devez avoir vos raisons de ne pas utiliser Ajax.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Par défaut
    il y a plusieurs solutions pour transmettre des valeurs d'un formulaire a l'autre.

    tu peux utiliser les boutons submit pour les transmettre, par lecture de fichier, mettre la valeur dans un cookies ou encore la passer par la barre url si la valeur est un chiffre ( excellant pour le id des tables sql)

    par url :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function Supprimer(choix)
    			{
    				//permet de se redirriger vers une page php sans que les utilisateurs sans rendent compte
    				if (confirm(" Voulez-vous vraiment supprimer cette ligne " +choix))
    					document.location = "supprimer.php?id=" + choix;
    			}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //On recupere id de l'element selectionne
    	$id = $_GET['id'];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a onclick='return Supprimer($ligne[0])'>
    Sinon il faut utiliser l'Ajax mais je n'y connais pas trop car j'ai eu le même probleme mais j'ai fais en plusieurs pages.

    Si ca t'as aidé.
    tortue

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Par défaut
    bonjour,
    tenez, voilà une petit exemple qui peut vous guider.

    admettons les tables pays et villes avec ces structures et données

    Table pays

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE pays (
      id_pays varchar(3) collate utf8_unicode_ci NOT NULL,
      nom_pays varchar(50) collate utf8_unicode_ci NOT NULL,
      PRIMARY KEY  (id_pays)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
     
    INSERT INTO pays (id_pays, nom_pays) VALUES
    ('033', 'France'),
    ('039', 'Italie');
    Table villes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TABLE villes (
      nom_ville varchar(50) collate utf8_unicode_ci NOT NULL,
      id_pays varchar(3) collate utf8_unicode_ci NOT NULL,
      PRIMARY KEY  (nom_ville)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
     
    INSERT INTO villes (nom_ville, id_pays) VALUES
    ('Paris', '033'),
    ('Lyon', '033'),
    ('Roma', '039'),
    ('Milano', '039');
    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
    <?php 
    	mysql_connect("localhost","root","");
    	mysql_select_db("testdeveloppezcom");		
    ?>
    <form action="" method="get">
    	<select name="lb_pays" size="2">
        <?php 
    		$rs = mysql_query("SELECT id_pays, nom_pays FROM pays"); 
    		while($enr = mysql_fetch_row($rs)) 
    			echo "<option value='$enr[0]'>$enr[1]</option>";
    	?>
        </select>
        <input name="cb_valider_pays" type="submit" value="Valider pays">
    </form>
     
    <form action="" method="get">
    	<select name="lb_villes" size="2">
        <?php
    		if(isSet($_GET["cb_valider_pays"]))
    		{
    			$rs = mysql_query("SELECT nom_ville FROM villes WHERE id_pays = '{$_GET['lb_pays']}'"); 
    			while($enr = mysql_fetch_row($rs)) 
    				echo "<option value='$enr[0]'>$enr[0]</option>";
    		}
    	?>
        </select>
        <input name="cb_valider_ville" type="submit" value="Valider ville">
    </form>
    J'espère que cela pourra vous aider.
    Il y a 2 formulaires, deux listes, ... deux submit, que du PHP, et cette 2ème liste qui dépend de la première.
    Bien sûr c'est le minimum que je vous envoie, ensuite il faut ajouter ...

    bonne soirée

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Par défaut
    Salut,

    Pour choisir la ville en fonction du pays, sur la même page, tu dois faire de l'AJAX ou utiliser la librairie JQUERY qui peut d'aider.
    Sinon tu dois faire un passage de paramètre par différentes pages. J'ai se problème il n'y a pas longtemps et pour le moment je bloque. J'avais plusieurs solution comme ouvrir un popup avec la deuxième liste déroulante.

    Mais il n'y a pas de solution direct en php pour faire une liste qui dépend de l'autre. L'Ajax permet de le faire mais je n'y arrive pas. Donc mon projet est en attente car j'ai encore des éléments à rajouter à la base et je vais y revenir dessus dans une semaine je pense.

    je te montre mon code comme cela tu verras :

    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
    //requete effectue pour lister les differents sites dans la liste deroulante
    $requete_site ="SELECT DISTINCT site FROM table ORDER BY site";
     
    //verification de la requete
    $result_site = mysql_query($requete_site)
    	or die ("Execution impossible de la requete");
     
    //creation d'une liste deroulante site
    echo "<p id='lieu'>du site ";
    //echo "<form method=\"POST\" action=\"resultat2.php\">";
    echo "<select name='site' onchange='ChoixSite()'>
    	<option value='0'>--Veuillez choisir--\n";
    	while($ligne_site = mysql_fetch_assoc($result_site))
    	{
    		extract($ligne_site);
    		echo "<option value='$site'>$site\n";
    	}
    	echo "</select></p>";

    Deuxieme liste : mais la valeur de $site est égale à la derniere valeur de la table. ( c'est la que je bloque).
    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
     
    $requete_sous_reseau ="SELECT sous_reseau FROM table WHERE site LIKE '$site'";
     
    //vérification de la requête
    $result_sous_reseau = mysql_query($requete_sous_reseau)
    	or die ("Execution impossible de la requête");
     
    //creéation d'une liste déroulante sous-réseau
    echo "<p id='sous_réseau'>et du sous-réseau ";
    echo "<select name='sous_reseau'>
    	<option value='0'>--Veuillez choisir--\n
    	<option value='1'>Tous\n";
    	while($ligne_sous_reseau = mysql_fetch_assoc($result_sous_reseau))
    	{
    	        extract($ligne_sous_reseau);
            	echo "<option value='$sous_reseau'>$sous_reseau\n";
    	}
    	echo"</select></p>";
    je sais pas si mon code t'auras aider
    tortue

Discussions similaires

  1. Cherche liste déroulante avec sélection d'item
    Par tafkap dans le forum Flex
    Réponses: 0
    Dernier message: 27/05/2010, 12h26
  2. liste déroulante multi-sélection
    Par caesar_tunisie dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2008, 12h17
  3. Réponses: 11
    Dernier message: 11/03/2008, 09h35
  4. Liste déroulante avec sélection multiple
    Par lbar012001 dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/11/2007, 09h44
  5. Mise à jour d'une liste déroulante après sélection d'une 1ère liste
    Par yodu29 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/06/2007, 15h49

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