Autor | Zpráva | ||
---|---|---|---|
tazzys Profil |
Dobrý den, mám tabulku a potřebuju aby v každém sloupci bylo barevně označeno nejvyšší číslo.
mám toto: <?php $nacitane_vsetky_hraci = mysql_query("SELECT * FROM prestizclenu ORDER BY id asc"); $i = 0; $a = 1; while($vsetky_hraci = mysql_fetch_array($nacitane_vsetky_hraci)){ $nacitane_hraci[$i] = $vsetky_hraci; $i++; } for($y=0;$y<$i;$y++){ if ($nacitane_hraci[$y]['p5']>="1000"){ $preb5='<font color="Green">'.$nacitane_hraci[$y]['p5'].'</font>'; } elseif ($nacitane_hraci[$y]['p5']<="999"){ $preb5='<font color="red">'.$nacitane_hraci[$y]['p5'].'</font>'; } if ($nacitane_hraci[$y]['p4']>="1000"){ $preb4='<font color="Green">'.$nacitane_hraci[$y]['p4'].'</font>'; } elseif ($nacitane_hraci[$y]['p4']<="999"){ $preb4='<font color="red">'.$nacitane_hraci[$y]['p4'].'</font>'; } if ($nacitane_hraci[$y]['p3']>="1000"){ $preb3='<font color="Green">'.$nacitane_hraci[$y]['p3'].'</font>'; } elseif ($nacitane_hraci[$y]['p3']<="999"){ $preb3='<font color="red">'.$nacitane_hraci[$y]['p3'].'</font>'; } echo ' <tr nowrap> <td><b>'.$a++.'</b></td><td nowrap>'.$nacitane_hraci[$y]['hrac'].'</td> <td nowrap><b>'.$preb5.'</b></td><td nowrap>'.$nacitane_hraci[$y]['d5'].'</td> <td nowrap><b>'.$preb4.'</b></td><td nowrap>'.$nacitane_hraci[$y]['d4'].'</td> <td nowrap><b>'.$preb3.'</b></td><td nowrap>'.$nacitane_hraci[$y]['d3'].'</td> </tr> '; } ?> Asi to bude hodnotou max ale nevim vůbec jak to aplikovat, poradíte ? |
||
visionic Profil * |
#2 · Zasláno: 8. 5. 2016, 23:06:44
Nedelej to v php, ale v css pres :nth-child(1)
.cisla { color: black; } .cisla:nth-child(1) { color: red; } |
||
Alphard Profil |
Přeskočte rovnou na [#5] Alphard, tady jsem si nevzpomněl na funkci array_column(). :-)
Nejdříve je třeba znát maximální hodnoty v jednotlivých sloupcích. Šlo by použít mysql agregační funkci max, ale to by tam musel být druhý dotaz, takže to bych vynechal. Na straně php buď vytvořit dočasná pole, kde budou vždy hodnoty jednohlo sloupce a pak použit funkci max(), nebo ty maxima kontrolovat přímo v tom prvním cyklu. Až budete znát maxima, je to jen jednoduchá podmínka. $nacitane_vsetky_hraci = mysql_query("SELECT * FROM prestizclenu ORDER BY id asc"); $i = 0; $a = 1; $maxima = ['p5' => -1]; # pokud ve sloupcích mohou být záporné hodnoty, musí být default menší while($vsetky_hraci = mysql_fetch_array($nacitane_vsetky_hraci)) { $nacitane_hraci[$i] = $vsetky_hraci; $i++; if ($vsetky_hraci['p5'] > $maxima['p5']) { $maxima['p5'] = $vsetky_hraci['p5']; } } // ... if ($nacitane_hraci[$y]['p5'] == $maxima['p5']) { // maximální řádek(y) } |
||
visionic Profil * |
Oooo pardon, nevsimnul jsem si, ze nevypisujes dle toho největšího čísla.
Co treba zajit prochazeni poli pomoci max($nacitane_hraci[$y]['p5']);
|
||
Alphard Profil |
#5 · Zasláno: 9. 5. 2016, 01:04:32
Problém s funkcí max je v adresování sloupce v 2D poli. Zápis
$nacitane_hraci[$y]['p5'] ukazuje na konkrétní prvek, tam nemá smysl hledat maximum, zápis $nacitane_hraci[$y] ukazuje na řádek, tam by hledání maxima smysl mít mohlo, nicméně to tazatel nechce.
Řešením je použít funkci array_column, která vrátí hodnoty požadovaného sloupce a na ty lze použít max. Pak se to zjednoduší na: $maxima = ['p5' => max(array_column($nacitane_hraci, 'p5'))]; (Funkce array_column() je dostupná od PHP 5.5, náš zvýrazňovač ji neumí správně obarvit.) |
||
Časová prodleva: 9 let
|
0