par Cyrano » 27 sept. 2005, 13:11
par arentx » 27 sept. 2005, 12:59
<?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 = "*******"; $mdp = "******"; $base = "******"; /* 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; $dept_selectionne = isset($_POST['departement'])?$_POST['departement']:null; $ville_selectionne = isset($_POST['ville'])?$_POST['ville']: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 by Xavier </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['chgdept'].submit();"> <option value="-1">---Choix de dept---</option> <?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); } if(isset($dept_selectionne)) { /* Création de la requête pour avoir les villes de ce dept */ $sql3 = "SELECT `id`, `intitule`, `cp`". " FROM `ville`". " WHERE `id_dept` = ". $dept_selectionne ."". " ORDER BY `intitule`;"; if($connexion != false) { $rech_ville = mysql_query($sql3, $connexion); /* Un petit compteur pour les villes */ $nv = 0; /* On crée deux tableaux pour les numéros et les codes postaux */ $code_ville = array(); $nom_ville = array(); $id_ville = array(); /* On va mettre les CP et noms des villes dans les deux tableaux */ while($ligne_ville = mysql_fetch_assoc($rech_ville)) { array_push($code_ville, $ligne_ville['cp']); array_push($nom_ville, $ligne_ville['intitule']); array_push($id_ville, $ligne_ville['id']); $nv++; } /* Maintenant on peut construire la liste déroulante */ ?> <select name="ville" id="ville" onchange="document.forms['chgdept'].submit();"> <option value="-1">---Choix des villes---</option> <?php for($v = 0; $v<$nv; $v++) { ?> <option value="<?php echo($id_ville[$v]); ?>"<?php echo((isset($ville_selectionne) && $ville_selectionne == $id_ville[$v])?" selected=\"selected\"":null); ?>><?php echo($nom_ville[$v]." (". $code_ville[$v] .")"); ?></option> <?php } ?> </select> <?php } /* Un petit coup de balai */ mysql_free_result($rech_ville); } if(isset($ville_selectionne)) { //echo '<a href="ville.php?id='.$ville_selectionne.'">voir les infos de la ville</a>'; echo '<input type="button" name="ok" value="Envoyer" onClick="javascript:window.open(\'ville.php?id='.$ville_selectionne.'\')">'; } ?> <br/> </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>
par Cyrano » 26 sept. 2005, 22:18
par arentx » 26 sept. 2005, 08:48
Code : Tout sélectionner
<form name="form1"> <select name="region" method="post" action=""> <option selected>--- Choisissez une région ---</option> <option>PACA</option> </select> </form> <form name="form2"> <select name="departement" method="post" action=""> <option selected>--- Choisissez un département ---</option> <option>VAR</option> </select> </form> <form name="form3"> <select name="ville" method="post" action=""> <option selected>--- Choisissez une ville ---</option> <option>TOULON</option> </select> </form>
par Cyrano » 25 sept. 2005, 22:14
par arentx » 25 sept. 2005, 22:12
par arentx » 25 sept. 2005, 20:13
par Cyrano » 25 sept. 2005, 19:08
/* Maintenant on peut construire la liste déroulante */ ?> <select name="departement" id="departement" onchange="document.forms['chgville'].submit();"> <option value="-1">- - - Choisissez un département - - -</option> <option value="<?php echo($code_dept[$d]); ?>"><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
/* Maintenant on peut construire la liste déroulante */ ?> <select name="departement" id="departement" onchange="document.forms['chgdept'].submit();"> <option value="-1">- - - Choisissez un département - - -</option> <option value="<?php echo($code_dept[$d]); ?>"><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
par arentx » 25 sept. 2005, 18:56
par Cyrano » 25 sept. 2005, 18:51
par arentx » 25 sept. 2005, 18:08
<?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é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>
par Cyrano » 25 sept. 2005, 17:35
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 }
par arentx » 25 sept. 2005, 17:19
<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>
par Cyrano » 25 sept. 2005, 17:11
par arentx » 25 sept. 2005, 17:04