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 :

Trois listes déroulantes liée (ça blocké sur la troisième)


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Par défaut Trois listes déroulantes liée (ça blocké sur la troisième)
    Bonjour tout le monde,

    j'ai un problème avec une application que je suis entrain de réaliser.
    dans cette application j'ai 3 champs qui pose problème.

    Pays / Ville / fournisseur (les 3 sont des listes déroulantes)

    j'ai lié Pays et ville mais ville fournisseur ne marche pas. j'ai tout essayé!

    voici les codes ....



    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
    <script>
    list = new Array();
    function Remplir(valeur){
        var sel="";
        sel ="<select size='1' name='souscat'>";
        // Parcourir le tableau
        for (var i=0;i<list.length;i++)
         {
         // tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
         if (list[i][1]==valeur)
         {
          if (list[i][3]==1)
          { ValeurSS="SELECTED";
          }
          else{
          ValeurSS="";
          }
             // Ajouter une rubrique sous-catégorie au variable SEL
             sel= sel + "<option "+ ValeurSS + " value="+list[i][0]+">"+list[i][2]+"</option>";
         }
     
         }
         sel =sel + "</select>";
         // Modifier le DIV scat par la nouvelle list à partir du variable SEL
         document.getElementById('scat').innerHTML=sel;
    }
    </script>
    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
    <td align="right"><div align="left"><font color="#FFFFFF">Pays :</font></div></td>
    		<td> 
                <select size="1" name="cat" OnChange="Remplir(cat.value)" style="width:262">
    <?php
    // Paramètres de la Connexion à la base MYSQL
    $user="root";
    $host="localhost";
    $password="";
    $database="trafic";
    $i=0; // variable de test
    $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
     
    $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
     
    mysql_select_db($database,$connexion);
     
    // Séléction de tous les enregistrements de la table Catégorie
    $rq="Select * from pays order by designation;";
    $result= mysql_query ($rq) or die ("Select impossible");
    	while ($dt=mysql_fetch_row($result))
    		{
    			// Remplir la liste déroulante des catégorie
    			echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
    				if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
    		}
    ?>
    </select><br><br>
            </td>
    	</tr>
    	<tr>
    		<td align="right"><div align="left"><font color="#FFFFFF">ville :</font> </div></td>
    		<td>
          <DIV id="scat">
    <select size="1" name="ville" style="width:262">
    </select>
    </DIV>
     <?php
     
     // Séléction de tous les enregistrements de la table Sous-Catégorie
    $rq="Select * from ville order by designation;";
    $result= mysql_query ($rq) or die ("Select impossible");
    // $i = initialise le variable i
    $i=0;
    while ($dt=mysql_fetch_row($result))
    {
    // Remplir le tableau (array) en javascript
    // ex : list[1]=new array (1,1,"Sous-catégorie 1");
    // ex : list[2]=new array (2,1,"Sous-catégorie 2");
    echo "<script>list[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[4]).");</script>";
    $i=$i+1; // Incrémentation de $i
    }
    echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
                                            // des sous-catégories en utilisant la valeur j
    ?>
    		</td>
            _____________________________________________________________________________________
    		<tr>  
    		<td align="right"><div align="left"><font color="#FFFFFF">Fournisseur :</font></div></td>
    		<td>
    			<select name="fournisseur" STYLE="width:262">
     
     
    			<?php
    			mysql_connect("localhost","root","");
    			mysql_select_db("trafic");
    			$fournissseur=mysql_query("select * from fournissseur");
    			while($code_fournissseur=mysql_fetch_array($fournissseur))
    			{
    			echo "<option>{$code_fournissseur['code_fournisseur']}/{$code_fournissseur['r_social']}</option>";
    			}
    			mysql_close();
    			?>
    			</select>
              <input name="nouveau_code2" type="button" style="color:red" value="Nouveau" onClick=""/>
              _____________________________________________________________________________________________________________ </td>

    merci pour votre aide ...

  2. #2
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    <script>
    C'est un script de quel type?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Par défaut
    JavaScript.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Par défaut
    Bonjour
    comme tu dis, pays,ville et fournisseur sont liés, alors, on peut avoir cette situation

    table pays(code_pays,nom_pays)
    table ville(code_ville,nom_ville,code_pays)
    table fournisseur(code_fournis,nom_fournis,code_ville,adresse).
    lorsque tu sélectionnes un pays, tu dois stocker le code du pays dans une variable exemple : $code_pays
    et mettre en place un système qui te permet de récupérer le code du pays par la méthode $_post ou autre.

    lorsque tu veux sélectionner une ville, alors, tu affiche dans ta liste seulement les villes qui ont comme du code du pays, la valeur stocke dans ta variable $code_pays ( where ville.code_pays="$code_pays"
    de ce fait tu auras les villes de ce pays, lorsque tu sélectionnes une ville alors, il te faut stocker la valeur dans une variable exemple: $code_ville.

    âpres, pour sélectionner un fournisseur,
    tu fais la même chose
    tu fais aussi une requête dans laquelle (where fournisseur.code_ville="$code_ville").

    Pour mieux continuer, il faut toujours essayé d’afficher la valeur du code de l’élément sélectionné, si tu n’as pas cela, il te sera difficile d’avoir un bon résultat.

  5. #5
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Aussi, si ton script (j'admets que je l'ai pas lu) suit bien ton algorithme je pense que tu devrais rajouter:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
        <script type="text/javascript">
    pour le javascript, enfin je pense.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Par défaut
    Citation Envoyé par kitcarson23 Voir le message
    ....

    je ne peux pas faire cela parce que tout les trois sont sur la même page et pour récupérer les valeurs la seule option c'est Javascript+ AJAX.


    je ne pense pas que le SCRIPT soit le problème parce que le scripte marche c'est juste la troisième liste qui ne se rempli pas.

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $fournissseur=mysql_query("select * from fournissseur");

    il faut que tu mets dns cette requette une condition where

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $fournissseur=mysql_query("select * from fournissseur where fournisseur.code_ville='la variable selectionné' ");

    en plus de cela, que veux tu faire avec cette ligne.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option>{$code_fournissseur['code_fournisseur']}/{$code_fournissseur['r_social']}</

    NB: si la liste n'est pas rempli c'est que , ta requête ne fonctionne pas bien, essaye de l'exécuter dans SQL sur phpmyadmin pour voir.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 72
    Par défaut
    salut,

    pour ton cas je procéderait de la façon suivante :

    lors de la sélection d'un pays, j’appellerais un Json qui ferait le travail de régénération du contenu du Select de Ville et lors du Select d'une ville, je relancerai un Json pour régénérer le contenu du Select fournisseur, car je pense que dans ton formulaire, on ne peut pas sélectionner un fournisseur sans ville, et on ne peux pas sélectionner une ville sans pays je me trompe ?

    donc le 1er Select est définit de façon classique, les 2 suivants sont définit en Json selon les choix faits dans le Select le précédent.

    Bon courage a toi

  9. #9
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Par défaut
    La logique que vous décrivez est celle que j'ai utilisé ... Maintenant il faut que je créé une fonction ramPlir2 pour remplir la troisième liste


    Regardez sur le forum une autre post que je viens de créer a propos de 2 listes déroulante liées. MERCI!!

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 211
    Par défaut
    la seule option c'est Javascript+ AJAX
    Je ne vois pas ton appel Ajax, ou le script qui est appelé.

    je ne pense pas que le SCRIPT soit le problème parce que le scripte marche
    Meme si ton probleme ne vient pas de la, ca ne coute rien de le mettre car ca cassera surement avec certains navigateurs.

    Maintenant il faut que je créé une fonction ramPlir2 pour remplir la troisième liste
    Non, rajoute l'event a ta fonction remplir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function remplir(e,valeur){
     var cible = e.target || e.srcElement;
     cible = cible.name;
     // et envoie cible a ton script Ajax, ou determine tes 2 listes en fonction du nom
     ...
    }
    Et appelle-la comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select onchange="remplir(event,this.value)"...

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/04/2011, 12h08
  2. trois listes déroulantes liées
    Par paolo2002 dans le forum IHM
    Réponses: 1
    Dernier message: 16/06/2009, 22h12
  3. Réponses: 8
    Dernier message: 27/07/2007, 10h49
  4. Listes déroulantes liées sur 1 seule table
    Par LionHell dans le forum IHM
    Réponses: 6
    Dernier message: 09/06/2007, 00h56
  5. Liste déroulante liées sur 3 niveau
    Par DaD92 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/12/2006, 23h48

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