Page 1 sur 1

Html et css dans un menu php/mysql

Posté : 28 oct. 2011, 23:38
par squallblanc
Bonsoir a tous! je viens vous revoir car je cal sur un soucis pour mon menu que je viens de passer en dynamique avec une fonction récursive... A la base mon menu était en html+css.
Mon problème est que je n'arrive pas afficher balise <li class="niv1"> pour les catégories et la balise <li class="left"> pour les sous menu, en claire mon menu html ressemble à ca:
<div class="menu">
	<ul class="onglets">
        <li class="niv1"><a class="services" href="cat1-services.html">Services</a>
            <ul class="sousMenu">
                    <li class="left"><a href="sct15-informatique.html">Informatique</a></li>
                    <li class="left"><a href="sct16-telephonie.html">Téléphonie</a></li>
                    <li class="left"><a href="sct17-image-sons.html">Image & Sons</a></li>
            </ul>
        </li>
</div>


et voilas mon code php du nouveau menu :
<?php
include("../php/function.php");
mysql_connect("localhost", "root", "");
mysql_select_db("menu") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e.');

$query = "SELECT * FROM profession ORDER BY nom ASC";
$result = mysql_query($query);
 
$categories = array();
 
while($row = mysql_fetch_array($result)) {
	$categories[] = array(
	'parent_id' => $row['idProfession'],
	'categorie_id' => $row['id'],
	'nom_categorie' => $row['nom']
	);
}

function afficher_menu($parent, $niveau, $array) {
 
$html = "";
$niveau_precedent = 0;
 
if (!$niveau && !$niveau_precedent) $html .= "\n<ul class='onglets'>\n";
 
foreach ($array AS $noeud) {
 
	if ($parent == $noeud['parent_id']) {
 
	if ($niveau_precedent < $niveau) $html .= "\n<ul class='sousMenu'>\n";
 
	$html .= "<li class='niv1'><a href=\"cat" . $noeud['categorie_id'] . "-" . $noeud['nom_categorie'] .".html\">" . $noeud['nom_categorie'] . "</a>";
 
	$niveau_precedent = $niveau;
 	
	$html .= afficher_menu($noeud['categorie_id'], ($niveau + 1), $array);
 
	}
}
 
if (($niveau_precedent == $niveau) && ($niveau_precedent != 0)) $html .= "</ul>\n</li>\n";
else if ($niveau_precedent == $niveau) $html .= "</ul>\n";
else $html .= "</li>\n";
 
return $html;
 
}
?>
<div class="menu">
	<?php echo afficher_menu(0, 0, $categories); ?>
</div>
Voilas c'est tout si une personne peu m'aider pour faire cette modif...
Merci

Re: Html et css dans un menu php/mysql

Posté : 29 oct. 2011, 00:11
par xTG
Pourrais-tu être un peu plus clair, car à ce que je vois tout est catégorie dans ton menu. :)
Le code HTML est-il ce que tu souhaites obtenir ou ce que tu as actuellement ?

Re: Html et css dans un menu php/mysql

Posté : 29 oct. 2011, 00:15
par squallblanc
oui je voudrais retrouver mon code comme celui qui est en html

Re: Html et css dans un menu php/mysql

Posté : 29 oct. 2011, 12:13
par xTG
Et comment fais-tu la différence entre une catégorie et un simple lien ?
Car pour ce que tu nous montres s'il n'y a qu'un niveau je ne vois pas l'intérêt d'une fonction récursive.
Un simple lien est-il le dernier niveau accessible ?

Re: Html et css dans un menu php/mysql

Posté : 29 oct. 2011, 12:21
par squallblanc
ben sais pas !! lol
Tu me conseillerais de faire comment?

Re: Html et css dans un menu php/mysql

Posté : 29 oct. 2011, 13:12
par xTG
Le principe quoi que tu choisisses est qu'il faut pouvoir les différencier.
Donc par exemple pour chaque noeud fournir le niveau max, ainsi si niveau = niveau_max tu affectes telle class (lien) sinon tu affectes la class catégorie.