Vous n'êtes pas identifié.
Bonjour à tous et à toi coolman
je vois parfois sur des sites qui ont un menu avec des rubriques, un style différent selon les rubriques.
par ex, sur la page de ton site, tu as <div class="cadrecentrale"> avec style de couleur de fond pour toi background-color:#FFF;
Supposons qu on a 3 rubriques issues de la base mysq (voiture, vélo, moto). ce que j aimerai c est que la page de réception prenne par ex une couleur différente selon la rubrique avec par ex <div class="cadrecentralevoiture">; <div class="cadrecentralevélo"> qui aurait un backgroud color différent.
Bien sur tout ça suppose que je connaisse le nom de mes rubriques.
tu vois mon idée. j ai déja vu ça avec des sites avec des menus alimentés par php/mysql.
Voila une sorte de css dynamique.
si tu une piste la dessus.
merci
stephi
Hors ligne

Salut stephi,
Ce n'est pas très compliqué et tu donnes en partie la réponse à ta question :). En supposant que tu connaisses d'avance les noms des catégories, tu peux alors utiliser celles-ci comme nom de class css dans la boucle while() de ta requête sql.
En gros ça donnerai un truc du style :
$result = mysql_query("SELECT id,nom_categorie FROM CATEGORIE");
while($categorie = mysql_fetch_array($result))
{
echo '<div class="'.$categorie['nom_categorie'].'">'.$categorie['nom_categorie'].'</div>';
}Pour mieux comprendre le principe, voici un exemple qui fonctionne. La seule différence est que j'utilise un tableau au lieu d'une requête SQL :
<style type="text/css">
.voiture{
background:red;
width:100px;
height: 20px;
}
.meuble{
background:green;
width:100px;
height: 20px;
}
.velo{
background:yellow;
width:100px;
height: 20px;
}
</style>
<?php
//tableau qui remplace la requête sql
$categorie = array('Voiture', 'meuble','velo');
//Boucle foreach qui remplace la boucle while
foreach($categorie AS $valeur)
{
echo '<div class="'.$valeur.'">'.$valeur.'</div><br />';
}
?>Hors ligne
salut coolman
rapide comme toujours
donc si je reprend la requête sql
si j ai créé une classe
.voiture{........}
.moto{........}
j écrirai ça?
$result = mysql_query("SELECT id,nom_categorie FROM CATEGORIE");
while($categorie = mysql_fetch_array($result))
{
echo '<div class="'.$categorie['nom_categorie'].'">'.$categorie['nom_categorie'].'</div>';
}
mais comment, il peut savoir quelle catégorie prendre? savoir que c est .voiture ou .moto?
stephi
Hors ligne
La requête que je t'ai donné est juste un exemple, il faut que tu fasses ta propre requête en fonction des champs de ta BD.
$result = mysql_query("SELECT id,nom_categorie FROM CATEGORIE");
while($categorie = mysql_fetch_array($result))
{
echo '<div class="'.$categorie['nom_categorie'].'">'.$categorie['nom_categorie'].'</div>';
}Dans cet exemple, on suppose que la table se nomme "CATEGORIE" et que le nom du champ qui indexe les catégories se nomme "nom_categorie"
Dans la boucle while(), la variable "$categorie['nom_categorie']" correspond à la fois aux nom des catégorie et aux class CSS.
Donc si tu as par exemple la catégorie "Voiture" en bd et la class css ".Voiture" dans ton fichier CSS, la ligne :
<div class="'.$categorie['nom_categorie'].'">'.$categorie['nom_categorie'].'</div>
te sort la class "class="'.$categorie['nom_categorie'].'"" qui correspond forcément au titre de la catégorie "'.$categorie['nom_categorie'].'" ...tu me suis
?
Hors ligne
Salut Coolman
je vois l'idée mais ce que je vois pas c est comment il va savoir qu'il doit aller chercher la class voiture car des classes, il y en a beaucoup.
en fait je me suis inspiré fortement de ton code pour ta page principal
<div id="page_principale3">
<?php
//On récupère la variable transmit par l'url
$id_transmit=$_GET['reference'];
if (!isset($_GET["reference"]) OR !is_numeric($_GET['reference'])){
//Si la variable n'existe pas ou qu'elle n'est pas de type numérique, on redirige
header('location:http://'.$_SERVER['HTTP_HOST'].'');
}
else{
// on se connecte à la base de données
include('Connections/baba.php');
mysql_connect("$hostname_baba","$username_baba","$password_baba");
mysql_select_db("$database_baba") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
$page = mysql_query("SELECT * FROM articles WHERE reference='".mysql_real_escape_string($id_transmit)."'");
//on voie si il y a quelque chose
if(mysql_num_rows($page) == 0)
{
//Si il n'y a rien, on redirige vers l'index
header('location:http://'.$_SERVER['HTTP_HOST'].'');
}
else
{
while($affiche = mysql_fetch_array($page))
{
$titre=$affiche['titre'];
$description=$affiche['auteur'];
$contenu=$affiche['description'];
$contenu = str_replace('href="/images/','rel="zoombox" href="/images/',$contenu);
$id_categorie = $affiche['id_categorie'];
}
//On ferme else
}
}
// Fermeture de la connexion à la base de données
;
?>
<h1><?php echo $row_Recordset3['titre']; ?></h1>
<br /><h2><?php echo $row_Recordset3['auteur']; ?></h2><br/>
<?php echo $contenu;?>
</div>
je suppose que j ai une classe .voiture; . moto que je veux qui s'applique quand l'article est voiture et moto.
Comment retrouve t il . voiture et .moto?
c est ça mon problême.
en tout cas, top comme tooujours.
stephi
Hors ligne
Salut stephi,
je suppose que j ai une classe .voiture; . moto que je veux qui s'applique quand l'article est voiture et moto.
Cette phrase subodore que tu fais référence à la catégorie dont dépend l'article .. c'est bien ça ?
Si c'est bien ça, en l'état ton code ne peut pas le faire car tu ne dispose pas du nom de la catégorie... tu n'as pas été assez loin dans les tutoriels mis en ligne
. Réfère toi à cette page : "Comment créer un fil d'ariane pour notre site dynamique?".
D'un autre côté, tu vas avoir un autre soucis car tu ne peux pas mettre de class CSS qui contiennent uniquement des chiffres ou des accents ou des espaces ... tu ne peux donc pas utiliser l'identifiant des catégories ni le nom des catégories tel quelle pour créer tes class CSS.
J'ai bien une idée sur le "comment faire" mais ça nécessite d'ajouter un champ en plus en bdd pour les catégories ainsi qu'une fonction. Tu devras également modifier l'ensemble de tes fichiers qui permet d'ajouter/modifier/ supprimer les catégories...
Est tu prêt(e)s et capable de faire ses modifications par toi même..?
ps : je dois utiliser le féminin ou le masculin quand je te répond (ton pseudo porte à confusion)??
Hors ligne
tu peux utiliser le masculin.
j ai fait la plus grande partie du site, une partie de ce site est inspiré de ton tuto et tout l'aspect zoombox et ckfinder et le menu accordéon d'un autre tuto.
http://www.gandon-decoration.com
c est en fait pour les articles de la rubriques ARTISTIQUE que je veux un fond différent.
je te mets le code qui gere le menu et le suivant pour l affichage que je t'ai mis tout à l heure .
et ok pour ajouter quelquechose
<div class="col">
<h1>MENU</h1>
<ul class="navigation">
<li><a href="index.php" title="page1">ACCUEIL</a></li><br/>
<li><a href="GANDON-PEINTURE-DECORATION-CONTACT.php" title="page1">CONTACT</a></li><br/>
<?php
//---- menu principal
$selreg = mysql_query("SELECT * FROM rubriques");
while($reg=mysql_fetch_array($selreg)) {
$toggleSubMenu = "<li class='toggleSubMenu";
if(isset($_GET['cat']))
{
if($_GET['cat'] == $reg['ID'])
{
$toggleSubMenu .= " open";
}
}
$toggleSubMenu .= "'><span>".toutmajuscule($reg['theme'])."</span>";
echo $toggleSubMenu;
echo '<ul class="subMenu">';
$seldep= mysql_query("SELECT * FROM articles WHERE rubriqueID ='".$reg['ID']."'");
while($dep = mysql_fetch_array($seldep))
{
$article = "<li><a href='GANDON-DECO-GALERIE.php?reference=$dep[reference]&cat=".$reg['ID']."&article=".$dep['reference']."'";
if(isset($_GET['article']))
{
if(intval($dep['reference']) == intval($_GET['article']))
{
$article .= " class = 'opened'";
}
}
$article .= ">".$dep['titre']."</a></li>";
echo $article;
}
echo '</ul>';
echo '</li>';
}
?>
</ul>
<h1>Partenaires</h1></div></div>
<p><br />
</p>
</div>
<div id="page_principale3">
<?php
//On récupère la variable transmit par l'url
$id_transmit=$_GET['reference'];
if (!isset($_GET["reference"]) OR !is_numeric($_GET['reference'])){
//Si la variable n'existe pas ou qu'elle n'est pas de type numérique, on redirige
header('location:http://'.$_SERVER['HTTP_HOST'].'');
}
else{
// on se connecte à la base de données
include('Connections/baba.php');
mysql_connect("$hostname_baba","$username_baba","$password_baba");
mysql_select_db("$database_baba") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
$page = mysql_query("SELECT * FROM articles WHERE reference='".mysql_real_escape_string($id_transmit)."'");
//on voie si il y a quelque chose
if(mysql_num_rows($page) == 0)
{
//Si il n'y a rien, on redirige vers l'index
header('location:http://'.$_SERVER['HTTP_HOST'].'');
}
else
{
while($affiche = mysql_fetch_array($page))
{
$titre=$affiche['titre'];
$description=$affiche['commentaire'];
$contenu=$affiche['description'];
$contenu = str_replace('href="/images/','rel="zoombox" href="/images/',$contenu);
$id_categorie = $affiche['id_categorie'];
}
//On ferme else
}
}
// Fermeture de la connexion à la base de données
;
?>
<h1><?php echo $titre; ?></h1>
<br /><h2><?php echo $description; ?></h2><br/>
<?php echo $contenu;?>
</div>
voila, ça va peut etre t'aider
stephi
Dernière modification par stephi (25-06-2011 16:38:39)
Hors ligne
Si c'est juste pour une seule catégorie, j'ai plus simple
.
Visiblement ta catégorie "Artistique" porte l'identifiant 4.
Tu déplaces le div <div id="page_principale3"> qui semble être le conteneur de tes articles pour la placer juste au dessus de <h1><?php echo $titre; ?></h1>
Tu modifies ensuite la div de cette façon :
<?php
//si la catégorie est le numéro 4
if($id_categorie == 4)
{
//on change le nom de la class
echo '<div id="artistique">';
}
else
{
//Sinon on ne change rien
echo '<div id="page_principale3">';
}
?>Puis tu ajoutes une class css "artistique" qui correspond à la class "page_principale3" mais avec une couleur de fond différent.
<?php
//si la catégorie est le numéro 4
if($id_categorie == 4)
{
//on change le nom de la class
echo '<div id="artistique">';
}
else
{
//Sinon on ne change rien
echo '<div id="page_principale3">';
}
?>
<h1><?php echo $titre; ?></h1>
<br /><h2><?php echo $description; ?></h2><br/>
<?php echo $contenu;?>
</div>ps : si je n'ai pas pris le bon "div", tu adaptes ^^.
Hors ligne
salut coolman.
oui dans ce cas c est juste pour une catégorie.
oui <div principal...> est le conteneur principal.
je teste ça tout à l heure et je te dis ça.
merci
stephi
Hors ligne
Hors ligne
impec comme toujours,
ja i donc un fond différent pour artistique.
encore merci à toi
ça searit intéressant de voir comment on pourrait faire avec ton astuce de rajouter un champs dans la table pour toutes les catégories comme tu disais plus haut mais un autre jour, je te laisse te reposer. c est dimanche QUAND MËME
à bientôt
stephi
Hors ligne
Tant mieux si ça fonctionne, je dormirais mieux ce soir ^^. Pour mon "astuce", on verra si besoin.
En passant, il faudra revoir le côté "optimisation" de ton site pour le référencement ...ça sera pour plus tard 
Hors ligne
Propulsé par PunBB
© Copyright 2007
Forum créer un site