Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kolorowanie, pomysly, ulepszenia itd.
Forum PHP.pl > Forum > Przedszkole
goped
witam, chcialbym wiedziec co sadzicie o skrypcie na koloranie postow na przemian.
bedzie on wygladal nastepujaco:

$kolor=1;
while(warunek)
{
if($kolor==1;)
powiedzmy niebieski;
$kolor=2;
else
powiedzmy zielony
$kolor=1
}

ale powiedzcie co bedzie szybsze, drugi if czy else?, chyba else? moze znacie jakis lepszy sposob? no i jeszcze jedno, czy znacie jakis sposob, zeby powiedzmy, mam 5 plikow, i ja podam folder z nimi, albo te pliki, i ona wylosuje ktorys, albo dwa? czy moze trzeba to robic przez rand i ify. z gory dzieki za pomoc
kicaj
Wstaw kod miedzy [php].
Skrypt? Nazywasz to skryptem?
Te kilka linijek mozna zmiescic w jednej smile.gif
goped
to jest zarys skryptu, ma mowic o pomysle a nie jak wyglada juz skrypt, dlatego nie jest w [php][/php]
unknow
a ja proponuje cos innego... sam mam to u siebie i wszystko dziala bardzo dobrze. kolory sa wybierane losowo :]

w naglowku strony pomiedzy dopisz:
  1. <head>
  2. <?php
  3. $color = rand(x,y);
  4. echo &#092;"<link rel=\"stylesheet\" type=\"text/css\" href=\"\" . $color . \"\" />\";
  5. ?>
  6. </head>


w miejsce x i y wpisz dwie dowolne liczby, ktore oznaczaja zakres liczb.
w pliku, wktorym umiesciles kod dodaj klasy, np.:
  1. <div class="nadaj_kolor">
  2. zawartosc div'a
  3. </div>


utworzi pliki *.css o nazwach odpowiednio z zakresu liczb i dodaj w nich kolory do klas utworzonych w poprzednim pliku:
Kod
.nadaj_kolor {
color: #f00;
background-color: #000;
}


moze troche niejasno napisalem, ale to dziala i to dobrze.
goped
dzieki, fajny, ale chetnie poczekam na jeszcze inne propozycje, ale nie jest zly
rogrog
ja kiedyś robiłem w podobny sposób jak Ty, teraz uprościłem sobie życie korzystając ze zmiennych statycznych w funkcjach:

  1. <?php
  2.  
  3.  
  4. // funkcja kolorująca tło
  5.  
  6. function kolorujTlo(){
  7. static $kolor;
  8.  
  9. $kolor1 = '#f5f5f5'; //jeden z kolorów
  10. $kolor2 = '#f9f9f9'; //drugi z kolorów
  11.  
  12. if($kolor == $kolor1){
  13. $kolor = $kolor2;
  14. } else {
  15. $kolor = $kolor1;
  16. }
  17.  
  18. return $kolor;
  19. }
  20.  
  21. /* Ilustracja użycia */
  22.  
  23. echo '<table>';
  24.  
  25. while(...){
  26.  
  27. echo '<tr><td bgcolor=\"'. kolorujTlo() .'\">post</td></tr>';
  28.  
  29. }
  30.  
  31. echo '</table>';
  32.  
  33. ?>


@goped: oczywiście if...else jest szybsze niż podwójne if
FiDO
Funkcje wybierajaca kolor mozna jeszcze uproscic..
  1. <?php
  2.  
  3. function kolorujTlo(){
  4. static $kolor = 0;
  5.  
  6. return ($kolor++ % 2) ? &#092;"#f5f5f5\" : \"#f9f9f9\";
  7. }
  8.  
  9. ?>
goped
fido, nakierujesz mnie na to co to te %, to jest 1 procent z 2 czy to cos robi?

i tak wogole, wiem, ze moze bedziecie sie smiali, ale nie za bardzo rozumiem wasze skrypty, mozecie mi wytlumaczyc?
FiDO
Cytat(goped @ 2004-09-11 23:21:18)
fido, nakierujesz mnie na to co to te %, to jest 1 procent z 2 czy to cos robi?

% to jest operator dzielenia modulo
Wynikiem dzielenia modulo, np. a % b jest reszta z dzielenia calkowitego a / b, czyli w przypadku 5 % 2, reszta jest 1, 4 % 2, reszta 0, itd.
% 2 jest o tyle "specjalny", ze moze posluzyc do sprawdzania parzystosci zmiennej (sprawdzania czy dzieli sie bez reszty przez 2, co druga liczba calkowita sie dzieli). I tak wlasnie to tutaj wykorzystalem. Gdy licznik jest parzysty zwraca jeden kolor, gdy nieparzysty to drugi kolor.
goped
ale jak sprawdzasz czy jest parzysty, podzieli przez dwa i powiedzmy zostanie 1, i jak to sprawdzisz, ze jest nieparzysty?
vinvega
fragment manuala php:

"...trójoperandowy operator warunkowy

<?php
$pierwsze ? $drugie : $trzecie
?>

Jeśli wartością pierwszego podwyrażenia jest TRUE (rózna od zera), to zwracane jest drugie podwyrażanie, i jest to wynik wyrażenia warunkowego. W przeciwnym wypadku, zwracana jest wartość trzeciego podwyrażenia. "

czyli w tym przypadku:
($kolor++ % 2) ? "#f5f5f5" : "#f9f9f9";
jezeli mamy do czynienia z liczba parzysta, zostanie zwrocona wartosc FALSE (zero reszty z dzielenia) wiec wykona sie instrukcja po ':'
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.