Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Porównywanie wartości kolumn o podanych nazwach zmiennych w przypadku kiedy kolumny nie są ułożone obok siebie w poziomie.
wojteke
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Witam!

Nie rozumiem czemu nie mogę porównać wartości wierszy kolumn o podanych nazwach zmiennych w przypadku kiedy kolumny nie są ułożone obok siebie w poziomie, tylko jedna na drugiej lub w osobnych tabelach.

Przykład:
(tabela z dwiema kolumnami, które są ułożone obok siebie)
Kod
   $kolumna_1[0]      $kolumna_1[1]


w takim układzie działa taka funkcja:

  1. <?php
  2. IF ($kolumna_1[0] == $kolumna_1[1]) $zmienna = styl_css_1; else $zmienna  = styl_css_2;
  3. ?>


ale jeżeli mam np taki zestaw kolumn:

(tabela z dwiema kolumnami, które są ułożone jedna na drugą)
Kod
   $kolumna_1[0]
   $kolumna_2[0]


w takim układzie kolumn nie działa taka funkcja (zawsze jest FALSE):

  1. <?php
  2. IF ($kolumna_1[0] == $kolumna_2[0]) $zmienna = styl_css_1; else $zmienna  = styl_css_2;
  3. ?>


Wygląda to tak jakby php nie pamiętało o tym, że wyżej była taka kolumna o zmiennej $kolumna_1[0]. (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)

Przedstawię mój kod, bo może mam jakiś błąd.

  1. <?php
  2. echo '<table id="large">';
  3.  
  4. while ($kolumna2 = mysql_fetch_row($idzapytania))
  5.  
  6. {
  7.  
  8. '<tr class="'.$color.'">
  9.       <td>'. $kolumna2[0] .'</td>
  10.       <td>'. $kolumna2[1] .'</td>
  11.       <td>'. $kolumna2[2] .'</td>
  12.       <td>'. $kolumna2[3] .'</td>
  13. </tr>'
  14. ;
  15. }
  16.  
  17.  
  18.  
  19.  
  20. $zapytanie =
  21.  
  22.    "SELECT
  23.        '',
  24.        lp ,
  25.        DATE_FORMAT(data, '%m.%d'),
  26.        TO_DAYS(data) - TO_DAYS(NOW())    +7
  27.    FROM terminarz";
  28.  
  29. $idzapytania = mysql_query($zapytanie);
  30. while ($kolumna = mysql_fetch_row($idzapytania))
  31. {
  32.    
  33.    
  34.    
  35.    
  36.    
  37.    
  38.    
  39.    
  40.    
  41.    
  42.    
  43.    // nadanie stylu CSS dla wierszy //
  44.    
  45.    // ponizszy IF dziala!!! w kolumnach $kolumna[1] i $kolumna[3] są w pewnych wierszach takie same wartości
  46.    // i w tych wierszach przypisywany jest styl CSS "strzalka", bo $kolumna[1] == $kolumna[3] i tutaj wszystko jest OK!
  47.    
  48.    IF ($kolumna[1] == $kolumna[3]) $strzala = strzalka; else $strzala = puste;    
  49.  
  50.    // poniższy IF NIE dziala!!! pomimo, że w kolumnach $kolumna2[0] i $kolumna[1] w pewnych wierszach są takie same wartości, to
  51.    // w tych danych wierszach nie przypisywany jest styl CSS. Dlaczego?
  52.  
  53.    IF ($kolumna2[0] == $kolumna[1]) $strzala = strzalka; else $strzala = puste;
  54.    
  55.    // wyglada to tak, jakby php nie pamiętało o tym, że wcześniej była taka kolumna jak $kolumna2[0]
  56.    // czemu tak się dzieje?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) :(
  57.    
  58.    
  59.    
  60.    
  61.    
  62.    
  63.    
  64.    
  65.  
  66.    
  67.  
  68. '
  69.    <tr class="'. $color .'">
  70.        <th class="'. $strzala .'">'. $kolumna[0] .'</th>
  71.        <td>'. $kolumna[1] .'</td>
  72.        <td>'. $kolumna[2] .'</td>
  73.        <td>'. $kolumna[3] .'</td>
  74.    </tr>
  75. '
  76. ;
  77. }
  78.  
  79. '</table>';
  80. ?>


Też nie ma znaczenia czy kolumny, które są ułożone jedna na drugiej są razem w tabeli czy w oddzielnych tabelach - zawsze nie można się w jednej kolumnie odwołać do wartości kolumny, która jest "wyżej/niżej".

Pozdrawiam!

Ten post edytował wojteke 5.08.2009, 23:00:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wojteke
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Hehe, wystarczyło $kolumnę_2 nie wywoływać z pętli i wtedy działa, także ten problem mam już rozwiązany.


Mam jeszcze jeden problem i chciałbym Was bardzo poprosić o jakąś wskazówkę jak to zrobić:

Chciałbym nadać styl CSS tylko i wyłącznie jednej komórce w tabeli.

W ten sposób tworzę przykładową tabelę z bazy danych:

  1. echo '<table>';
  2.  
  3. while ($kolumna = mysql_fetch_row($idzapytania))
  4.  
  5. {
  6.  
  7.  
  8. '<tr class="'. $color .'">
  9.  
  10. <td>'. $kolumna[0] .'</td>
  11. <td>'. $kolumna[1] .'</td>
  12. <td>'. $kolumna[2] .'</td>
  13.  
  14. </tr>'
  15. ;
  16. }
  17.  
  18. $zapytanie =
  19.  
  20. "SELECT
  21. pole1,
  22. pole2,
  23. pole3
  24. FROM terminarz";


I taka tebela wygląda np. tak:

(IMG:http://img232.imageshack.us/img232/4455/cssdla1wiersza.gif)

I nie wiem jak nadać styl CSS tylko jednej komórce, nie zmieniając stylu CSS innych komórek.

Na ilustracji widać kolorowe tło wierszy - taki styl CSS nadaję w ten sposób:

  1. IF ($kolumna[2] < 2) $color = yellow2;
  2.  
  3. IF ($kolumna[2] < 1) $color = yellow1;
  4.  
  5. IF ($kolumna[2] < 0) $color = grey;


Mój problem polega na tym, że nie działa np. takie coś:

  1. IF ($kolumna[2] == 1) $kolumna[2] = styl_css;


Wszystko ładnie działa oprócz tego, że do danej komórki, zamiast przedzielenia stylu CSS, wpisuje do tej komórki nazwę stylu, czyli w tym przypadku: "styl_css".
(IMG:style_emoticons/default/sciana.gif)

Ten post edytował wojteke 13.08.2009, 22:43:23
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 23:22