Page 1 sur 1

Couleurs menu dynamique

Posté : 11 nov. 2013, 15:31
par Théo
Bonjour, j'ai récemment posté un sujet traitant de créer un menu dynamique ave PHP et MySQL sous la forme suivante:

Tables dans la BDD:

categorie(idCateg, NomCategorie, positionCateg)
sousCategorie (idSousCategorie, idCateg, NomSousCategorie, positionSousCateg)


Disposition du menu:

Categ 1 -------- Categ 2 --------- Categ 3
ssCateg1.1 --- ssCateg2.1 ---- ssCateg3.1
ssCateg1.2 --- ssCateg2.2 ---- ssCateg3.2
ssCateg1.3 --- ssCateg2.3 ---- ssCateg3.3


Pour le moment j'ai le code suivant:
<?php
$query_categorie = $db -> prepare("SELECT * FROM categorie ORDER BY positionCateg");
$query_categorie -> execute();
while ($categorie = $query_categorie -> fetch(PDO::FETCH_OBJ)) {
	echo "
                    <div class=\"menu-style\"><div>&nbsp;</div></div>
                                        
                                        <div class=\"menu-cellule\" onClick=\"$('ul', this).toggle();\">
                                                <a href=\"#\">{$categorie->NomCategorie}</a>
                                                <ul>
                                        ";
	$query = $db -> prepare("SELECT * FROM sousCategorie WHERE idCategorie = :id");
	$query -> execute(array('id' => $categorie -> idCategorie));
	while ($ligne = $query -> fetch(PDO::FETCH_OBJ))
		echo "
                       <li><a href=\"{$cfg['url']}/sousCategorie/id/{$ligne->idSousCategorie}/" . ".html\">{$ligne->NomSousCategorie}</a></li>";

	echo "
                                                </ul>
                                        </div>";
}
?>
Désormais j'ai rajouté un champ couleur dans ma table categorie:

categorie(idCategorie, NomCategorie, positionCategorie, couleurCateg)

Chaque categorie a donc une couleur spécifique (en héxadécimal dans la BDD)

Ma question: comment puis-je modifier mon code PHP pour faire en sorte d'avoir la couleur appropriée pour chacune de mes catégories? Je vais être obligé de faire directement du CSS dans mon code PHP (ce que je n'aime pas trop mais il me semble que je n'ai pas d'autres solutions). Je vais devoir intégrer qqch du genre background:<?php echo $res["couleurRubrique"]; ?> dans mon code, mais comment le mettre en place et à quel endroit plus précisément ?

Merci

Re: Couleurs menu dynamique

Posté : 11 nov. 2013, 15:40
par xTG
Il faut placer un paramètre style comportant tes attributs CSS dans le div de la catégorie.
<div style="background:#000000;">

Re: Couleurs menu dynamique

Posté : 11 nov. 2013, 15:55
par Théo
Mais comment en mettant <div style="background:#000000;"> je vais pouvoir récupérer la couleur de chaque catégorie ? :shock:
Ce que je cherche à traduire c'est: pour chaque categorie, associe moi la couleur qui lui correspond dans la base .

Re: Couleurs menu dynamique

Posté : 11 nov. 2013, 16:23
par yann18
un peu comme ça:

<?php
$query_categorie = $db -> prepare("SELECT * FROM categorie ORDER BY positionCateg");
$query_categorie -> execute();
while ($categorie = $query_categorie -> fetch(PDO::FETCH_OBJ)) {
    
    
        echo "
                    <div class=\"menu-style\"><div>&nbsp;</div></div>
                                       
                                        <div class=\"menu-cellule\" onClick=\"$('ul', this).toggle();\">
                                                <a style=\"background:{$categorie->couleurRubrique}\" href=\"#\">{$categorie->NomCategorie}</a>
                                                <ul>
                                        ";
        $query = $db -> prepare("SELECT * FROM sousCategorie WHERE idCategorie = :id");
        $query -> execute(array('id' => $categorie -> idCategorie));
        while ($ligne = $query -> fetch(PDO::FETCH_OBJ))
                echo "
                       <li><a href=\"{$cfg['url']}/sousCategorie/id/{$ligne->idSousCategorie}/" . ".html\">{$ligne->NomSousCategorie}</a></li>";

        echo "
                                                </ul>
                                        </div>";
}
?>


Re: Couleurs menu dynamique

Posté : 11 nov. 2013, 16:30
par Théo
Ah bah oui...
Merci beaucoup Yann ! (: