Récupérer les valeurs en php d'un menu déroulant en cascade
sluggy10
-
Nhay Messages postés 838 Date d'inscription Statut Membre Dernière intervention -
Nhay Messages postés 838 Date d'inscription Statut Membre Dernière intervention -
Bonjour, Je fais un formulaire avec un menu en cascade en css (un menu déroulant, qui ouvre un sous menu déroulant, qui en ouvre un autre), et je souhaiterai récupérer les 3 valeurs en php pour, une fois le 3ème sous-menu "cliqué", refresh la page avec un affichage provenant de la BDD qui dépend des trois valeurs (tout le monde me suis encore?).
Ca fait un genre d'arborescence simulée avec un menu déroulant en somme.
Pour l'instant, je cherche seulement à afficher en echo les trois variables du menu, je verrai le traitement après je sais le faire.
J'arrive à le faire avec un menu déroulant à un niveau avec un onChange, sauf que la ca doit pas recharger la page avant la 3ème valeur.
Une idée? :)
Voici mon code (j'ai enlevé ce qui est hors-sujet)
<!DOCTYPE html PUBliC "-//W3C//DTD html 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Consultation des fiches pratiques</title>
<?php
include("../style.php");
?>
<script src="../js/modernizr.custom.js"></script>
</head>
<body>
<?php
$menu1='';
$menu2='';
$menu3='';
if(isset($_POST['menu1']))
{
$menu1=$_POST['menu1'];
$menu2=$_POST['menu2'];
$menu3=$_POST['menu3'];
echo $menu1;
echo $menu2;
echo $menu3;
echo "BONJOUUUUUUUUUUUUUUUR";
}
else
echo "raté";
?>
<br><br>
<table align="center" border="0">
<tr>
<td align="center" class="menuadd" >
<h2>Consultation des fiches pratiques <?php if($theme!="tout") {echo "$theme";} ?></h2>
<form method="post" action="cons_fiche.php" >
<input type="hidden" name="menu1" value="<?php echo $menu1;?>"/>
<input type="hidden" name="menu2" value="<?php echo $menu2;?>"/>
<input type="hidden" name="menu3" value="<?php echo $menu3;?>"/>
<div class="container demo-2">
<div class="main clearfix">
<div class="column">
<div id="dl-menu" class="dl-menuwrapper">
<button class="dl-trigger">Fiches pratiques</button>
<ul class="dl-menu">
<li>
<a href="#" onclick="<?php $menu1="traveldoo"; ?>">traveldoo</a>
<ul class="dl-submenu">
<li>
<a href="#" onclick="<?php $menu2="interne"; ?>">interne</a>
<ul class="dl-submenu">
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche1"; ?>">fiche 1</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche2"; ?>">fiche 2</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche3"; ?>">fiche 3</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche4"; ?>">fiche 4</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche5"; ?>">fiche 5</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche6"; ?>">fiche 6</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div><!-- /dl-menuwrapper -->
</div>
</div>
</div><!-- /container -->
</form>
</td>
</tr>
</table>
</body>
</html>
Ca fait un genre d'arborescence simulée avec un menu déroulant en somme.
Pour l'instant, je cherche seulement à afficher en echo les trois variables du menu, je verrai le traitement après je sais le faire.
J'arrive à le faire avec un menu déroulant à un niveau avec un onChange, sauf que la ca doit pas recharger la page avant la 3ème valeur.
Une idée? :)
Voici mon code (j'ai enlevé ce qui est hors-sujet)
<!DOCTYPE html PUBliC "-//W3C//DTD html 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Consultation des fiches pratiques</title>
<?php
include("../style.php");
?>
<script src="../js/modernizr.custom.js"></script>
</head>
<body>
<?php
$menu1='';
$menu2='';
$menu3='';
if(isset($_POST['menu1']))
{
$menu1=$_POST['menu1'];
$menu2=$_POST['menu2'];
$menu3=$_POST['menu3'];
echo $menu1;
echo $menu2;
echo $menu3;
echo "BONJOUUUUUUUUUUUUUUUR";
}
else
echo "raté";
?>
<br><br>
<table align="center" border="0">
<tr>
<td align="center" class="menuadd" >
<h2>Consultation des fiches pratiques <?php if($theme!="tout") {echo "$theme";} ?></h2>
<form method="post" action="cons_fiche.php" >
<input type="hidden" name="menu1" value="<?php echo $menu1;?>"/>
<input type="hidden" name="menu2" value="<?php echo $menu2;?>"/>
<input type="hidden" name="menu3" value="<?php echo $menu3;?>"/>
<div class="container demo-2">
<div class="main clearfix">
<div class="column">
<div id="dl-menu" class="dl-menuwrapper">
<button class="dl-trigger">Fiches pratiques</button>
<ul class="dl-menu">
<li>
<a href="#" onclick="<?php $menu1="traveldoo"; ?>">traveldoo</a>
<ul class="dl-submenu">
<li>
<a href="#" onclick="<?php $menu2="interne"; ?>">interne</a>
<ul class="dl-submenu">
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche1"; ?>">fiche 1</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche2"; ?>">fiche 2</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche3"; ?>">fiche 3</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche4"; ?>">fiche 4</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche5"; ?>">fiche 5</a></li>
<li><a href="cons_fiche.php" onclick="<?php $menu3="fiche6"; ?>">fiche 6</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div><!-- /dl-menuwrapper -->
</div>
</div>
</div><!-- /container -->
</form>
</td>
</tr>
</table>
</body>
</html>
A voir également:
- Récupérer les valeurs en php d'un menu déroulant en cascade
- Liste déroulante en cascade - Guide
- Menu déroulant excel - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Menu déroulant google sheet - Accueil - Guide bureautique
- Comment récupérer un compte facebook piraté - Guide
1 réponse
Bonjour, bonjour !
Tu semble mélanger php et javascript, ça ne peut pas fonctionner comme ça.
Ce code est illogique :
Ton code Php sera exécuté au chargement de la page, sans se soucié du onclick.
Ton onclick lui, ne fera rien du tout.
Deux Solutions :
First :
Tu accepte un petit chargement de page, c'est le plus simple à faire, un lien sous la forme cons_fiche.php?id=XX (Soit tu te sert ensuite de L'ID pour récupérer les parents, soit tu peut aussi faire un lieu du style cons_fiche.php?id=XX_YY_ZZ, te permettant d'avoir chaque ID séparé par un underscore.)
Second :
Un p'tit peut d'Ajax (Via Jquery par exemple), demande un peu plus de connaissance mais permet de faire ce que tu veux sans chargement (Regarde les fonctions Jquery .click() pour l'évènement, .load() pour ta requête).
Tu semble mélanger php et javascript, ça ne peut pas fonctionner comme ça.
Ce code est illogique :
onclick="<?php $menu3="fiche1"; ?>
Ton code Php sera exécuté au chargement de la page, sans se soucié du onclick.
Ton onclick lui, ne fera rien du tout.
Deux Solutions :
First :
Tu accepte un petit chargement de page, c'est le plus simple à faire, un lien sous la forme cons_fiche.php?id=XX (Soit tu te sert ensuite de L'ID pour récupérer les parents, soit tu peut aussi faire un lieu du style cons_fiche.php?id=XX_YY_ZZ, te permettant d'avoir chaque ID séparé par un underscore.)
Second :
Un p'tit peut d'Ajax (Via Jquery par exemple), demande un peu plus de connaissance mais permet de faire ce que tu veux sans chargement (Regarde les fonctions Jquery .click() pour l'évènement, .load() pour ta requête).
Pour la première solution, tu me propose en fait de mettre les valeurs dans le lien, mais ce n'est pas déconseillé niveau sécurité?
Pour des champs numérique, tu peut utiliser la fonction Intval par exemple, ainsi tu sera certain de n'avoir que des nombres.
Sinon, tu a aussi mysql_real_escape_string pour le texte ou encore les requêtes préparé.