[PHP] per Abfrage die Schriftfarbe verändern?

uwee

Erfahrenes Mitglied
Hallo!

vorweg: ich weiss, dass php zum Programmieren und html zum darstellen geeigenet ist, aber was ich haben möchte, kann nicht mit html realisiert werden.

Folgendes: Ich habe eine MySQL-Db in der Altersfreigaben stehen. (FSK) Die Freigaben sind folgendermaßen gestaffelt:
0, 6, 12, 14, 16, 18

Nun möchte ich, wenn ich per SELECT die Daten auf einer PHP-Seite ausgebe, dass je nach FSK die Farbe für die Zahl geändert wird:
0 = SCHWARZ
6 = HELLGRÜN
12 = DUNKELGRÜN
14 = GELB
16 = ORANGE
18 = ROT

Dummerweise hab ich keinen blassen Schimmer ob das geht und wenn ja, wie das geht.
Ich könnte mir vorstellen, dass es mit einer if-Anweisung gemacht werden könnte. Aber wie, das weiss ich nciht.

Das Feld heisst übrigends "fsk", da soll die FONT COLOR in die Zahlenabhändigen Farben geändert werden.

DANKE

UweE
 
ich weiss nicht, ob das geht, aber so könnte ich mir das vorstellen...

PHP:
...
if (fsk<6){font color='black'}
else{
if (fsk>=6 and <12){font color='grey'}
else{
if (fsk>=12 and <14){font color='green'}
else{
if (fsk>=14 and <16){font color='yellow'}
else{
if (fsk>=16 and <18){font color='orange'}
else{
if (fsk>=18){font color='red'}
}}}}};
...

ich weiss, dass man das so nicht schreiben kann, aber vl. stimmt die Richtung?!
 
Das Ergebnis nach dem select anzeigen zu lassen schafftst Du, oder?
Dann könntest Du Dir vorher ein Array anlegen:
PHP:
$farben = array("0" => "black", "6" => "lightgreen", "12" => "green", "14" => "yellow", "16" => "orange", "18" => "red");
So und da, wo Du Deine Ausgabe der Daten machst, da machst Du dann
PHP:
echo <font color='".$farben[Varibalenname der Ausgabe]."'>Ausgabe der Zahl</font>

redlama

P.S. Ist nicht getestet!
 
also ich würd da nen 19 elementigen array nehmen:

$farbe = array("#111111","","","","","","#xxxxxx",....);

also so dass du quasi im array $farbe[0] schwarz zu stehen hast (bzw #111111) im array $farbe[6] grau usw.

Diesen array erzeugst du einmalig am Anfang deines Dokumentes.

In einer while oder for Schleife rufst du dann ja sicher die daten ab und übergibst den Inhalt von fsk in $fsk. Dann schreibst du in den html Teil einfach bei <font ... color=\"$farbe[$fsk]\">
 
Du könntest das Ganze auch innerhalb der Abfrage regeln:
Code:
SELECT
        CASE 18
          WHEN  0 THEN 'black'
          WHEN  6 THEN 'lightgreen'
          WHEN 12 THEN 'darkgreen'
          WHEN 14 THEN 'yellow'
          WHEN 16 THEN 'orange'
          WHEN 18 THEN 'red'
        END AS `fsk_darstellungsfarbe`
 
redlama hat gesagt.:
Das Ergebnis nach dem select anzeigen zu lassen schafftst Du, oder?
Dann könntest Du Dir vorher ein Array anlegen:
PHP:
$farben = array("0" => "black", "6" => "lightgreen", "12" => "green", "14" => "yellow", "16" => "orange", "18" => "red");
So und da, wo Du Deine Ausgabe der Daten machst, da machst Du dann
PHP:
echo <font color='".$farben[Varibalenname der Ausgabe]."'>Ausgabe der Zahl</font>

redlama

P.S. Ist nicht getestet!


funktioniert auch leider nicht so ganz ;)
es kommt zwar kein Fehler, aber die Farbe bleibt SCHWARZ


@Gumbo:
WO müsste ich das denn dann einfügen? in der Ausgabe oder in der Abfrage? hab die Ausgabe in einer Tagelle, der Part für FSK sieht so aus:
PHP:
<td>",$row->fsk,"</td>
oder in der SELECT Abfrage:
PHP:
$sql="SELECT id,name.....,fsk FROM table ".
"WHERE $suchen LIKE '%" . ($wort) ."%' " .
"ORDER BY $sort";
 
Was passiert denn, wenn Du Dir statt dessen nur den Inhalt des Arrays ausgeben lässt?
Gibt er Dir dann die richtigen Farben an?

redlama
 
Innerhalb der Abfrage:
PHP:
<?php
	[…]
	$query = "
		SELECT
		        `id`,
		        `name`,
		        `fsk`,
		        CASE `fsk`
		          WHEN  0 THEN 'black'
		          WHEN  6 THEN 'lightgreen'
		          WHEN 12 THEN 'darkgreen'
		          WHEN 14 THEN 'yellow'
		          WHEN 16 THEN 'orange'
		          WHEN 18 THEN 'red'
		        END AS `fsk_darstellungsfarbe`

		  FROM
		        `tabelle`

		  WHERE
		        `".$suchen."` LIKE '%".$wort."%'

		  ORDER BY
		        ".$sort."
	"; 
	$result = mysql_query($query);
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		[…]
		echo '<td><span style="color:'.$row['fsk_darstellungsfarbe'].">'.$row['fsk'].'</span></td>';
		[…]
	}
	[…]
?>
 
als antwort kommt leider:

Keine Ergebnisse vorhanden (Text ist für den Fall, dass wirklich keine Ergebnisse da sind)
 
Zurück