3 listes attachées

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : 3 listes attachées

Re: 3 listes attachées

par Cyrano » 04 oct. 2011, 18:57

Ben tu as posté un bout de code un peu plus tôt et j'en ai extrait ceci :
<?pjp
//...
    $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";
Il y a là deux éléments importants : l'identifiant de la liste, donc ici « ville » et le second, c'est ce qui va dans l'attribut value de la balise option.

La première liste devrait avoir pour name et id « region » et non ville, et les options devraient donc avoir la valeur correspondant au nom de chaque région (et afficher la même chose bien sûr)

Ensuite, ben tu récupères dans $_POST['region'] et tu auras la valeur à insérer dans ta requête SQL. Là, la liste des villes ou des secteurs selon à quelle phas on en est va être récupérée et tu reconstruis les listes en mettant à jour la nouvelle.

Re: 3 listes attachées

par xzena » 04 oct. 2011, 18:50

ah le nom oui mais au niveau de code je vais pas lui dire :
Seelct ville from secteur where region = region !!
il faut quand même récupérer la valeur de région sélectionnée et "comment" c'est ça mon problème depuis le début...
Désolé pour le casse tète chef ^^'

Re: 3 listes attachées

par Cyrano » 04 oct. 2011, 18:39

Son nom, tout simplement. Mais ça veut aussi dire que dans ta liste d'options, tu n'utilises peut-être pas la bonne donnée dans l'attribut value et il ne faut pas forcément y utiliser la valeur de la clé primaire parce que ce dont du as besoin pour la recherche qui va alimenter la liste suivante, c'est le nom de la région, la clé primaire identifiant la plus petite subdivision du découpage géographique utilisé.

Re: 3 listes attachées

par xzena » 04 oct. 2011, 18:36

excuser moi :mrgreen:
sinon vraiment je sais pas comment indiquer ce qui est sélectionné! :-k
:( :-| :-|

Re: 3 listes attachées

par Cyrano » 04 oct. 2011, 18:27

Peut-être bien que tu ne vois pas parce que c'est finalement trop gros pour être vu ;) Qu'est-ce qui identifie une région en l'occurrence ici ? Ne cherche pas midi à quatorze heures, c'est simplissime :)

Re: 3 listes attachées

par xzena » 04 oct. 2011, 18:21

re_merci pour votre attention.
alors ma requête en langage humain c'est:
Afficher moi les villes qui appartiennent à cette région sélectionnée.

en langage SQL ça va être :
select ville from secteur where region="ce qui est selectionné";

le problème d'id se cache jusqu'à maintenant ^^

Re: 3 listes attachées

par Cyrano » 03 oct. 2011, 19:21

Mouais : autant la première requête est logique, autant la seconde l'est beaucoup moins : ta colonne id_sec est une clé primaire je présume, donc ne peut s'y rattacher qu'une seule ligne.

Il va falloir faire une auto jointure ou alors une sous-requête : essaye de formuler la question pour obtenir cette seconde liste, en français d'abord, on traduira en SQL après.

Re: 3 listes attachées

par xzena » 03 oct. 2011, 19:16

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 :?

Re: 3 listes attachées

par Cyrano » 03 oct. 2011, 18:43

Fais donc voir tes requêtes.

Re: 3 listes attachées

par xzena » 03 oct. 2011, 17:51

en faite vraiment.. je cherche de solution mais je sais pas comment traiter telle situation !vraiment :(

Re: 3 listes attachées

par Cyrano » 03 oct. 2011, 14:18

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

par xzena » 03 oct. 2011, 13:35

Re_Merci Chef Cyrano :D
alors j'ai fait mon test et j'ai arrivé jusqu'à afficher la liste des Villes (déjà 2 heures pour arrivé à ça :mrgreen: )
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:

Code : Tout sélectionner

$code_dept[] = $ligne_dept['id_sec'];
**
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

par Cyrano » 29 sept. 2011, 19:29

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

par xzena » 29 sept. 2011, 19:10

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

par Mazarini » 29 sept. 2011, 16:55

Et si tu nous indiquais la structure de ta table ?