Autor | Zpráva | ||
---|---|---|---|
kimmy Profil * |
#1 · Zasláno: 29. 12. 2008, 10:27:06
Ahoj,
prosím neporadil by mi někdo, jak docílit u porovnávání produktů toho (jako například Zde), že pokud jsou v řádku všechny hodnoty stejné, pak je písmo šedé a pokud se v řádku nějaké hodnoty liší, tak je písmo černé? Mám takovou část tabulky, která mi ty hodnoty vypisuje, vzhledově je to podobné jako v odkazu výše, jen písmo mám pořád černé.. $i=0; foreach($rows as $polozka){ //pres vsechny polozky if ($i%2 == 0) {$style='style="background-color:#eee;"';} else {$style='';} echo '<tr '.$style.'><th>'.$polozka.'</th>'; foreach($columns as $id){ //pres vsechny sloupce if(isset($table[$polozka][$id])){ //mame hodnotu echo '<td>'.$table[$polozka][$id].'</td>'; } else { //nemame hodnotu echo '<td> </td>'; } } echo '</tr>'; $i++; } A ještě dodám, co obsahují pole $table, $rows a $columns: while($row=mysql_fetch_assoc($query)){ if(!isset($table['produkt'][$row['id_produkt']])){ $table['produkt'][$row['id_produkt']]=$row['produkt']; } if(!empty($row['polozka'])){//pridame polozku: $table[$row['polozka']][$row['id_produkt']]=$row['hodnota']; } } $order=array(); foreach($table as $key => $val){ $order[$key]=count($val); } $rows=array_keys(array_reverse($order)); $columns=array_keys($table['produkt']); Nevěděl by, prosím, někdo, kam a jakou podmínku vepsat, aby to obarvilo písmo na šedé, pokud jsou hodnoty v řádku všechny stejné? Nebo dát defaultně písmo šedé a obarvit písmo černou, když se některé hodnoty liší - Podle toho, co je jednodušší.. Děkuju moc. |
||
Aesir Profil |
#2 · Zasláno: 29. 12. 2008, 11:23:37
kimmy
Nejmíň pracné mi přijde dát hodnoty do pole a ty porovnat :) Nápověda: array_intersect, array_diff, apod. |
||
kimmy Profil * |
#3 · Zasláno: 29. 12. 2008, 11:26:26
Aesir
Nemohl by si, prosím, uvést příklad? |
||
Aesir Profil |
#4 · Zasláno: 29. 12. 2008, 12:22:29
kimmy:
Kompletně to rozepisovat nebudu, ale předpokládám, že na vstupu máte pole vypadající nějak takto: $products = array( '1' => array('Color' => 'Black', 'Width' => '188 cm'), '2' => array('Color' => 'White', 'Width' => '188 cm'), '3' => array('Color' => 'Black', 'Width' => '188 cm') ); Potřebujete tedy jednotlivé vlastnosti rozházet do separátních polí, např. takto: $colors = array( '1' => 'Black', '2' => 'White', '3' => 'Black' ); Pak už můžete jednotlivé pole jednodušše porovnat pomocí nějaké callback funkce. Nebo mě napadá fce array_unique :)) if (1 == count(array_unique($colors))) { // vsechny barvy jsou stejne } |
||
kimmy Profil * |
#5 · Zasláno: 29. 12. 2008, 12:47:07
Aesir
Děkuji za reakci, ale to moje pole vypadá jinak - například takto: Array ( [produkt] => Array ( [20] => Maliny [21] => Mandarinky [24] => Nektarinky ) [img] => Array ( [20] => maliny-1200750316.jpg [21] => mandarinka-1200750371.jpg [24] => nektarinka-1200750462.jpg ) [Velikost] => Array ( [20] => Drobné jako borůvka [21] => Velké jako jablko [24] => Velké jako jablko ) [Chuť] => Array ( [21] => Sladké [24] => Sladké [20] => Sladké ) ) A teď bych potřebovala jen vytvořit nějakou podmínku, která by zjistila, zda jsou ty hodnoty v daném řádku stejné.. V tomto případě by se mělo zjistit, že: Sladké == Sladké == Sladké -> písmo obarvi šedě Drobné jako borůvka <> Velké jako jablko == Velké jako jablko -> písmo obarvi černě Šlo by to nějak, prosím? |
||
Alphard Profil |
#6 · Zasláno: 29. 12. 2008, 12:55:12
„A teď bych potřebovala jen vytvořit nějakou podmínku, která by zjistila, zda jsou ty hodnoty v daném řádku stejné..“
viz Aesir if (1 == count(array_unique($colors))) { // vsechny barvy jsou stejne } trochu to vysvětlím: duplicity se vyhodí, pokud bylo vše stejné, zůstane jen jeden prvek, pokud ne, více |
||
tiso Profil |
#7 · Zasláno: 29. 12. 2008, 12:55:44
kimmy - Aesir ti poradil dobre:
foreach($rows as $polozka){ //pres vsechny polozky if (1 === count(array_unique($polozka))) { // vsechny barvy jsou stejne } ... |
||
kimmy Profil * |
#8 · Zasláno: 29. 12. 2008, 13:11:18
Alphard
tiso Aesir Aha, to mě nenapadlo, už to funguje. Mockrát všem děkuju. |
||
Časová prodleva: 15 let
|
0