liste deroulante liées PHP /sql
Posté : 21 juil. 2011, 14:14
Bonjour,
J'ai des liste déroulante liées a construire. J'ai récuperer le script ci dessous sui fonctionne bien mais seulement lorsqu'il y a deux listes. Je n'arrive pas a en integrer une troisieme en fonction de la deuxieme.
Voici le code:
Et je cherche a en integrer une troisieme en fonction des categories mais je n'arrive pas a récuperer la valeur de la categorie selectionnée comme $idr pour la premiere pour générer la troisieme liste. Mes requetes sont pretes il me mansque que ça. Merci de votre aide.
J'ai des liste déroulante liées a construire. J'ai récuperer le script ci dessous sui fonctionne bien mais seulement lorsqu'il y a deux listes. Je n'arrive pas a en integrer une troisieme en fonction de la deuxieme.
Voici 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 = "";
$admin = "";
$mdp = "";
$base = "";
/* On récupère si elle existe la valeur de la rubrique envoyée par le formulaire */
$idr = isset($_POST['rubrique'])?$_POST['rubrique']: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 une rubrique</title>
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<?php
if(isset($_POST['ok']) && isset($_POST['categorie']) && $_POST['categorie'] != "")
{
$rubrique_selectionnee = $_POST['rubrique'];
$categorie_selectionne = $_POST['categorie'];
?>
<p>Vous avez sélectionné la categorie <?php echo($categorie_selectionne); ?> dans la rubrique <?php echo($rubrique_selectionnee); ?></p>
<?php
}
?>
<h3>Choisir une rubrique</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`, `name`".
" FROM `rubrique_site`".
" ORDER BY `name`";
$rech_rubriques = mysql_query($sql1);
$code_rubrique = array();
$rubrique = array();
/* On active un compteur pour les régions */
$nb_rubriques = 0;
if($rech_rubriques != false)
{
while($ligne = mysql_fetch_assoc($rech_rubriques))
{
array_push($code_rubrique, $ligne['id']);
array_push($rubrique, $ligne['name']);
/* On incrémente de compteur */
$nb_rubriques++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez une catégorie</legend>
<select name="rubrique" id="rubrique" onchange="document.forms['chgdept'].submit();">
<option value="-1">- - - Choisissez une rubrique - - -</option>
<?php
for($i = 0; $i < $nb_rubriques; $i++)
{
?>
<option value="<?php echo($code_rubrique[$i]); ?>"<?php echo((isset($idr) && $idr == $code_rubrique[$i])?" selected=\"selected\"":null); ?>><?php echo($rubrique[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_rubriques);
/* On commence par vérifier si on a envoyé un numéro de rubrique 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 categorie de cette région */
$sql2 = "SELECT `id`, `rubrique`, `categorie`".
" FROM `news_categories`".
" WHERE `rubrique` = ". $idr ."".
" ORDER BY `categorie`;";
if($connexion != false)
{
$rech_categorie = 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_categorie = array();
$nom_categorie = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_categorie = mysql_fetch_assoc($rech_categorie))
{
array_push($code_categorie, $ligne_categorie['id']);
array_push($nom_categorie, $ligne_categorie['categorie']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="categorie" id="categorie">
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($code_categorie[$d]); ?>"<?php echo((isset($categorie_selectionne) && $categorie_selectionne == $code_categorie[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_categorie[$d]." (". $code_categorie[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_categorie);
}
?>
<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
}
?>
</body>
</html>