Transformer Menu Fixe en dynamique

Programmeur1987 Messages postés 80 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 5 mars 2009 - 25 juil. 2007 à 19:14
Programmeur1987 Messages postés 80 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 5 mars 2009 - 28 juil. 2007 à 18:32
Bonjour, depuis plusieur jour je me casse la tête à tenter de rentre mon menu dynamique c'est pour un espece de magasin en ligne et il récupère les items du menu par Mysql  avec ce code

function construit_menu(&$sortie, &$selectionne, $parent=0, $indent="") {
 global $SESSION, $wwwroot; $qid mysql_query("SELECT id, parent_id, nom FROM categories WHERE parent_id $parent AND lang = '".$SESSION["lang"]."'");
 if ($qid) {
  if (mysql_num_rows($qid) > 0) {
   while ($cat =  mysql_fetch_array($qid)) {
    $sortie .= "
    <tr><td>
    $indenthttp://www.spip-contrib.net/rien.gif

avec la génération du menu si dessus

5 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 juil. 2007 à 20:23
Salut

dans l'ideal, on fait un menu avec des et <li>, c'est bien plus propre et bien plus simple pour faire ensuite des sous menus

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
25 juil. 2007 à 20:24
Salut...

Voici une façon "propre" de résoudre ce genre de pb... :
<?php
error_reporting(E_ALL | E_STRICT);

class menu {
private $sous_menus;
private $donnees_du_menu;

/*!
* Constructeur d'un objet menu
* @param array $donnees_du_menu : un tableau associatif (issue de mysql_fetch_assoc)
*/
public function __construct( $donnees_du_menu ) {
// on sauve les données en paramêtre pour réutilisation ultérieure
$this->donnees_du_menu = $donnees_du_menu;
// les sous-menus seront contenus dans un tableau
$this->sous_menus = array();

// recherche via MySQL des sous-menus
$res_sous_menus = $this->trouver_sous_menus ( $donnees_du_menu['id'] );
// pour chaque sous menu trouvé
while ( $sous_menu = mysql_fetch_assoc($res_sous_menus) ) {
// l'ajouter au parent (la récursion se fait automatiquement
$this->sous_menus[] = new menu($sous_menu);
}
}

/*!
* Effectue une recherche dans la base de données pour trouver les sous-menus du menu courant
* @return MySQL_result : resultat de la requête!
*/
private function trouver_sous_menus() {
// le menu actuel est le parent des sous-menus
$parent = $this->donnees_du_menu['id'];
// param supplémentaires :
$lang = $_SESSION['lang'];
// construction de la requête
$query "SELECT id, parent_id, nom FROM categories WHERE parent_id $parent AND lang = '$lang'";
// intérrogation de la base
return mysql_query($query);
}

/*!
* Renvoi l'objet sous forme de texte
* @return string : le texte du menu
*/
public function __toString() {
// le menu courant
$str = '<li>'.$donnees_du_menu['nom'];

// si il y a des sous-menus
if ( count($this->sous_menus) ) {
// ouverture d'une sous-liste
$str.= '';
// et écriture des sous-menus
foreach ( $this->sous_menus as $sous_menu ) $str.= $sous_menu->__toString();
$str.= '';
}

// fermeture du menu courant
$str.= '</li>';

// Envoi de cette portion de menu
return $str;
}
}


//! Utilisation :
$menu_general = new menu ( array('id'=>0) );
echo $menu_general;

?>



Note : je n'ai rien vérifé... à toi de faire les tests et d'adapter le code à ton contexte.

A+
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
25 juil. 2007 à 20:25
Pardon de reprendre le terme "propre"... c'est involontaire
0
Programmeur1987 Messages postés 80 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 5 mars 2009
25 juil. 2007 à 20:25
La question n'est pas la .... si tu as un code pour le faire les ul et li ... lache toi lousse tant que le résultat recherché y soit

------------------------------------------------------------------------------------ Olivier Lefrancois
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Programmeur1987 Messages postés 80 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 5 mars 2009
28 juil. 2007 à 18:32
 J_G, Merci pour ton code, mais cela ne semble pâs être très très fructueux

------------------------------------------------------------------------------------ Olivier Lefrancois
0
Rejoignez-nous