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 :

deux listes déroulantes liées


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut deux listes déroulantes liées
    j'ai deux listes déroulantes liées.

    pays / fournisseur

    comme suit

    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
    -- 
    -- Structure de la table `fournissseur`
    -- 
     
    CREATE TABLE `fournissseur` (
      `code_fournisseur` int(5) NOT NULL auto_increment,
      `r_social` varchar(40) NOT NULL default '',
      `addresse_fournisseur` varchar(60) NOT NULL default '',
      `u_m` varchar(10) NOT NULL default '',
      `tarif` varchar(10) NOT NULL default '',
      `avance` varchar(10) NOT NULL default '',
      `value_avance` varchar(10) NOT NULL default '',
      `ville` varchar(10) NOT NULL default '',
      `id_pays` int(5) NOT NULL default '0',
      PRIMARY KEY  (`code_fournisseur`),
      KEY `FK_fournissseur_1` (`id_pays`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=5 ;
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `pays`
    -- 
     
    CREATE TABLE `pays` (
      `id_pays` int(5) NOT NULL auto_increment,
      `designation` varchar(20) NOT NULL default '',
      `comment` varchar(20) NOT NULL default '',
      PRIMARY KEY  (`id_pays`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=3 ;
     
     
     
    -- 
    -- Contraintes pour la table `fournissseur`
    -- 
    ALTER TABLE `fournissseur`
      ADD CONSTRAINT `FK_fournissseur_1` FOREIGN KEY (`id_pays`) REFERENCES `pays` (`id_pays`);
    et puis un script JavaScript qui rempli la deuxième liste suite à la sélection d'un pays donné.

    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 language="javascript">
    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>

    et puis le morceau du code PHP qui fait tout ça ...

    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
    <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">fournisseur :</font> </div></td>
    		<td>
          <DIV id="scat">
    <select size="1" name="fournisseur" style="width:262">
    </select>
    </DIV>
     <?php
     
     // Séléction de tous les enregistrements de la table Sous-Catégorie
    $rq="Select * from fournissseur order by r_social;";
    $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[3]).",".($dt[4]).",".($dt[5]).",".($dt[6]).",".($dt[7]).",".($dt[8]).");</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>

    merci pour votre aide ... merci du fond du cœur ...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et quel est ton problème ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Et ben le problème c'est que la deuxième liste ne se rempli pas...

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Points : 76
    Points
    76
    Par défaut
    Bonjour
    comme tu as crée une table pour les pays, il sera mieux de créer une table pour les villes aussi, de ce fait tu n'aurais pas à saisir la même ville plusieurs fois,

    dans le code php
    // Séléction de tous les enregistrements de la table Catégorie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rq="Select * from pays order by designation;";
    il faut bien voir, tu utilise la table pays ou lieu de catégorie


    // Séléction de tous les enregistrements de la table Sous-Catégorie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rq="Select * from fournissseur order by r_social;";
    la aussi tu utilises la table fournisseur au lieu de la table sous-catégorie


    ou bien, je ne sais ce que dire les tables catégories, et sous-catégorie, par rapport à pays et fournisseur

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    bon je croix que le probleme vient de cette partie ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script>list[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[3]).",".($dt[4]).",".($dt[5]).",".($dt[6]).",".($dt[7]).",".($dt[8]).");</script>";
    parce que c'est la que la liste se remplie ... regardez dans le script et dite moi ce que les dt[X] fais


    aidez moi plz

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    J'ai pas regardé tes codes.
    Regarde ces liens


    Il y'a un tas dans le forum JS.

Discussions similaires

  1. gestion de Deux Listes Déroulantes liées entre elles
    Par sisiniya dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 09/06/2009, 14h53
  2. Réponses: 8
    Dernier message: 03/08/2008, 14h59
  3. Deux listes déroulantes liées ..
    Par wulfgar57 dans le forum IHM
    Réponses: 1
    Dernier message: 09/09/2007, 19h16
  4. Réponses: 12
    Dernier message: 08/02/2007, 11h59
  5. Plus de deux listes déroulantes liées
    Par Mateache dans le forum ASP
    Réponses: 2
    Dernier message: 23/08/2006, 12h00

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