Listes déroulantes dynamiques inter-dépendantes

Mammouth du PHP | 19672 Messages

25 sept. 2005, 16:34

Ça m'avance bien :-k Tu peux me mettre la structure ici ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

arentx
Invité n'ayant pas de compte PHPfrance

25 sept. 2005, 16:35

voila mon sql

Code : Tout sélectionner

-- -- Base de données: `regions` -- -- -------------------------------------------------------- -- -- Structure de la table `region` -- CREATE TABLE `region` ( `id_region` tinyint(4) NOT NULL auto_increment, `region` varchar(50) NOT NULL default '', PRIMARY KEY (`id_region`) ); -- -------------------------------------------------------- -- -- Structure de la table `departement` -- CREATE TABLE `departement` ( `id_departement` char(2) NOT NULL default '', `departement` varchar(50) NOT NULL default '', `id_region` tinyint(4) NOT NULL default '0', PRIMARY KEY (`id_departement`), KEY `id_region` (`id_region`) ); -- -------------------------------------------------------- -- -- Structure de la table `ville` -- CREATE TABLE `ville` ( `id_ville` char(2) NOT NULL default '', `ville` varchar(50) NOT NULL default '', `id_departement` tinyint(4) NOT NULL default '0', PRIMARY KEY (`id_ville`), KEY `id_region` (`id_departement`) ); -- -------------------------------------------------------- -- -- Contenu de la table `region` -- INSERT INTO `region` VALUES (1, 'Alsace'); INSERT INTO `region` VALUES (2, 'Aquitaine'); INSERT INTO `region` VALUES (3, 'Auvergne'); INSERT INTO `region` VALUES (4, 'Basse-Normandie'); INSERT INTO `region` VALUES (5, 'Bourgogne'); INSERT INTO `region` VALUES (6, 'Bretagne'); INSERT INTO `region` VALUES (7, 'Centre'); INSERT INTO `region` VALUES (8, 'Champagne'); INSERT INTO `region` VALUES (9, 'Corse'); INSERT INTO `region` VALUES (10, 'Franche-Comté'); INSERT INTO `region` VALUES (11, 'Haute-Normandie'); INSERT INTO `region` VALUES (12, 'Île-de-France'); INSERT INTO `region` VALUES (13, 'Languedoc-Roussillon'); INSERT INTO `region` VALUES (14, 'Limousin'); INSERT INTO `region` VALUES (15, 'Lorraine'); INSERT INTO `region` VALUES (16, 'Midi-Pyrénées'); INSERT INTO `region` VALUES (17, 'Nord-pas-de-Calais'); INSERT INTO `region` VALUES (18, 'Pays de la Loire'); INSERT INTO `region` VALUES (19, 'Picardie'); INSERT INTO `region` VALUES (20, 'Poitou-Charentes'); INSERT INTO `region` VALUES (21, 'Provence-Alpes-Côte-d\'Azur'); INSERT INTO `region` VALUES (22, 'Rhône-Alpes'); -- -- Contenu de la table `departement` -- INSERT INTO `departement` VALUES ('01', 'Ain', 22); INSERT INTO `departement` VALUES ('02', 'Aisne', 19); INSERT INTO `departement` VALUES ('03', 'Allier', 3); INSERT INTO `departement` VALUES ('04', 'Alpes-de-Haute-Provence', 21); INSERT INTO `departement` VALUES ('05', 'Hautes-Alpes', 21); INSERT INTO `departement` VALUES ('06', 'Alpes-Maritimes', 21); INSERT INTO `departement` VALUES ('07', 'Ardèche', 22); INSERT INTO `departement` VALUES ('08', 'Ardennes', 8); INSERT INTO `departement` VALUES ('09', 'Ariège', 16); INSERT INTO `departement` VALUES ('10', 'Aube', 8); INSERT INTO `departement` VALUES ('11', 'Aude', 13); INSERT INTO `departement` VALUES ('12', 'Aveyron', 16); INSERT INTO `departement` VALUES ('13', 'Bouches-du-Rhône', 21); INSERT INTO `departement` VALUES ('14', 'Calvados', 4); INSERT INTO `departement` VALUES ('15', 'Cantal', 3); INSERT INTO `departement` VALUES ('16', 'Charente', 20); INSERT INTO `departement` VALUES ('17', 'Charente-Maritime', 20); INSERT INTO `departement` VALUES ('18', 'Cher', 7); INSERT INTO `departement` VALUES ('19', 'Corrèze', 14); INSERT INTO `departement` VALUES ('2A', 'Corse-du-Sud', 9); INSERT INTO `departement` VALUES ('2B', 'Haute-Corse', 9); INSERT INTO `departement` VALUES ('21', 'Côte-d\'Or', 5); INSERT INTO `departement` VALUES ('22', 'Côtes-d\'Armor', 6); INSERT INTO `departement` VALUES ('23', 'Creuse', 14); INSERT INTO `departement` VALUES ('24', 'Dordogne', 2); INSERT INTO `departement` VALUES ('25', 'Doubs', 10); INSERT INTO `departement` VALUES ('26', 'Drôme', 22); INSERT INTO `departement` VALUES ('27', 'Eure', 11); INSERT INTO `departement` VALUES ('28', 'Eure-et-Loir', 7); INSERT INTO `departement` VALUES ('29', 'Finistère', 6); INSERT INTO `departement` VALUES ('30', 'Gard', 13); INSERT INTO `departement` VALUES ('31', 'Haute-Garonne', 16); INSERT INTO `departement` VALUES ('32', 'Gers', 16); INSERT INTO `departement` VALUES ('33', 'Gironde', 2); INSERT INTO `departement` VALUES ('34', 'Hérault', 13); INSERT INTO `departement` VALUES ('35', 'Ille-et-Vilaine', 6); INSERT INTO `departement` VALUES ('36', 'Indre', 7); INSERT INTO `departement` VALUES ('37', 'Indre-et-Loire', 7); INSERT INTO `departement` VALUES ('38', 'Isère', 22); INSERT INTO `departement` VALUES ('39', 'Jura', 10); INSERT INTO `departement` VALUES ('40', 'Landes', 2); INSERT INTO `departement` VALUES ('41', 'Loir-et-Cher', 7); INSERT INTO `departement` VALUES ('42', 'Loire', 22); INSERT INTO `departement` VALUES ('43', 'Haute-Loire', 3); INSERT INTO `departement` VALUES ('44', 'Loire-Atlantique', 18); INSERT INTO `departement` VALUES ('45', 'Loiret', 7); INSERT INTO `departement` VALUES ('46', 'Lot', 16); INSERT INTO `departement` VALUES ('47', 'Lot-et-Garonne', 2); INSERT INTO `departement` VALUES ('48', 'Lozère', 13); INSERT INTO `departement` VALUES ('49', 'Maine-et-Loire', 18); INSERT INTO `departement` VALUES ('50', 'Manche', 4); INSERT INTO `departement` VALUES ('51', 'Marne', 8); INSERT INTO `departement` VALUES ('52', 'Haute-Marne', 8); INSERT INTO `departement` VALUES ('53', 'Mayenne', 18); INSERT INTO `departement` VALUES ('54', 'Meurthe-et-Moselle', 15); INSERT INTO `departement` VALUES ('55', 'Meuse', 15); INSERT INTO `departement` VALUES ('56', 'Morbihan', 6); INSERT INTO `departement` VALUES ('57', 'Moselle', 15); INSERT INTO `departement` VALUES ('58', 'Nièvre', 5); INSERT INTO `departement` VALUES ('59', 'Nord', 17); INSERT INTO `departement` VALUES ('60', 'Oise', 19); INSERT INTO `departement` VALUES ('61', 'Orne', 4); INSERT INTO `departement` VALUES ('62', 'Pas-de-Calais', 17); INSERT INTO `departement` VALUES ('63', 'Puy-de-Dôme', 3); INSERT INTO `departement` VALUES ('64', 'Pyrénées-Atlantiques', 2); INSERT INTO `departement` VALUES ('65', 'Hautes-Pyrénées', 16); INSERT INTO `departement` VALUES ('66', 'Pyrénées-Orientales', 13); INSERT INTO `departement` VALUES ('67', 'Bas-Rhin', 1); INSERT INTO `departement` VALUES ('68', 'Haut-Rhin', 1); INSERT INTO `departement` VALUES ('69', 'Rhône', 22); INSERT INTO `departement` VALUES ('70', 'Haute-Saône', 10); INSERT INTO `departement` VALUES ('71', 'Saône-et-Loire', 5); INSERT INTO `departement` VALUES ('72', 'Sarthe', 18); INSERT INTO `departement` VALUES ('73', 'Savoie', 22); INSERT INTO `departement` VALUES ('74', 'Haute-Savoie', 22); INSERT INTO `departement` VALUES ('75', 'Paris', 12); INSERT INTO `departement` VALUES ('76', 'Seine-Maritime', 11); INSERT INTO `departement` VALUES ('77', 'Seine-et-Marne', 12); INSERT INTO `departement` VALUES ('78', 'Yvelines', 12); INSERT INTO `departement` VALUES ('79', 'Deux-Sèvres', 20); INSERT INTO `departement` VALUES ('80', 'Somme', 19); INSERT INTO `departement` VALUES ('81', 'Tarn', 16); INSERT INTO `departement` VALUES ('82', 'Tarn-et-Garonne', 16); INSERT INTO `departement` VALUES ('83', 'Var', 21); INSERT INTO `departement` VALUES ('84', 'Vaucluse', 21); INSERT INTO `departement` VALUES ('85', 'Vendée', 18); INSERT INTO `departement` VALUES ('86', 'Vienne', 20); INSERT INTO `departement` VALUES ('87', 'Haute-Vienne', 14); INSERT INTO `departement` VALUES ('88', 'Vosges', 15); INSERT INTO `departement` VALUES ('89', 'Yonne', 5); INSERT INTO `departement` VALUES ('90', 'Territoire de Belfort', 10); INSERT INTO `departement` VALUES ('91', 'Essonne', 12); INSERT INTO `departement` VALUES ('92', 'Hauts-de-Seine', 12); INSERT INTO `departement` VALUES ('93', 'Seine-Saint-Denis', 12); INSERT INTO `departement` VALUES ('94', 'Val-de-Marne', 12); INSERT INTO `departement` VALUES ('95', 'Val-d\'Oise', 12); -- -- Contenu de la table `ville` -- INSERT INTO `ville` VALUES ('01', 'ville1', 01); INSERT INTO `ville` VALUES ('02', 'ville2', 02);

arentx
Invité n'ayant pas de compte PHPfrance

25 sept. 2005, 16:39

Au fait tu cherche toujours du travail ??

si oui

Jean-Marc GAIGNARD directeur.
CV et lettre de motivation à [email protected]

au mois daout il cherchait quelqu'un pour dev du php

Mammouth du PHP | 19672 Messages

25 sept. 2005, 16:44

Merci pour le tuyau boulot, je note.

Bon, pour la structure des départements et régions, pas de problème,je la connais. mais ce que j'auraqis voulu,c'est la structure de la table villes : quelque chose ressemblant à:

Code : Tout sélectionner

+-------------------------+ | villes | +-----------+----------+--+ |ville_id |INT |PK| |ville_nom |VA(32) | | +-------------------------+
Et là, il manque des champs : tu as mis quoi avec quel type de données ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

arentx
Invité n'ayant pas de compte PHPfrance

25 sept. 2005, 16:47

ben ca je sais pas faire .... :oops:

je voulais rajouter le nombre d habitant, le maire, etc ...

arentx
Invité n'ayant pas de compte PHPfrance

25 sept. 2005, 16:53

voila je pense faire comme ca

Code : Tout sélectionner

# phpMyAdmin MySQL-Dump # version 2.2.6 # http://phpwizard.net/phpMyAdmin/ # http://www.phpmyadmin.net/ (download page) # # Serveur: localhost # Généré le : Dimanche 25 Septembre 2005 à 16:54 # Version du serveur: 3.23.49 # Version de PHP: 4.2.0 # Base de données: `xavier` # -------------------------------------------------------- # # Structure de la table `departement` # CREATE TABLE departement ( id_departement char(2) NOT NULL default '', departement varchar(50) NOT NULL default '', id_region tinyint(4) NOT NULL default '0', PRIMARY KEY (id_departement), KEY id_region (id_region) ) TYPE=MyISAM; # # Contenu de la table `departement` # INSERT INTO departement VALUES ('01', 'Ain', 22); INSERT INTO departement VALUES ('02', 'Aisne', 19); INSERT INTO departement VALUES ('03', 'Allier', 3); INSERT INTO departement VALUES ('04', 'Alpes-de-Haute-Provence', 21); INSERT INTO departement VALUES ('05', 'Hautes-Alpes', 21); INSERT INTO departement VALUES ('06', 'Alpes-Maritimes', 21); INSERT INTO departement VALUES ('07', 'Ardèche', 22); INSERT INTO departement VALUES ('08', 'Ardennes', 8); INSERT INTO departement VALUES ('09', 'Ariège', 16); INSERT INTO departement VALUES ('10', 'Aube', 8); INSERT INTO departement VALUES ('11', 'Aude', 13); INSERT INTO departement VALUES ('12', 'Aveyron', 16); INSERT INTO departement VALUES ('13', 'Bouches-du-Rhône', 21); INSERT INTO departement VALUES ('14', 'Calvados', 4); INSERT INTO departement VALUES ('15', 'Cantal', 3); INSERT INTO departement VALUES ('16', 'Charente', 20); INSERT INTO departement VALUES ('17', 'Charente-Maritime', 20); INSERT INTO departement VALUES ('18', 'Cher', 7); INSERT INTO departement VALUES ('19', 'Corrèze', 14); INSERT INTO departement VALUES ('2A', 'Corse-du-Sud', 9); INSERT INTO departement VALUES ('2B', 'Haute-Corse', 9); INSERT INTO departement VALUES ('21', 'Côte-d\'Or', 5); INSERT INTO departement VALUES ('22', 'Côtes-d\'Armor', 6); INSERT INTO departement VALUES ('23', 'Creuse', 14); INSERT INTO departement VALUES ('24', 'Dordogne', 2); INSERT INTO departement VALUES ('25', 'Doubs', 10); INSERT INTO departement VALUES ('26', 'Drôme', 22); INSERT INTO departement VALUES ('27', 'Eure', 11); INSERT INTO departement VALUES ('28', 'Eure-et-Loir', 7); INSERT INTO departement VALUES ('29', 'Finistère', 6); INSERT INTO departement VALUES ('30', 'Gard', 13); INSERT INTO departement VALUES ('31', 'Haute-Garonne', 16); INSERT INTO departement VALUES ('32', 'Gers', 16); INSERT INTO departement VALUES ('33', 'Gironde', 2); INSERT INTO departement VALUES ('34', 'Hérault', 13); INSERT INTO departement VALUES ('35', 'Ille-et-Vilaine', 6); INSERT INTO departement VALUES ('36', 'Indre', 7); INSERT INTO departement VALUES ('37', 'Indre-et-Loire', 7); INSERT INTO departement VALUES ('38', 'Isère', 22); INSERT INTO departement VALUES ('39', 'Jura', 10); INSERT INTO departement VALUES ('40', 'Landes', 2); INSERT INTO departement VALUES ('41', 'Loir-et-Cher', 7); INSERT INTO departement VALUES ('42', 'Loire', 22); INSERT INTO departement VALUES ('43', 'Haute-Loire', 3); INSERT INTO departement VALUES ('44', 'Loire-Atlantique', 18); INSERT INTO departement VALUES ('45', 'Loiret', 7); INSERT INTO departement VALUES ('46', 'Lot', 16); INSERT INTO departement VALUES ('47', 'Lot-et-Garonne', 2); INSERT INTO departement VALUES ('48', 'Lozère', 13); INSERT INTO departement VALUES ('49', 'Maine-et-Loire', 18); INSERT INTO departement VALUES ('50', 'Manche', 4); INSERT INTO departement VALUES ('51', 'Marne', 8); INSERT INTO departement VALUES ('52', 'Haute-Marne', 8); INSERT INTO departement VALUES ('53', 'Mayenne', 18); INSERT INTO departement VALUES ('54', 'Meurthe-et-Moselle', 15); INSERT INTO departement VALUES ('55', 'Meuse', 15); INSERT INTO departement VALUES ('56', 'Morbihan', 6); INSERT INTO departement VALUES ('57', 'Moselle', 15); INSERT INTO departement VALUES ('58', 'Nièvre', 5); INSERT INTO departement VALUES ('59', 'Nord', 17); INSERT INTO departement VALUES ('60', 'Oise', 19); INSERT INTO departement VALUES ('61', 'Orne', 4); INSERT INTO departement VALUES ('62', 'Pas-de-Calais', 17); INSERT INTO departement VALUES ('63', 'Puy-de-Dôme', 3); INSERT INTO departement VALUES ('64', 'Pyrénées-Atlantiques', 2); INSERT INTO departement VALUES ('65', 'Hautes-Pyrénées', 16); INSERT INTO departement VALUES ('66', 'Pyrénées-Orientales', 13); INSERT INTO departement VALUES ('67', 'Bas-Rhin', 1); INSERT INTO departement VALUES ('68', 'Haut-Rhin', 1); INSERT INTO departement VALUES ('69', 'Rhône', 22); INSERT INTO departement VALUES ('70', 'Haute-Saône', 10); INSERT INTO departement VALUES ('71', 'Saône-et-Loire', 5); INSERT INTO departement VALUES ('72', 'Sarthe', 18); INSERT INTO departement VALUES ('73', 'Savoie', 22); INSERT INTO departement VALUES ('74', 'Haute-Savoie', 22); INSERT INTO departement VALUES ('75', 'Paris', 12); INSERT INTO departement VALUES ('76', 'Seine-Maritime', 11); INSERT INTO departement VALUES ('77', 'Seine-et-Marne', 12); INSERT INTO departement VALUES ('78', 'Yvelines', 12); INSERT INTO departement VALUES ('79', 'Deux-Sèvres', 20); INSERT INTO departement VALUES ('80', 'Somme', 19); INSERT INTO departement VALUES ('81', 'Tarn', 16); INSERT INTO departement VALUES ('82', 'Tarn-et-Garonne', 16); INSERT INTO departement VALUES ('83', 'Var', 21); INSERT INTO departement VALUES ('84', 'Vaucluse', 21); INSERT INTO departement VALUES ('85', 'Vendée', 18); INSERT INTO departement VALUES ('86', 'Vienne', 20); INSERT INTO departement VALUES ('87', 'Haute-Vienne', 14); INSERT INTO departement VALUES ('88', 'Vosges', 15); INSERT INTO departement VALUES ('89', 'Yonne', 5); INSERT INTO departement VALUES ('90', 'Territoire de Belfort', 10); INSERT INTO departement VALUES ('91', 'Essonne', 12); INSERT INTO departement VALUES ('92', 'Hauts-de-Seine', 12); INSERT INTO departement VALUES ('93', 'Seine-Saint-Denis', 12); INSERT INTO departement VALUES ('94', 'Val-de-Marne', 12); INSERT INTO departement VALUES ('95', 'Val-d\'Oise', 12); # -------------------------------------------------------- # # Structure de la table `region` # CREATE TABLE region ( id_region tinyint(4) NOT NULL auto_increment, region varchar(50) NOT NULL default '', PRIMARY KEY (id_region) ) TYPE=MyISAM; # # Contenu de la table `region` # INSERT INTO region VALUES (1, 'Alsace'); INSERT INTO region VALUES (2, 'Aquitaine'); INSERT INTO region VALUES (3, 'Auvergne'); INSERT INTO region VALUES (4, 'Basse-Normandie'); INSERT INTO region VALUES (5, 'Bourgogne'); INSERT INTO region VALUES (6, 'Bretagne'); INSERT INTO region VALUES (7, 'Centre'); INSERT INTO region VALUES (8, 'Champagne'); INSERT INTO region VALUES (9, 'Corse'); INSERT INTO region VALUES (10, 'Franche-Comté'); INSERT INTO region VALUES (11, 'Haute-Normandie'); INSERT INTO region VALUES (12, 'Île-de-France'); INSERT INTO region VALUES (13, 'Languedoc-Roussillon'); INSERT INTO region VALUES (14, 'Limousin'); INSERT INTO region VALUES (15, 'Lorraine'); INSERT INTO region VALUES (16, 'Midi-Pyrénées'); INSERT INTO region VALUES (17, 'Nord-pas-de-Calais'); INSERT INTO region VALUES (18, 'Pays de la Loire'); INSERT INTO region VALUES (19, 'Picardie'); INSERT INTO region VALUES (20, 'Poitou-Charentes'); INSERT INTO region VALUES (21, 'Provence-Alpes-Côte-d\'Azur'); INSERT INTO region VALUES (22, 'Rhône-Alpes'); # -------------------------------------------------------- # # Structure de la table `ville` # CREATE TABLE ville ( id_ville char(2) NOT NULL default '', ville varchar(50) NOT NULL default '', id_departement tinyint(4) NOT NULL default '0', habitant text, maire text, PRIMARY KEY (id_ville), KEY id_region (id_departement), FULLTEXT KEY habitant (habitant), FULLTEXT KEY maire (maire) ) TYPE=MyISAM; # # Contenu de la table `ville` # INSERT INTO ville VALUES ('01', 'ville1', 1, NULL, NULL); INSERT INTO ville VALUES ('02', 'ville2', 2, NULL, NULL);

Mammouth du PHP | 19672 Messages

25 sept. 2005, 16:57

Ok, alors la troisième liste sera effectuée sur une requête dont le paramètre variable sera l'identifiant du département et non de la région : donc ce n'est pas $idr que tu dois insérer dans la requête mais une nouvelle variable à définir $idd par exemple correspondant à la clé primaire du département.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

25 sept. 2005, 17:04

comprends pas ?

en plus il ne me met pas "--- choisissez departement ---"

Mammouth du PHP | 19672 Messages

25 sept. 2005, 17:11

Bon, comprends bien le principe de base. Quand tu affiches la page, tu as seulement la liste des régions. Tu sélectionnes une région et tu envoies. Au rechargement, le script intercepte le click sur le bouton d'envoi et récupère la valeur sélectionnée : avec cette valeur, la requête pour lister les départements va être créée et la liste des départements de la région choisie va être générée puis affichée.

Si tu as bien compris ce principe, alors tu as compris comment faire pour la ville. Tu te retrouves avec un formulaire comportant deux listes : la région et le département. En sélectionnant le département, le même processus va se dérouler et l'évènement va être intercepté pour générer la requête pour lister les villes du département sélectionné.

Est-ce que ça va jusque là ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

25 sept. 2005, 17:19

alors si je comprends bien il faut que je modifie ca

Code : Tout sélectionner

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept"> <fieldset style="border: 3px double #333399"> <legend>Sélectionnez une région</legend> <select name="region" id="region" onchange="document.forms['chgdept'].submit();"> <option value="-1">- - - Choisissez une région - - -</option> <?php for($i = 0; $i < $nb_regions; $i++) { ?> <option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]); ?></option> <?php } ?> </select> <?php mysql_free_result($rech_regions); /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */ if(isset($idr) && $idr != -1) { /* 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`;"; if($connexion != false) { $rech_dept = mysql_query($sql2, $connexion); /* Un petit compteur pour les départements */ $nd = 0; /* On crée deux tableaux pour les numéros et les noms des départements */ $code_dept = array(); $nom_dept = array(); /* On va mettre les numéros et noms des départements dans les deux tableaux */ while($ligne_dept = mysql_fetch_assoc($rech_dept)) { array_push($code_dept, $ligne_dept['id_departement']); array_push($nom_dept, $ligne_dept['departement']); $nd++; } /* Maintenant on peut construire la liste déroulante */ ?> <select name="departement" id="departement"> <?php for($d = 0; $d<$nd; $d++) { ?> <option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option> <?php } ?> </select> <?php } /* Un petit coup de balai */ mysql_free_result($rech_dept); } ?> <br /><input type="submit" name="ok" id="ok" value="Envoyer" /> </fieldset> </form>
en remplacant les "regions" par "departement" et les "depatement" "dept" par "ville" "vil"

c'est ca ?

Mammouth du PHP | 19672 Messages

25 sept. 2005, 17:35

Tu ne remplaces rien du tout: tu dois ajouter des structures de contrôle et insérer un nouveau code de ce style pour rechercher les villes, mais en te basant non sur l'id de la région mais celui du département sélectionné.

Sommairement en pseudo-code :

Code : Tout sélectionner

Si le bouton envoi a été cliqué { Si un département a été sélectionné { Affichage formulaire Région + Départements + Ville } Sinon { affichage du formulaire Régions + Département correspondants } } Sinon { affichage du formulaire régions seulement }
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

25 sept. 2005, 18:08

alors je recommence comme ca ...

Code : Tout sélectionner

<?php echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ $serveur = "localhost"; $admin = "root"; $mdp = ""; $base = "xavier"; /* On récupère si elle existe la valeur de la région envoyée par le formulaire */ $idr = isset($_POST['region'])?$_POST['region']:null; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> <title>Sélectionner un département selon la région choisie</title> <meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" /> <meta name="keywords" content="" /> <meta name="author" content="Cyrano" /> <meta name="generator" content="Zend Studio Environnement et WebExpert 5" /> <meta http-equiv="imagetoolbar" content="no" /> <meta http-equiv="Pragma" content="no-cache" /> </head> <body style="font-family: verdana, helvetica, sans-serif; font-size: 85%"> <h3>Version 100% PHP</h3> <p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p> <?php if(isset($_POST['ok']) && isset($_POST['departement']) && $_POST['departement'] != "") { $region_selectionnee = $_POST['region']; $dept_selectionne = $_POST['departement']; ?> <p>Vous avez sélectionné le département <?php echo($dept_selectionne); ?> dans la région <?php echo($region_selectionnee); ?></p> <?php } ?> <h3>Trouver un département</h3> <?php /* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect() * car on aura besoin de la connexion un peu plus loin dans le script */ $connexion = mysql_pconnect($serveur, $admin, $mdp); if($connexion != false) { $choixbase = mysql_select_db($base, $connexion); $sql1 = "SELECT `id_region`, `region`". " FROM `region`". " ORDER BY `id_region`"; $rech_regions = mysql_query($sql1); $code_region = array(); $region = array(); /* On active un compteur pour les régions */ $nb_regions = 0; if($rech_regions != false) { while($ligne = mysql_fetch_assoc($rech_regions)) { array_push($code_region, $ligne['id_region']); array_push($region, $ligne['region']); /* On incrémente de compteur */ $nb_regions++; } } ?> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept"> <fieldset style="border: 3px double #333399"> <legend>Sélectionnez une région</legend> <select name="region" id="region" onchange="document.forms['chgdept'].submit();"> <option value="-1">- - - Choisissez une région - - -</option> <?php for($i = 0; $i < $nb_regions; $i++) { ?> <option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]); ?></option> <?php } ?> </select> <?php mysql_free_result($rech_regions); /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */ if(isset($idr) && $idr != -1) { /* 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`;"; if($connexion != false) { $rech_dept = mysql_query($sql2, $connexion); /* Un petit compteur pour les départements */ $nd = 0; /* On crée deux tableaux pour les numéros et les noms des départements */ $code_dept = array(); $nom_dept = array(); /* On va mettre les numéros et noms des départements dans les deux tableaux */ while($ligne_dept = mysql_fetch_assoc($rech_dept)) { array_push($code_dept, $ligne_dept['id_departement']); array_push($nom_dept, $ligne_dept['departement']); $nd++; } /* Maintenant on peut construire la liste déroulante */ ?> <select name="departement" id="departement" onchange="document.forms['chgville'].submit();"> <option value="-1">- - - Choisissez un d&eacute;partement - - -</option> <option value="<?php echo($code_dept[$d]); ?>"><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option> <?php for($d = 0; $d<$nd; $d++) { ?> <?php } ?> </select> <?php } /* Un petit coup de balai */ mysql_free_result($rech_dept); } ?> <br /><input type="submit" name="ok" id="ok" value="Envoyer" /> </fieldset> </form> <?php /* Terminé, on ferme la connexion */ mysql_close($connexion); } else { /* Si on arrive là, c'est pas bon signe, il faut vérifier les * paramètres de connexion, mot de passe, serveur pas démarré etc... */ ?> <p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p> <?php } ?> <p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p> </body> </html>
mais maintenant il ne m affiche plus les departement :(

Mammouth du PHP | 19672 Messages

25 sept. 2005, 18:51

D'abord, je ne vois nulle part le code permettant de rajouter une liste des villes. Ensuite tu travailles à l'envers. Commence donc par te faire une maquette 100% html de ce que tu veux obtenir, éventuellement en te basant sur la source de mon code. Quand tu auras ça, tu auras les éléments nécessaires pour un découpage logique, c'est à dire que tu auras chaque liste qui n'apparaîtra qu'à certaines conditions et après certaines actions. Partant de là, en prenant en plus mon petit algo en pseudo-code de tout à l'heure, tu vas pouvoir définir les structures de contrôle et créer les requêtes.

Là pour le moment, tu essaye d'intégrer des bouts de code en essayant de pas casser ce qui marche, c'est sûr que tu vas te planter.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

25 sept. 2005, 18:56

tu ne peux pas simplement m'integrer "ville" svp ??

Mammouth du PHP | 19672 Messages

25 sept. 2005, 19:08

mdrr, je l'attendais bien celle là :langue:

Bon, je regardais ton code pendant que tu postais, j'ai relevé autre chose qui me montre que tu n'as pas bien interprété un point:
           /* Maintenant on peut construire la liste déroulante */
            ?>
<select name="departement" id="departement" onchange="document.forms['chgville'].submit();">
  <option value="-1">- - - Choisissez un d&eacute;partement - - -</option>
  <option value="<?php echo($code_dept[$d]); ?>"><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
Deux erreurs ici:
- d'abord, tu as inscrit "document.forms['chgville'].submit();" : C'est quoi le chgville que tu as mis ? Ça ne doit pas changer, c'est le nom du formulaire (Attribut id)
- Ensuite, tu mets l'affichage du contenu de la balise <option> en caractères spéciaux, à l'affichage, ça n'interpètera rien tu tout et ça va être affiché en code PHP dans la page. :
ça devrait donc être:
/* Maintenant on peut construire la liste déroulante */
            ?>
<select name="departement" id="departement" onchange="document.forms['chgdept'].submit();">
  <option value="-1">- - - Choisissez un d&eacute;partement - - -</option>
  <option value="<?php echo($code_dept[$d]); ?>"><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
Mais même là, ça ne marche pas: tu affiche le code du département alors que, si j'ai correctement compris ton message d'origine, tu veux la liste des villes: où est le code qui crée la requête pour chercher les villes correspondant au département sélectionné ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: