Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 00h07   #1
Invité de passage
 
Reda El Yakhlifi
Inscription : novembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Reda El Yakhlifi

Informations forums :
Inscription : novembre 2010
Messages : 19
Points : 1
Points : 1
Par défaut deux listes déroulantes liées

j'ai deux listes déroulantes liées.

pays / fournisseur

comme suit

Code :
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 :
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 :
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 ...
elyakhlifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 00h11   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Et quel est ton problème ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 12h52   #3
Invité de passage
 
Reda El Yakhlifi
Inscription : novembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Reda El Yakhlifi

Informations forums :
Inscription : novembre 2010
Messages : 19
Points : 1
Points : 1
Et ben le problème c'est que la deuxième liste ne se rempli pas...
elyakhlifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 18h12   #4
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 143
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 143
Points : 30
Points : 30
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 :
$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 :
$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
kitcarson23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h57   #5
Invité de passage
 
Reda El Yakhlifi
Inscription : novembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Reda El Yakhlifi

Informations forums :
Inscription : novembre 2010
Messages : 19
Points : 1
Points : 1
bon je croix que le probleme vient de cette partie ...


Code :
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
elyakhlifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 08h20   #6
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
J'ai pas regardé tes codes.
Regarde ces liens
Il y'a un tas dans le forum JS.
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h09.


 
 
 
 
Partenaires

Hébergement Web