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 14/12/2010, 12h16   #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 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 :
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 :
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 ...
elyakhlifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 12h36   #2
Débutant
 
Avatar de SonnyFab
 
Fabrice Sonny
Étudiant
Inscription : mai 2010
Messages : 483
Détails du profil
Informations personnelles :
Nom : Fabrice Sonny
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 483
Points : 165
Points : 165
Envoyer un message via Yahoo à SonnyFab
Citation:
<script>
C'est un script de quel type?
__________________
C'est quand tout semble perdu qu'il ne faut jamais abandonner...
SonnyFab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 12h37   #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
JavaScript.
elyakhlifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 14h53   #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 dis, pays,ville et fournisseur sont liés, alors, on peut avoir cette situation

Citation:
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.
kitcarson23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 15h09   #5
Débutant
 
Avatar de SonnyFab
 
Fabrice Sonny
Étudiant
Inscription : mai 2010
Messages : 483
Détails du profil
Informations personnelles :
Nom : Fabrice Sonny
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 483
Points : 165
Points : 165
Envoyer un message via Yahoo à SonnyFab
Aussi, si ton script (j'admets que je l'ai pas lu) suit bien ton algorithme je pense que tu devrais rajouter:
Code javascript :
    <script type="text/javascript">
pour le javascript, enfin je pense.
__________________
C'est quand tout semble perdu qu'il ne faut jamais abandonner...
SonnyFab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 16h56   #6
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
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.
elyakhlifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 11h46   #7
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 143
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 143
Points : 30
Points : 30
Code php :
$fournissseur=mysql_query("select * from fournissseur");

il faut que tu mets dns cette requette une condition where

Code php :
$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 :
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.
kitcarson23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 11h58   #8
Membre régulier
 
Laurent S.
Inscription : novembre 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Laurent S.
Âge : 25
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 71
Points : 77
Points : 77
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
larffas68 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 15/12/2010, 12h57   #9
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
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!!
elyakhlifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 13h36   #10
Membre actif
 
Inscription : octobre 2003
Messages : 211
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 211
Points : 153
Points : 153
Envoyer un message via MSN à nabab
Citation:
la seule option c'est Javascript+ AJAX
Je ne vois pas ton appel Ajax, ou le script qui est appelé.

Citation:
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.

Citation:
Maintenant il faut que je créé une fonction ramPlir2 pour remplir la troisième liste
Non, rajoute l'event a ta fonction remplir:
Code :
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 :
<select onchange="remplir(event,this.value)"...
nabab 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 01h20.


 
 
 
 
Partenaires

Hébergement Web