8795 sujets

Développement web côté serveur, CMS

Bonjour à tous,


Pour les besoin d'un travail scolaire, je cherche à réaliser quelque chose de similaire à ce que l'on peut trouver sur cette article:



Dans cet article, un exemple est donné avec un menu qui change selon la page active, et où l'on voit l'item "poisson" coloré en vert.
Je cherche donc à faire quelque chose de similaire, j'ai bien compris le principe et l'ai d'ailleurs mis en place lors d'un travail sur un site statique.

Les choses sont plus compliquées pour moi dans le travail que je dois réaliser, puisque mon site est dynamique, liés à une baser de données, et fonctionnant sur base d'include.


Voici ma page index:

<?php 

    require_once ("initialisation.php");
       
?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Coaching personnel</title>
        <link rel="stylesheet" href="styles.css">
    </head>
    <body>
        <div id="main">
            
            <div id="header">
                <?php include("header.php"); ?>
            </div>
            
            <?php include("menu.php"); ?>
            
            <div id="contenu">
                <img src="media/headerBackground.jpg" alt="photo de header" />
                
                <?php 
                
                    include("rubrique.php"); 
                    
                    if($rubrique ==1){
                        include("news.php");
                    }
                    if($rubrique ==3){
                        include("equipe.php");
                    }                    
                    if($rubrique ==4){
                        include("contact.php");
                    }
                    
                ?>

            </div>
            
            <div id="footer">
                <?php include("footer.php"); ?>
            </div>

        </div>
    </body>
</html>

<?php

    mysql_close($conn);

?>




Ma page de gestion des rubriques:

<?php 

    require_once("initialisation.php");
    
    $sql = "SELECT *
            FROM rubriques
            WHERE id=$rubrique;";
    
    $resultat = mysql_query($sql);
    
    $tiroir = mysql_fetch_object($resultat);
    mysql_free_result($resultat);

?>

<div id="rubrique">
    
    <h2><?php echo $tiroir->nom; ?></h2>
    <p><?php echo $tiroir->texte; ?></p>
    
</div>




Et enfin mon menu:


<?php require_once("initialisation.php"); ?>

<ul id="menu">
    
    <?php

    $sqlMenu = "SELECT id, nom, ordre 
                FROM rubriques 
                ORDER BY ordre ASC;";
   
    $rsMenu = mysql_query($sqlMenu);
        while ($rMenu = mysql_fetch_object($rsMenu)){
    ?>
    
    <li>
        <a href="index.php?rubrique=<?php echo $rMenu->id;?>">
            <?php echo $rMenu->nom; ?>
        </a>
    </li>
    
    <?php }
    
 mysql_free_result($rsMenu); ?>
    
</ul>



Le code étant plus complexe que ce qui a été expliqué dans l'article, j'ai beaucoup de mal à adapter la solution proposée à mon travail.

Pourriez vous m'apporter vos lumières pour dépatouiller tout cela?

Et pour ma culture générale... Cela est-il possible en javascript?



Voilà, en attendant vos éventuelles solutions, je vous remercie d'avance, et vous souhaite une bonne journée.
Modifié par caema (11 Sep 2012 - 17:08)
Salut,

Tu passes l'id du menu en variable $_GET, et cet id indique la rubrique que tu veux afficher.

Il te suffit donc de faire un test dans ta boucle qui affiche tes éléments de menu pour savoir si l'id du menu est identique à celui de la rubrique et le cas échéant modifier le style.

if (isset($_GET['rubrique']) && $_GET['rubrique'] == $rMenu->id)
{
   $class = 'class="maclasse"';
}
else
{
   $class = '';
}

Modifié par MattBPA (11 Sep 2012 - 12:39)
Tout se passe donc dans le fichier menu.php si je comprends bien?

J'ai réalisé ceci:

<?php 

    require_once("initialisation.php"); 

?>

<ul id="$_GET['rubrique']">
    
    <?php

    $sqlMenu = "SELECT id, nom, ordre 
                FROM rubriques 
                ORDER BY ordre ASC;";
   
    $rsMenu = mysql_query($sqlMenu);
        while ($rMenu = mysql_fetch_object($rsMenu)){
            if (isset($_GET['rubrique']) && $_GET['rubrique'] == $rMenu->id){
                $class = 'class="selected"';
            }
            else{
                $class = 'class="menu"';
            }
    ?>
    
    <li>
        <a href="index.php?rubrique=<?php echo $rMenu->id;?>">
            <?php echo $rMenu->nom; ?>
        </a>
    </li>
    
    <?php }
    
 mysql_free_result($rsMenu); ?>
    
</ul>




Mais cela ne fonctionne pas. Mon menu "change" (il se remet en format puce si je peux dire), j'ai pourtant modifié, dans mon CSS tout ce qui était #menu (id menu) en .menu (class menu).

Je ne dois sans doute pas avoir tout compris lol
Arf.... rien à ajouter, quand on a le nez dans le code, parfois....
Je teste cela tout à l'heure, merci pour votre aide en tout cas.
Ca fonctionne parfaitement!

Merci beaucoup, grâce à vous j'aurais appris quelque chose de très intéressant aujourd'hui.

1000 merci, et bonne fin de journée!
Modifié par caema (11 Sep 2012 - 16:26)