8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Tout d'abord voici l'architecture du site :

****************************
* HEADER *
****************************
* Menu de navigation *
****************************
* *
* Contenu via include() *
* *
****************************
* FOOTER *
****************************


Donc vous l'aurez compris, c'est un squelette "classique" avec un header et juste en dessous un menu horizontal, le tout en bruit dans un index.php

Ensuite vient mon contenu via include.

Puis le footer toujours en bruit dans l'index.php.

J'essaye de resortir l'onglet du menu qui est en cours d'utilisation mais pour celà il faut que prenne l'url.

Pour ce faire, j'ai utilisé le script php suivant, qui va me créer mon menu de manière dynamique, et qui en profite pour récupérer l'url afin de réaliser un test pour trouvé l'onglet actif :


		 // tableaux contenant les liens d'accès et le texte à afficher
        $tab_menu_lien = array( "?file=accueil", "?file=admin", "", "", "", "" );
        $tab_menu_texte = array( "Accueil", "Admin", "A propos", "Portfolio", "Inscription", "Connexion" );
        
        // informations sur la page
        $info = pathinfo($_SERVER['PHP_SELF']);

        $menu = "\n<ul id=\"menu_horizontal\">\n";

        // boucle qui parcours les deux tableaux
        foreach($tab_menu_lien as $cle=>$lien)
        {
            $menu .= "    <li";
                
            // si le nom du fichier correspond à celui pointé par l'indice, alors on l'active
            if( $info['basename'] == $lien ){
                $menu .= " class=\"onglet_courant\"";}
                
            $menu .= "><a href=\"" . $lien . "\">" . $tab_menu_texte[$cle] . "</a></li>\n";
        }
        
        $menu .= "</ul>";
        
        echo $menu;   



Hors la gestion de l'onglet en cours ne fonctionne pas. Ma classé "onglet_courant" fonctionne parfaitement lorsque je l'applique directement sur un menu statique.

Concernant le lien, que j'utilise : "index.php?file=admin" ou "?file=admin" aucune différence.

Le problème vient selon moi de ce bout de code :

if( $info['basename'] == $lien )


En effet le paramètre 'basename' de pathinfo sert à me récupérer le nom du fichier qui est dans l'url du type : fichier.php

Or vu que c'est des liens "query" qui me servent à afficher mes inclues, c'est cette partie "query" (la partie "?file=admin") qu'il faut que je récupère.

Donc si je me trompe pas il faut que j'utilise la fonctione "parse_url" avec le paramètre 'query', mais j'ai du mal m'y prendre ça ne fonctionne.

parse_url, les infos sont ici -> http://www.php.net/manual/fr/function.parse-url.php

J'ai besoin d'un ptit coup de main.

Merci d'avance Smiley cligne
Modifié par ghjuvan-batti (22 Oct 2010 - 23:41)
J'ai réussit à trouver la réponse, et je la donne si certains on les mêmes besoins qui, je le rappel, est mettre en place en php un système d'onglet actif sur des liens de type "query".

Pour résoudre mon problème j'ai utilisé une autre variable prédéfinies.

Il suffit juste de remplacer cette ligne :

        // informations sur la page 
        $info = pathinfo($_SERVER['PHP_SELF']);


Par ça :

        // informations sur la page 
                $info_url = "?".$_SERVER['QUERY_STRING'];


'QUERY_STRING' permet de récupérer tous les arguments placés après le "?" dans l'url. Hors ça ne récupère par le "?", c'est pourquoi je l'ai incrémenté à ma variable pour que lors de la vérification ça correspondent bien à mon lien.

Merci quand même à vous et bonne continuation, très bon site avec un excellent contenu Smiley cligne