Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kolor cyfry w zależnośći od jej wartośći
Forum PHP.pl > Forum > Gotowe rozwiązania
xamrex
Szukam skryptu który w zależności od wielkości/wartośći liczby koloruje ją na dany kolor.
np jeśli cyfra wynosi od 0 - 5 to kolor czerwony, jeśli powyżej 5 to niebieski
Chciałbym żeby kolor czerwony stopniowo stawał się coraz ciemniejszy (0 czerwony jasny 3 czerwony 5 czerwony ciemny)
Czy da się to napisać nie robiąc warunków?
wookieb
Nie podałeś języka... Ale w każdym jest to bardzo proste.
Van Pytel
Praktycznie w kazdym jezyku musisz uzyc wyrazen warunkowych- if
zend
Pewnie chodzi Ci o to żeby nie trzeba było robić masy if'ow dla tych warunków, jest to proste, oprzyj to o tablice
xamrex
oczywiście chodzi o php
Napisałem coś takiego:


  1. $cyfra = 7;
  2. switch ($cyfra)
  3. {
  4. case ($cyfra)>5:
  5. echo "<font color='#000000'>$cyfra</font>";
  6. break;
  7.  
  8.  
  9. case ($cyfra)>1:
  10. echo <font color='#FF0000'>$cyfra</font>";
  11. break;
  12. }


Cytat
Pewnie chodzi Ci o to żeby nie trzeba było robić masy if'ow dla tych warunków, jest to proste, oprzyj to o tablice

Nie potrafię
zend
  1. $data = array(0 => 'green' , 5 => 'more green' , 10 => 'more and more green');
  2.  
  3. function getColor($value , array $data)
  4. {
  5. $value = (int)$value;
  6. if(isset($data[$value]))
  7. return $data[$value];
  8.  
  9. $lastValue = null;
  10. foreach($data as $index => $color)
  11. {
  12. if((int)$index > $value)
  13. return $lastValue;
  14.  
  15. $lastValue = $color;
  16. }
  17.  
  18. return $lastValue;
  19. }
  20.  
  21. echo getColor(11 , $data);

Proszę
xamrex
dostaję błąd
Parse error: parse error, expecting `'&'' or `T_VARIABLE' or `T_CONST' in c:\usr\krasnal\www\public_html\color.php on line 4
4 linijka u mnie to
  1. function getColor($value , array $data)

Jednak z tego co tu widzę kolor nie będzie stopniowo przechodził (jeśli nie zrobi się założeń)
Czy jest sposób żeby kolor powoli się przemieniał w następny?
zend
Kolorów to ja nie mam zamiaru za Ciebie wstawiać, google colors. Jeśli edytowałeś tablice to tam szukaj błędu
xamrex
Czyli ciężko zrobić tak by nie pisać odpowiednich założeń do tablic a kolory same płynnie przechodziły w inny ?
zend
Cytat
Czyli ciężko zrobić tak by nie pisać odpowiednich założeń do tablic a kolory same płynnie przechodziły w inny ?
Ciężko ruszyć głową i kliknąć w link który podałem a potem znaleźć sobie jak przechodzą kolory w html'u i dodać? rgb
xamrex
  1. <?php
  2. $data = array(0 => '#000000' , 5 => '#FFFFFF' , 10 => '#FF0000');
  3.  
  4. function getColor($value , array $data)
  5. {
  6. $value = (int)$value;
  7. if(isset($data[$value]))
  8. return $data[$value];
  9.  
  10. $lastValue = null;
  11. foreach($data as $index => $color)
  12. {
  13. if((int)$index > $value)
  14. return $lastValue;
  15.  
  16. $lastValue = $color;
  17. }
  18.  
  19. return $lastValue;
  20. }
  21.  
  22. echo getColor(11 , $data);
  23. ?>

dostaje błąd
Parse error: parse error, expecting `'&'' or `T_VARIABLE' or `T_CONST' in c:\usr\krasnal\www\public_html\color.php on line 4
My się chyba nie rozumiemy.
Jeśli chciałbym, zrobić 100 różnych odcieni to prawdopodobnie musiałbym definiować 100 wartości w $data. Chciałbym definiować TYLKO skrajne wartości.
np dla 1 i dla 100(50 np to będzie kolor między 1 a 100)
zend
Cytat(xamrex @ 7.06.2010, 15:23:49 ) *
Szukam skryptu który w zależności od wielkości/wartośći liczby koloruje ją na dany kolor.
np jeśli cyfra wynosi od 0 - 5 to kolor czerwony, jeśli powyżej 5 to niebieski
Chciałbym żeby kolor czerwony stopniowo stawał się coraz ciemniejszy (0 czerwony jasny 3 czerwony 5 czerwony ciemny)
Czy da się to napisać nie robiąc warunków?

Trzeba było pisać odrazu o co chodzi, bo ja nie mam zamiaru pisać od nowa kodu tylko dlatego że nie potrafiłeś napisać co chcesz osiągnąć w pierwszym poscie. Dostałeś kod w którym podajesz zakres i od 0 do 5 masz jeden kolor, od 5 do 10 inny itd. Przedziały itak będziesz musiał zdefiniować

Tak wogóle to nie mam pojęcia skąd ten błąd, ja dałem sprawdzoną wersję, poza tym forum to nie parser
xamrex
Pierwszy post
Cytat
Szukam skryptu który w zależności od wielkości/wartośći liczby koloruje ją na dany kolor.
np jeśli cyfra wynosi od 0 - 5 to kolor czerwony, jeśli powyżej 5 to niebieski
Chciałbym żeby kolor czerwony stopniowo stawał się coraz ciemniejszy (0 czerwony jasny 3 czerwony 5 czerwony ciemny)
Czy da się to napisać nie robiąc warunków?

Możliwe że troszkę źle sprecyzowane
Czy jest jakaś istotna różnica między wsadzaniem tego do tabeli a robienie z tego z case?
zend
W tablicy mniej się opiszesz, co znaczy też że kod jest lepiej napisany, szybszy, elastyczniejszy i prostszy w utrzymaniu
xamrex
Jednak mi wyskakuje ten błąd.
z4jc3v
niestety bez warunków sie nie obejdziesz winksmiley.jpg.
misiek08
Oj ludzie. Nie chcę mi się pisać takiego kodu, bo jest on bardzo prosty nawet dla początkującego, ale postaram się go dość mocno opisać.

Tworzysz tablicę, w której każda wartość to kolejna tablica, która ma 2 pola (klucze definiują przedział liczbowy, wartości - przedział kolorów).
Potem zamieniasz kolor html na RGB bądź HSV i na podstawie skrajnych kolorów i wielkości przedziału stopniujesz. Robiłem takie coś pół roku temu i najwięcej problemu było ze znajdowaniem przedziału, ale 2-3 dni i zrobisz.
beamer
Po pierwsze, ponieważ to mój pierwszy post to siemka, mam na imię Marcin winksmiley.jpg

Po drugie - nie róbcie jaj laugh.gif nie wiem czy to taki banał czy coś źle zrozumiałem...

Czerwony ciemny->jasny:
  1. for ($a=0;$a<=100;$a++) echo '<a style="color:rgb('.($a*2+50).', 0, 0)">'.$a.'</a>';

Czerwony->niebieski:
  1. for ($a=0;$a<=100;$a++) echo '<a style="color:rgb('.(255-($a*2+27)).',0,'.($a*2+27).')">'.$a.'</a>';

...raptem cała linijka kodu.. z pętlą sprawdzającą.


Pozdrawiam

P.S. Mam nadzieję, że nie przekroczyłem czasu odkopywania tematów... winksmiley.jpg może się komuś przyda.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.