Bonsoir à tous !!
Voilà, j'essaies de faire un menu suivant le contenu de ma bases de données, celle-ci contient 2 tables (menu et sous menu).
Tout est presque fonctionnel à un détail près, un gros détail
Ma page index est placé à la racine de mon site, ensuite chaque lien du menu à son propre répertoire, celui-ci contenant également les sous-menus de ce menu.
Mon problème se situe au niveau de l'index, je ne sais pas de quelle manière je pourrais procéder, pour indiquer dans ma boucle que si le lien correspond à l'index(accueil du site), car pour l'instant mon lien ressemble à ça :
projet/accueil/accueil.php
Remplacer accueil par index, je sait le faire, mon problème se situe par rapport où je suis dans l'arborescence.
Car si je ne remonte pas à la racine du site, ce sont les liens des autres menus qui ne sont plus bons.
Voici le code en question, si ça peut vous aider à m'orienter vers une solution.
<?php
/********************************************************
/* Le menu et le sous menu des pages
/***************************/
function conv_caract($chaine) // cette fonction élimine tous les caractères spéciaux et remplace les espaces par des tirets et convertit les majuscules en minuscules */
{
$chaine = strtr($chaine, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$chaine = preg_replace('/([^.a-z0-9]+)/i', '-', $chaine);
$chaine = strtolower($chaine);
return $chaine;
}
$url = $_SERVER['PHP_SELF']; // url de la page en cours
$select = @mysql_select_db('projet') or die ('Un problème est survenu lors de la lecture des données, veuillez réessayer plus tard, merci');
$req = @mysql_query('SELECT * FROM menu'); // requete dans la table menu et selection du nom de chaque menu
while($menu = @mysql_fetch_array($req))
{
$lien_menu = conv_caract($menu['nom']);
if($menu['id'] != 0) // si on n'est pas sur la page d'accueil
{
echo '<li class="menu"><a href="../' . $lien_menu . "/" . $lien_menu . '.php">' . $menu['nom'] . '</a></li>';
}
else // on est donc sur la page d'accueil
{
echo '<li class="menu"><a href="../' . $lien_menu . '/' . $lien_menu . '.php">' . $menu['nom'] . '</a></li>';
}
$req2 = @mysql_query('SELECT sous_menu.nom, menu FROM sous_menu,menu WHERE sous_menu.menu = menu.nom')
or die (mysql_error()); // requete dans table menu et sous_menu
while($sous_menu = mysql_fetch_array($req2))
{
if($sous_menu['menu'] == $menu['nom'])
{
$ndd = explode('/', $url); // ici on récupère le dossier dans lequel la page est placée (ndd = nom du dossier)
$dossier = array_reverse($ndd); // on inverse le array
$lien_sous_menu = conv_caract($sous_menu['nom']);
if($dossier[1] == $lien_menu)
{
echo '<li><a href="' . $lien_sous_menu . '.php">' . $sous_menu['nom'] . '</a></li>';
}
}
}
}
?>
Ca fait pas mal de temps que je cherche, et j'arrive pas à trouver de solution, si je change quelque chose, le problème se répercute de l'autre côté.
Si vous avez une petite piste.
Merci
