Couleurs menu dynamique

Théo
Invité n'ayant pas de compte PHPfrance

11 nov. 2013, 15:31

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

ViPHP
xTG
ViPHP | 7331 Messages

11 nov. 2013, 15:40

Il faut placer un paramètre style comportant tes attributs CSS dans le div de la catégorie.
<div style="background:#000000;">

Théo
Invité n'ayant pas de compte PHPfrance

11 nov. 2013, 15:55

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 .

Mammouth du PHP | 571 Messages

11 nov. 2013, 16:23

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>";
}
?>


Théo
Invité n'ayant pas de compte PHPfrance

11 nov. 2013, 16:30

Ah bah oui...
Merci beaucoup Yann ! (: