Page 1 sur 2
3 listes attachées
Posté : 27 sept. 2011, 14:06
par xzena
bonjour ^^
voilà mon souci c'est que j'ai fait un exemple de selected au niveau de 3 listes!
cad: quand je sélectionne en champ région une , dans un champs ville (selected liste aussi)je veux trouvé que les villes appartenants à cette région (selon ma table). même chose veut fait pour les secteurs,sélectionner une ville et voir dans champs liste 'secteur' que SES secteurs.
j'espère c'est claire.. alors mon teste ça marché(juste la partie :sélectionner REGION et ses Villes s'affichent dans la liste ville)
ET c’était un code dévisé en 3 pages,alors je veux savoir la possibilité de les rassemblé en une seule page??
déja j'ai essayé mais ça pas marché!
je copie les 3 codes séparément ou l'essai où je l'ai rassemblé?
MERCI SI QUELQU'UN PEUT M'AIDER
Re: 3 listes attachées
Posté : 27 sept. 2011, 16:25
par Cyrano
Salut,
un
tuto complet est disponible ici.
Note : le tuto est basé sur deux listes, mais si tu lis attentivement et que tu en comprends le fonctionnement, tu ne devrais avoir aucune difficulté pour ajouter d'autres listes et travailler sur 3, 4, ... n listes. Mais je recommande vivement d'éviter de reprendre le code du tuto en copier/coller pour tenter d'adapter : ce n'est pas fait pour ça et il y a toujours des retours ici de quelques uns qui viennent dire qu'ils ont tenté d'adapter et que ça ne fonctionne pas. Ré-écris
ton propre code selon la méthode de ton choix, si à un moment donné tu bloques, la solution est dans le tuto et au pire si tu ne vois pas l'explication logique sur un point, alors viens l'exposer ici et il se trouvera bien quelqu'un(e) pour te remettre sur la route

Re: 3 listes attachées
Posté : 28 sept. 2011, 17:56
par xzena
re_salut,
ok merci beaucoup .c'est très utile ..je ferais mes tests ^^
Re: 3 listes attachées
Posté : 28 sept. 2011, 18:04
par xzena
Ah!juste tout en jetant un coup d’œil sur le lien,moi j’utilise là qu'une seule table.toi dans ton exemple c'était 2 tables..
ça reste la même méthode..?ou bien une grande différence..?
Re: 3 listes attachées
Posté : 28 sept. 2011, 18:31
par moogli
salut,
le principe reste le même
@+
Re: 3 listes attachées
Posté : 28 sept. 2011, 19:32
par Cyrano
Ah!juste tout en jetant un coup d’œil sur le lien,moi j’utilise là qu'une seule table.toi dans ton exemple c'était 2 tables..
ça reste la même méthode..?ou bien une grande différence..?
Le principe général est strictement le même : la question à se poser, c'est de se demander comment doivent être structurées tes données pour alimenter tes listes. Il te reste donc à adapter tes requêtes SQL en fonction de la réponse. Je suis parti sur deux tables, il aurait aussi bien pu y en avoir une seule ou une dizaine, ça n'a aucune espèce d'incidence du moment que la structure des données permet de construire la suite.
Re: 3 listes attachées
Posté : 29 sept. 2011, 16:40
par xzena
merci pour vos réponses ^^
Alors juste si vous pouvez me corriger ceci car au niveau d'Id je me suis trompé.:s
/* Requête SQL de récupération des données de la première liste */
$sql = "SELECT `id_region` AS idr, `region` ".
"FROM `region` ".
"ORDER BY `id_region`;";
alors puisque j'ai une seule table ,j'ai met ça :
/* Requête SQL de récupération des données de la première liste */
$sql = "SELECT `id_sec` AS idr, `region` ".
"FROM `secteur` ".
"ORDER BY `id_region`;";
**en deuxième fichier à ce niveau :
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id_departement`, `departement`".
" FROM `departement`".
" WHERE `id_region` = ". $idr ."".
" ORDER BY `id_departement`;";
j'ai adapté à ça :
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id_sec`, `secteur`".
" FROM `secteur`".
" WHERE `id_sec` = ". $idr ."".
" ORDER BY `secteur`;";
____
à noter que ma table secteur a l'id_sec.
voilà c'est au niveau de ces reqete oû je suis coincée .merci à vous.
Re: 3 listes attachées
Posté : 29 sept. 2011, 16:55
par Mazarini
Et si tu nous indiquais la structure de ta table ?
Re: 3 listes attachées
Posté : 29 sept. 2011, 19:10
par xzena
ok . la voilà :
-- Table structure for table `secteur`
--
CREATE TABLE IF NOT EXISTS `secteur` (
`id_sec` int(11) NOT NULL AUTO_INCREMENT,
`region` varchar(20) NOT NULL,
`code_region` varchar(30) NOT NULL,
`ville` varchar(20) NOT NULL,
`code_ville` varchar(2) NOT NULL,
`secteur` varchar(20) NOT NULL,
`code_secteur` varchar(2) NOT NULL,
`sous_secteur` varchar(20) NOT NULL,
`code_sous` int(11) NOT NULL,
`nom` varchar(20) NOT NULL,
`population_estime1` int(11) NOT NULL,
`population_estime2` int(11) NOT NULL,
`population_estime3` int(11) NOT NULL,
`population_estime4` int(11) NOT NULL,
PRIMARY KEY (`id_sec`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=397 ;
merci : )
Re: 3 listes attachées
Posté : 29 sept. 2011, 19:29
par Cyrano
Je vais te suggérer la piste pour que tu réalises toi-même ta requête, ce sera bien plus efficace pour toi. Pose-toi donc la question suivante : de quelles données as-tu besoin ? Il y a une réponse différente selon le moment du déroulement de ton code, donc, selon le cas, pose-toi ensuite : comment puis-je demander la liste de ces données à MySQL ?
Pour la première liste, c'est relativement facile, mais pour la seconde et la troisième, tu as besoin d'avoir un point de référence pour restreindre la liste que doit retourner MySQL : comment l'indiquer ?
Je te laisse faire le raisonnement, n'hésite pas à le poster ici et ajoute, le cas échéant, la requête correspondante

Re: 3 listes attachées
Posté : 03 oct. 2011, 13:35
par xzena
Re_Merci Chef Cyrano

alors j'ai fait mon test et j'ai arrivé jusqu'à afficher la liste des Villes (déjà 2 heures pour arrivé à ça

)
mai bon le problème c'est qu' il m'affiche pour chaque région une Seule ville (et non toutes les villes apprenantes)!!
d'autre part voilà la seule erreur qu'il m'affiche :
Code : Tout sélectionner
Notice: Undefined index: id_sec in C:\wamp\www\LOCALEMENT\departements.php on line 37
voilà la ligne 37:
**
Et pour bien préciser je vous dit que ces problème c'est parce que dans mes requêtes j'utilise qu'un seul ID donc
la liste m'affiche par ex: la ville x where id_sec= $idr (alors que idr c'est toujours le même id_sec puisque je suis sur la même table!)
voilà ma 2eme requête:
$sql2 = "SELECT `ville`".
" FROM `secteur`".
" WHERE `id_sec` = ". $idr ."".
" ORDER BY `ville`;";
alors que la 1ere c’était :
$sql = "SELECT `id_sec` AS idr, `region` ".
"FROM `secteur` ".
"ORDER BY `region`;";
voilà , j'espère vous m'avez compris et merci de m’aiguiller vers le solution encore plus ^^
Re: 3 listes attachées
Posté : 03 oct. 2011, 14:18
par Cyrano
Ok, tu approches, : puisque tu n'utilises qu'une seule table, ta clause WHERE ne sera pas toujours appropriée si elle pointe sur la clé primaire puisque, comme tu l'as constaté, ça limite le nombre de villes correspondantes à 1.
Mais lorsque tu as construit la première liste, tu as trouvé un élément qu'on retrouvera plusieurs fois, en fait une fois par ville correspondante. Donc, ta clause WHERE devrait être basée sur cet élément : est-ce que ça ne te semble pas d'une logique imparable ?

Re: 3 listes attachées
Posté : 03 oct. 2011, 17:51
par xzena
en faite vraiment.. je cherche de solution mais je sais pas comment traiter telle situation !vraiment

Re: 3 listes attachées
Posté : 03 oct. 2011, 18:43
par Cyrano
Fais donc voir tes requêtes.
Re: 3 listes attachées
Posté : 03 oct. 2011, 19:16
par xzena
ok Merci

voilà en 1er page .php
j'ai ça :
/* Requête SQL de récupération des régions de la première liste */
$sql = "SELECT `id_sec` AS idr, `region` ".
"FROM `secteur` ".
"ORDER BY `region`;";
pour le 2eme fichier villes.php ,j'ai :
/* Cération de la requête pour avoir les villes de cette région */
$sql2 = "SELECT `ville`".
" FROM `secteur`".
" WHERE `id_sec` = ". $idr ."".
" ORDER BY `ville`;";
plus loin:
/* On va mettre les numéros et noms des villes dans les deux tableaux */
while(false != ($ligne_dept = mysql_fetch_assoc($rech_dept)))
{
$code_dept[] = $ligne_dept['id_sec'];
$nom_dept[] = $ligne_dept['ville'];
$nd++;
}
$liste = "";
$liste .= '<select name="ville" id="id_sec">'."\n";
for($d = 0; $d < $nd; $d++)
{
$liste .= ' <option value="'. $code_dept[$d] .'">'. htmlentities($nom_dept[$d]) .' ('. $code_dept[$d] .')</option>'."\n";
}
$liste .= '</select>'."\n";
voilà! hmmmmm
