Récupérer les valeurs en php d'un menu déroulant en cascade

Fermé
sluggy10 - Modifié par sluggy10 le 7/04/2014 à 10:12
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 - 8 avril 2014 à 12:40
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>
A voir également:

1 réponse

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
7 avril 2014 à 19:47
Bonjour, bonjour !
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).
1
L'ajax est quelque chose qui ressort souvent sur les forums, mais je n'y ai jamais touché encore.
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é?
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
8 avril 2014 à 12:40
De toute façon, ton Identifiants devra passer quel part, on peut aussi changer les variables javascript, POST facilement, pour la sécurité, ça se passe après, lors de ta requête Sql.
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é.
0