Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][CSS] CSS dla danego wiersza w tabeli z PHP
Forum PHP.pl > Forum > Przedszkole
wojteke
Witam. Mam tutaj przykładową, mało rozbudowaną tabelkę i męczę się jak do niej dodać funkcję, która mi nada styl CSS dla danego wiersza, gdy np. w ostatniej kolumnie tej tabeli wartości w danych komórkach są większe od 150.

Próbuję to robić z funkcją IF i FOREACH. Widziałem co jest pokazane w manualu ale jakoś nie mogę tego wykorzystać w praktyce i dopasować do tego przykładu. Też nie wiem czy w końcu trzeba drukować tabele dla FOREACH na dysk serwera czy nie - na forach różnie piszą. Pomoglibyście mi?

  1. <?php
  2.  
  3. // połączenie się lokalnym serwerem bazy MySQL
  4. $sql_conn = mysql_connect('', '', '')
  5. // w przypadku niepowodzenia połączenia zakończ aplikację
  6. or die('Nie mogłem połaczyć się z bazą danych');
  7.  
  8. // wybieramy bazę danych
  9.  
  10. // wybieramy bazę danych
  11. mysql_select_db('zawodnicy');
  12.  
  13. // wyświetlamy treść naszej tabeli
  14. $zapytanie =
  15.  
  16. "SELECT
  17.    `id`,
  18.    `nazwisko`,
  19.    `lata`,
  20.    `punkty`
  21. FROM `nba`";
  22.  
  23. $idzapytania = mysql_query($zapytanie);
  24.  
  25. echo '<table>';
  26. while ($wiersz = mysql_fetch_row($idzapytania))
  27.  
  28. {
  29.    '<tr>
  30.        <td>'. $wiersz[0] .'</td>
  31.        <td>'. $wiersz[1] .'</td>
  32.        <td>'. $wiersz[2] .'</td>
  33.        <td>'. $wiersz[3] .'</td>
  34.    </tr>'
  35. ;
  36. }
  37.  
  38. foreach ($idzapytania as $wiersz) {
  39.    if( $wiersz[3] > 150 )
  40.    echo "class='yellow'";  
  41. }
  42.  
  43. '</table>';
  44.  
  45. // zamykamy połączenie
  46. mysql_close($sql_conn);
  47. ?>


Kod
.yellow {
    color: #FFCC00;
}
tomekpl
Dajesz w pętle:
  1. <?php
  2. $color = ($i >149) ? "yellow" : "normalne";
  3. ?>

i na końcu pętli:
  1. <?php
  2. $id++;
  3. ?>



a w tabeli <td class=$color>
Spawnm
Proszę dodać tytuł do tematu exclamation.gif
#luq
Lepiej będzie jak w while`a wrzucisz to co chcesz zrobić a nie będziesz tworzyć pętli lecącej po tym samym.
ayeo
Witam!

Przypominam (jak to już wspomniał @Spawnm) o poprawieniu tytyłu, a w zasadzie jego dodaniu tongue.gif

Przy okazji:


Pozdrawiam!
wojteke
Niestety na razie nie chce mi podświetlić wiersza na żółto z css'a z tej pętli. sad.gif



Podświetlony na żółto powinien być wiersz 1 i 3.

  1. <?php
  2. // połączenie się lokalnym serwerem bazy MySQL
  3. $sql_conn = mysql_connect('***', '***', '***')
  4. // w przypadku niepowodzenia połączenia zakończ aplikację
  5. or die('Nie mogłem połaczyć się z bazą danych');
  6.  
  7. // wybieramy bazę danych
  8.  
  9. // wybieramy bazę danych
  10. mysql_select_db('zawodnicy');
  11.  
  12. // wyświetlamy treść naszej tabeli
  13. $zapytanie =
  14.  
  15. "SELECT
  16.    `id`,
  17.    `nazwisko`,
  18.    `lata`,
  19.    `punkty`
  20. FROM `nba`";
  21.  
  22. $idzapytania = mysql_query($zapytanie);
  23.  
  24. $color = ($i >149) ? "yellow" : "normalne";
  25.  
  26. echo '<table id="large">';
  27. while ($wiersz = mysql_fetch_row($idzapytania))
  28.  
  29. {
  30.    '<tr>
  31.        <td class=$color>'. $wiersz[0] .'</td>
  32.        <td class=$color>'. $wiersz[1] .'</td>
  33.        <td class=$color>'. $wiersz[2] .'</td>
  34.        <td class=$color>'. $wiersz[3] .'</td>
  35.    </tr>'
  36. ;
  37. }
  38.  
  39. '</table>';
  40.  
  41. $id++;
  42.  
  43. // zamykamy połączenie
  44. mysql_close($sql_conn);
  45.  
  46. ?>
  47.  
  48.    <td class="yellow">tekst</td>


Kod
.yellow  {
    color: #E0B400;
    text-decoration:underline;
}
ayeo
  1. '<tr>
  2. <td class="'.$color.'">'. $wiersz[0] .'</td>
  3. <td class="'.$color.'">'. $wiersz[1] .'</td>
  4. <td class="'.$color.'">'. $wiersz[2] .'</td>
  5. <td class="'.$color.'">'. $wiersz[3] .'</td>
  6. </tr>'


edit: poza tym ten kod jest bezsesnu. Użyj foreacha, a warunek umieść w pętli!
wojteke
Cytat(tomekpl @ 23.07.2009, 03:13:17 ) *
Dajesz w pętle:
  1. <?php
  2. $color = ($i >149) ? "yellow" : "normalne";
  3. ?>

A jak zrobić by dla zmiennej $color przypisać więcej stylów CSS?

Np.

  1. <?php
  2. $color = ($i > 0 AND $i <= 10) ? "yellow" : "normalne";
  3. $color = ($i > 10) ? "yellow_222" : "normalne";
  4. ?>

Co należy zrobić z tym kodem, by zaczął działać?

W takim wypadku różne wiersze miały by różne kolory w zależności od wartości liczb w danej kolumnie.
Powiecie mi jak do czegoś takiego się zabrać? Właśnie do tego trzeba wykorzystać foreach'a?

Pozdrawiam
Ociu
  1. <?php
  2. $i=0;
  3. echo '<table id="large">';
  4. while ($wiersz = mysql_fetch_row($idzapytania)){
  5. $color = ($i > 149) ? "yellow" : "normalne";
  6.   '<tr>
  7.       <td class='.$color.'>'. $wiersz[0] .'</td>
  8.       <td class='.$color.'>'. $wiersz[1] .'</td>
  9.       <td class='.$color.'>'. $wiersz[2] .'</td>
  10.       <td class='.$color.'>'. $wiersz[3] .'</td>
  11.   </tr>';
  12. $i++;
  13. }
  14.  
  15. echo '</table>';
  16. ?>
wojteke
Ale nie o to chodzi. Ja to już wiem. smile.gif

Tj napisałem wyżej, chciałbym umieć napisać kod, który dla zmiennej $color ustalałby więcej niż jeden styl CSS w zależności od wartości w danej kolumnie np. $wiersz[3].

Czyli ja teraz korzystam z czegoś takiego i to oczywiście działa:

  1. <?php
  2. $color = ($i > 0 AND $i <= 10) ? "yellow" : "normalne";
  3. ?>


a chciałbym wykombinować tak, by w zależności od wartości $i można było przypisać do tej zmiennej różne style CSS:

  1. <?php
  2. $color = ($i > 0 AND $i <= 10) ? "yellow" : "normalne";
  3. $color = ($i > 10) ? "yellow_222" : "normalne";
  4. ?>

Co trzeba zrobić, by ten kod zaczął działać?

Oczywiście za $i podstawiam sobie numerek kolumny, np. $wiersz[3].
ayeo
  1. <?php
  2. $color = ($i > 0 AND $i <= 10) ? "yellow" : "normalne";
  3. $color .= ($i > 10) ? " yellow_222" : "";
  4. ?>


Jednak to bezsensu bo te warunki się lekko wykluczają. Sama idea jest taka jak wyżej.

Pozdrawiam!
Ociu
  1. <?php
  2. $color = ($i > 0 AND $i <= 10) ? "yellow" : "normalne";
  3. $color = ($i > 10) ? "yellow_222" : "normalne";
  4. ?>


Ale to jedno z drugim się wyklucza dry.gif.
Jeśli $i jest większe od zera i mniejsza równe 10 to kolor = yellow.
Jeśli $i jest większe od 10 to kolor = yellow_222, jeśli nie to = normalnie

Drugi warunek wyklucza pierwszy.

Napisz co chcesz osiągnąć.
wojteke
Cytat(Ociu @ 26.07.2009, 11:39:17 ) *
Napisz co chcesz osiągnąć.


Chciałbym móc nadać osobne style CSS dla poszczególnych wierszy, w zależności od wartości w tych danych wierszach w kolumnie pomocniczej, która jest ukryta/niewidoczna.

Przedstawiłem tę sytuację w poniższej ilustracji:


  1. <?php
  2. echo '<table>';
  3. while ($wiersz = mysql_fetch_row($idzapytania)){
  4.  
  5.  
  6.  
  7. $color = ($kolumna[5] < 0) ? "grey" : "normalne";
  8.  
  9.  
  10. // I JAK TUTAJ PRZYPISAĆ WIĘCEJ WARUNKÓW DLA ZMIENNEJ $color I KOLUMNY $kolumna[5] Z INNYMI STYLAMI CSS?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
  11.  
  12.  
  13.  
  14. '
  15.   <tr>
  16.       <td class='.$color.'>'. $kolumna[0] .'</td>
  17.       <td class='.$color.'>'. $kolumna[1] .'</td>
  18.       <td class='.$color.'>'. $kolumna[2] .'</td>
  19.       <td class='.$color.'>'. $kolumna[3] .'</td>
  20.       <td class='.$color.'>'. $kolumna[4] .'</td>
  21.       <td class='.$color.'>'. $kolumna[5] .'</td>
  22.   </tr>
  23. '
  24. ;
  25. }
  26.  
  27. echo '</table>';
  28. ?>


Macie jakiś pomysł?
TrevorGryffits
Zacznij od sprawdzania najbardziej "obszernego" warunku, a potem schodź w dół. Czyli na ten przykład:
  1. <?php
  2. $color = "normalnie"
  3. if($kolumna[5] < 15) $color = "jasny zolty";
  4. if($kolumna[5] < 10) $color = "ciemnijeszy zolty";
  5. ?>

I tak dalej.
Albo jest też drugie rozwiązanie. Zrobić tablicę o kluczach wartości z kolumny[5] i wartościach nazw kolorów.
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.