Probléme Barre de navigation (Boucle recursive)

Eléphant du PHP | 175 Messages

02 juil. 2008, 21:01

Bonjour,

je suis entrain de developper un site web entierement parametrable, et pour ce faire j'ai besoin d'une barre de navigation automatique...

exemple :
Nom du site >> Liste des membres >> détails du membre

Chaque module est inséré dans la base MySql, avec le titre du module, le fichier PHP qui fait reference et son template
exemple :
La page d'accueil >> accueil.php >> accueil.tpl
La liste des membres >> liste_membres.php >> liste_membres.tpl
Détails de membre, etc...

Si des modules se suivent on crée des dépendances
exemple :
la liste des membres qui a une ID : 8
la dépendance de Détails membres sera 8

Je pense donc utilisé une boucle récursive...

Voici mon code...

PHP :
[php]function recursive($id)
{
global $connect;

$sql=mysql_query("SELECT module_id, module_nom, module_dep_module_id FROM gmod_modules
WHERE module_id='".$id."'");

while ($row_nav = mysql_fetch_array($sql))
{
recursive($row_nav["module_dep_module_id"]);
echo " » ".stripslashes($row_nav["module_nom"]);


}
}

function barre_navigation($type_url, $nav_id)
{
global $cnx, $base_cnx, $template, $lang;


$template->set_filenames(array('barr_nav' => 'barrenav.tpl'));

$template->assign_vars(array(
'NAV_INDEX' => style_css(0,0,1)
));


if ($type_url == "menu")
{

if (empty($nav_id))
{
$nav_id = 1; //page d'accueil
}

mysql_select_db($base_cnx,$cnx);
$sql_nav = mysql_query("SELECT menu_id, menu_nom FROM gmod_menu WHERE menu_id='".$nav_id."'");
$row_nav = mysql_fetch_array($sql_nav);
session_unset();
$_SESSION['menu_id'] = $row_nav['menu_id'];
$_SESSION['menu_nom'] = stripslashes($row_nav['menu_nom']);

$nav_module_id ="";
$nav_module_nom ="";


}


if ($type_url == "module")
{
$nav_module_id ="";
$nav_module_nom = recursive($nav_id);

}

$template->assign_block_vars('barrenavigation', array(
'NAV_MENU_ID' => $_SESSION['menu_id'],
'NAV_MENU_NOM' => " » ".$_SESSION['menu_nom'],
'NAV_MODULE_ID' => $nav_module_id,
'NAV_MODULE_NOM' => $nav_module_nom
));



$template->assign_var_from_handle('INCLUDE_BARRE_NAV', 'barr_nav');

}[/php]

le fichier template .TPL

[php]<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<!-- BEGIN barrenavigation -->
<td class="maintab_back">
<a href="index.php">{NAV_INDEX}</a>{barrenavigation.NAV_MENU_NOM}{barrenavigation.NAV_MODULE_NOM}
</td>
<!-- END barrenavigation -->
</tr>
</table>[/php]

Dans la function recursive -> mon echo : echo " &raquo; ".stripslashes($row_nav["module_nom"]); fonctionne,
mais des que je souhaite l'envoyer vers mon template ca ne fonctionne pas....

J'espere etre clair...
je pense que c'est tout con, mais je suis un peu perdu..
Merci de m'aider
²²²---===JOHAAANNS===---²²²

ViPHP
ViPHP | 4674 Messages

17 juil. 2008, 23:42

Hey :),

En fait, ce serait bien d'avoir un exemple de tes deux tables, et de connaître exactement ce qui ne va pas. Tu comprendras qu'on n'a pas forcément envie de se plonger dans ton code :).

À la limite, sans coder, juste avec une feuille et un crayon de papier (ou stylo, au choix ;-)), tu poses le problème, calmement. Tu verras que la solution n'est peut-être pas si compliqué. Quand tu auras ton algorithme, tu n'auras qu'à l'appliquer en PHP.
Quand on a un problème, toujours le découper de façon simple.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).