Bonjour à tous,
Je suis en train de réaliser un menu dynamique. C'est-à-dire le contenu de mon menu est constitué des noms des thèmes enregistrés en base de données. Chaque thème est identifié par son ID qui est un paramètre dans l'URL.
Mon souhait est pouvoir récupérer le contenu du thème sur le quel on a cliqué grâce à son paramètre GET et aussi que le lien reste actif même après chargement pour que l'utilisateur sache sur quel menu il navigue.
Le style de menu actif est traité en CSS et le reste en JQUERY. Vous trouverez mon code ci-dessous :
Modifié par dinolam (11 Apr 2017 - 11:31)
Je suis en train de réaliser un menu dynamique. C'est-à-dire le contenu de mon menu est constitué des noms des thèmes enregistrés en base de données. Chaque thème est identifié par son ID qui est un paramètre dans l'URL.
Mon souhait est pouvoir récupérer le contenu du thème sur le quel on a cliqué grâce à son paramètre GET et aussi que le lien reste actif même après chargement pour que l'utilisateur sache sur quel menu il navigue.
Le style de menu actif est traité en CSS et le reste en JQUERY. Vous trouverez mon code ci-dessous :
ul li{
list-style: none;
}
ul li a {
display: block;
color: #333;
text-decoration: none;
padding: 8px 8px 17px 8px;
width: 200px;
transition: all .3s .1s;
}
ul li a:hover, ul li a:focus {
background: blue;
color:#fff;
padding: 8px 25px 17px 25px;
transition: all .3s 0s;
}
ul li a:active {
background: blue;
color:#fff;
}
<div id="menu">
<ul>
<?php
// connexion BD
require_once("db.php");
$sql = "SELECT * FROM theme ORDER BY theme_id DESC".
$req = $db->prepare($sql);
$req->execute() or die(print_r($req->errorInfo()));
$rows = $req->fetchAll();
foreach($rows as $row){
?>
<li><a href="page.php?id=<?=$row['theme_id']?>"><?=$row['theme_nom']?></a></li>
<?php } ?>
</ul>
</div>
<div id="contenu">
<?php
$theme_id = $_GET['id'];
$q = array('id'=>$theme_id);
$sql = "SELECT * FROM theme WHERE theme_id = :id";
$req = $db->prepare($sql);
$req->execute($q) or die(print_r($req->errorInfo()));
$rows = $req->fetch();
foreach($rows as $row) {
?>
<h1><?=$row['theme_nom']?></h1>
<p><?=$row['theme_contenu']?></p>
<?php } ?>
</div>
var $contenu = $('#contenu');
var page = $('#menu li a:first').text();
$('#menu li a').on('click', function() {
var lien = $(this).attr('href');
var pageCible = $(this).text();
if(pageCible != page) {
page = pageCible;
$.ajax({
url: lien,
cache: false,
success: function(html) {
$contenu.hide().html(html).fadeIn();
}
});
}
return false;
});
Modifié par dinolam (11 Apr 2017 - 11:31)