Cambiare colore del background a seconda del risultato

Salve a tutti ho seguito le vostr guide molto molto dettagliate ed ho sviluppato un mio codice per l'inserimento di dati sul database, ma mi sto incartando su una cosa abbastanza semplice, ovvero, vorrei che a seconda del risultato in questo caso $stato ( che può essre = sistemato, da sistemare, ecc ) si abbia un diverso colore nella tabella, verde, rosso ecc.

ecco il codice:

echo '
<center><table width="1200" border="0" cellpadding="5" cellspacing="10">
<tr>
  <th bgcolor="#CEECF5">Nome</th>
  <th bgcolor="#CEECF5">Cognome</th>
  <th bgcolor="#CEECF5">Indirizzo</th>
  <th bgcolor="#CEECF5">Telefono</th>
  <th bgcolor="#CEECF5">eMail</th>
  <th bgcolor="#CEECF5" width="350">Messaggio</th>
  <th bgcolor="#CEECF5" width="100">Quando</th>
  <th bgcolor="#CEECF5" width="90">Stato</th>
  <th bgcolor="#CEECF5">Operatore</th>
</tr></center>';

while ($row = mysql_fetch_assoc($result)) {
$nome         = htmlentities($row['nome']);
$cognome      = htmlentities($row['cognome']);
$indirizzo    = htmlentities($row['indirizzo']);
$telefono     = htmlentities($row['telefono']);
$email        = htmlentities($row['email']);
$messaggio    = htmlentities($row['messaggio']);
$data         = htmlentities($row['data']);
$stato        = htmlentities($row['stato']);
$operatore    = htmlentities($row['operatore']);

if(!$email)     $email = '&nbsp;';
if(!$messaggio) $messaggio = '&nbsp;';

echo "<tr>
   <td bgcolor='#EFF5FB'><center>$nome</center></td>
   <td bgcolor='#F2FBEF'><center>$cognome</center></td>
   <td bgcolor='#EFF5FB'><center>$indirizzo</center></td>
   <td bgcolor='#F2FBEF'><center>$telefono</center></td>
   <td bgcolor='#EFF5FB'><center>$email</center></td>

   <td bgcolor='#F2FBEF'><center>$messaggio</center></td>
   <td bgcolor='#EFF5FB'><font size='1'><center>$data</center></font></td>
   <td bgcolor='#F2FBEF'><center>$stato</center></td>
   <td bgcolor='#EFF5FB'><center>$operatore</center></td>
  </tr>";
}

echo '</table>';

Grazie tante in anticipo

inviato 4 anni fa
claudio.brocchi
X 0 X

Potresti utilizzare un array in cui associ ai diversi stati un colore:

$colori = array('sistemato' => '#EFF5FB', 'da sistemare' => '#F2FBEF');

Poi quando stampi la riga strasformi lo stato in colore:

echo "<tr>
   <td bgcolor='" . $colori[$row['stato']] . "'><center>$nome</center></td>
risposto 4 anni fa
Gianni Tomasicchio
X 1 X

Potresti fare qualche cosa di più per poterlo facilmente modificare a posteriori, ovvero utilizzare i fogli di stile, magari esterni.

Ad esempio creare un file colori_sfondo.css

.rosso {background-color: red;}

.giallo {background-color: yellow;}

e così via, salvarlo come file di testo per esempio colori_sfondo.css (attenzione alla notifica, ogni nome di classe inizia sempre col punto! Si può usare la notifica esadecinale esattamente come l'avevi usata tu .fumo {background-color: #F5F5F5;}

Quindi il file va applicato al file htm (o PHP) che deve visualizzare la tabella, mettiamo caso:

<html>

<head>

<link rel="stylesheet" href="percorso_file_css/colori_sfondo.css">

</head>

<body>

....

<table>

<tr class="<?php echo $colore; ?>"><td>..... </tf></tr>

</table>

</body>

</html>

notare due cosucce: uno ho impostata la classe nelle righe e non nelle celle, così l'effetto è il medesimo ma eviti di ripeterla più volte.

2) il nome della classe è passato attraverso il PHP magari col metodo iniziato a definire da Gianni.

In questo modo sia il file html che la parte in php rimarranno comunque inalterati e le uniche modifiche da apportare saranno al foglio di stile.

Ovviamente puoi dare una classe all'intera tabella in modo da evitare di dover sistemare le cose con la formattazione all'interno dell'html.

Così:

<table width="1200" border="0" cellpadding="5" cellspacing="10">

diventa

<table class="tabella">

e colori_sfondo.css diverrebbe:

table {

  background-color: transparent;

  margin: 0 auto;  /* allinea la tabella al centro senza margini nella pagina */

  text-align: center; /* allinea tutto il testo (e/o immagini) al centro nella tabella */

  width: 1200px;

  height: auto;

  border: none;

  border-spacing:0;

  border-collapse:collapse;

}

.rosso {background-color: red;}

.giallo {background-color: yellow;}
.fumo {background-color: #F5F5F5;}

Capisci perché è meglio usare i fogli di stile in luogo della formattazione inlinea :)

M.

risposto 4 anni fa
Marco Grazia
Grazie avevo pensato la stessa cosa, solo sbagliavo le parentesi ;)claudio.brocchi 4 anni fa
@claudio brocchi: Di nulla felice di averti aiutato.Marco Grazia 4 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda