Ciao a tutti ragazzi! Come al solito avrei un piccolo problemino...
In sostanza devo creare "al volo" un file CSS che abbia come colore di sfondo un colore settato a priori. Mi spiego meglio: l'utente può scegliere di avere uno sfondo personalizzato settando la "SKIN" attraverso un menù a tendina che contiene ad esempio BLU,ROSSO,VERDE,etc. Facendo questo si va a modificare il campo "theme" del Database in corrispondenza della sua riga della tabella utenti. Fin qui tutto ok, prendo il valore dal form e lo butto nel database!
ok il prob è che all'inizio di ogni "sessione" il sistema deve controllare se l'utente ha selezionato un nuovo tema oppure ha lasciato quello di default, ossia se nel DB c'è scritto un valore oppure c'è null. Nel file CSS c'è una variabile $colore che dà appunto il colore allo sfondo e deve variare proprio in funzione di quello che c'è scritto nel DB, ossia se c'è tipo "green" la variabile $colore sarà uguale a "#00FF00", se sarà "blu" $colore="#0000FF", se sarà null ci sarà il colore di default cioè $colore="#000000". Voi con cosa provereste? Con uno switch/case ovviamente! E' quello che ho fatto anch'io solo che sono andato a controllare meglio e la variabile di sessione non esiste! Cioè... io il controllo se l'utente ha una skin oppure ha quella di default lo faccio nella pagina index.php e lì setto $_SESSION['theme'] e gli assegno come valore quello che recupero dal database e nella pagina css non c'è alcun riferimento alla variabile $_SESSION['theme']. Ho provato anche a fare session_start() nella pagina css però non funziona!!
Vi posto il codice delle 2 pagine:
index.php
codice:
<?php
require_once('config.php');
require_once('classi.php');
require_once('functions.php');
$connessioneDB = new ConnessioneDB();
session_start();
/* RECUPERO IL TEMA PREFERITO DELL'UTENTE */
$query_theme = mysql_query("SELECT theme FROM utenti WHERE username='".$_SESSION['username']."'");
$result = mysql_fetch_array($query_theme);
$SESSION['theme'] = ($result[0]==null?$default_theme:$result[0]);
Nota: la variabile $default_theme è settata nel file config.php ed ha valore $default_theme = 'black';
style.php
codice:
header("Content-type: text/css");
switch($_SESSION['theme']){
case 'blue': $colore = '#0000FF'; break;
case 'red': $colore = '#FF0000'; break;
case 'green': $colore = '#00FF00'; break;
case 'black': $colore = '#000000'; break;
}
Come avrete notato nella index.php mi collego al DB e se il valore è diverso da null setto $_SESSION['theme'] con quello che c'è scritto, altrimenti gli assegno un valore di default che setto a parte nel file config.php
Ho provato anche a collegarmi dal file CSS al DB ma se non riesco a vedere le variabili di sessione, non so quale utente e connesso e quindi non so da quale riga della tabella utenti devo andare a prelevare il tema... Vi preeeggooooo!!! Aiutatemi!!!