Liste déroulante dépendante avec base mysql
Posté : 05 oct. 2010, 08:22
Bonjour a tous,
Tout est dans le titre mais je vais vous intégrer le code pour que vous compreniez...
Ce post va en même temps en PHP et MYSQL!
J'explique :
- J'ai une première liste qui choisi une agence.
- De cette agence découle des services, différent ou pareil suivant les agences.
- Maintenant j'aimerais que à chaque service de chaque agence assigné une adresse mail...
Concernant ma base de donnée elle est constitué de la manière suivante :
- 1 table Agence : avec 2 champ soit id_agence et agence.
- 1 table Service : avec 3 champ soit id_service, service, id_agence.
Quelqu'un aurait-il une astuce pour réaliser cela?!
Créer une nouvelle table?
Modifier une existante?
Le code:
En vous remerciant tous d'avance,
Maillard Cédric
Tout est dans le titre mais je vais vous intégrer le code pour que vous compreniez...
Ce post va en même temps en PHP et MYSQL!
J'explique :
- J'ai une première liste qui choisi une agence.
- De cette agence découle des services, différent ou pareil suivant les agences.
- Maintenant j'aimerais que à chaque service de chaque agence assigné une adresse mail...
Concernant ma base de donnée elle est constitué de la manière suivante :
- 1 table Agence : avec 2 champ soit id_agence et agence.
- 1 table Service : avec 3 champ soit id_service, service, id_agence.
Quelqu'un aurait-il une astuce pour réaliser cela?!
Créer une nouvelle table?
Modifier une existante?
Le code:
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 = "conge";
/* On récupère si elle existe la valeur de l'agence envoyée par le formulaire */
$idr = isset($_POST['agence'])?$_POST['agence']: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 service selon l'agence 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>TEST</p>
<?php
if(isset($_POST['ok']) && isset($_POST['service']) && $_POST['service'] != "")
{
$agence_selectionnee = $_POST['agence'];
$service_selectionne = $_POST['service'];
?>
<p>Vous avez sélectionné le service <?php echo($service_selectionne); ?> dans l'agence <?php echo($agence_selectionnee); ?></p>
<?php
}
?>
<h3>Trouver un service</h3>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect()
* besoin de la connexion plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT `id_agence`, `agence`".
" FROM `agence`".
" ORDER BY `id_agence`";
$rech_agence = mysql_query($sql1);
$code_agence = array();
$agence = array();
/* On active un compteur pour les régions */
$nb_agence = 0;
if($rech_agence != false)
{
while($ligne = mysql_fetch_assoc($rech_agence))
{
array_push($code_agence, $ligne['id_agence']);
array_push($agence, $ligne['agence']);
/* On incrémente le compteur */
$nb_agence++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez une agence</legend>
<select name="agence" id="agence" onchange="document.forms['chgdept'].submit();">
<option value="-1">- - - Choisissez une agence - - -</option>
<?php
for($i = 0; $i < $nb_agence; $i++)
{
?>
<option value="<?php echo($code_agence[$i]); ?>"<?php echo((isset($idr) && $idr == $code_agence[$i])?" selected=\"selected\"":null); ?>><?php echo($agence[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_agence);
/* On commence par vérifier si on a envoyé un numéro d'agence 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 service de cette agence */
$sql2 = "SELECT `id_service`, `service`".
" FROM `service`".
" WHERE `id_agence` = ". $idr ."".
" ORDER BY `id_service`;";
if($connexion != false)
{
$rech_service = mysql_query($sql2, $connexion);
/* Un petit compteur pour les service */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des service */
$code_service = array();
$nom_service = array();
/* On met les numéros et noms des service dans les deux tableaux */
while($ligne_service = mysql_fetch_assoc($rech_service))
{
array_push($code_service, $ligne_service['id_service']);
array_push($nom_service, $ligne_service['service']);
$nd++;
}
/* Construction liste déroulante */
?>
<select name="service" id="service">
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($code_service[$d]); ?>"<?php echo((isset($service_selectionne) && $service_selectionne == $code_service[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_service[$d]." (". $code_service[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Nettoyage */
mysql_free_result($rech_service);
}
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
/* on ferme la connexion */
mysql_close($connexion);
}
else
{
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
<p><a href="./index2.php" title="Aller vers la version JavaScript">FIN TEST</a></p>
</body>
</html>
Maillard Cédric