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%)
-----


Zrobiłem teraz tak:

(IMG:http://img228.imageshack.us/img228/3314/kolumny3.gif)

Czyli przyrównuję wartości dwóch tablic, z tym, że pierwsza tabelka ma tylko jedną komórkę. Jeszcze raz przedstawię kod ale z var_dump'ami.


  1. <?php
  2. $zapytanie_2 =
  3.  
  4.    "SELECT
  5.        MIN(TO_DAYS(data) - TO_DAYS(NOW()))
  6.    FROM terminarz WHERE TO_DAYS(data) - TO_DAYS(NOW()) >= 0";
  7.  
  8. $idzapytania_2 = mysql_query($zapytanie_2);
  9. while ($kolumna_2 = mysql_fetch_row($idzapytania_2))
  10. {
  11. var_dump($kolumna_2);
  12.  
  13. '
  14.    <tr>
  15.        <td>'. $kolumna_2[0] .'</td>
  16.    </tr>
  17. '
  18. ;
  19. }
  20. ?>


var_dump($kolumna_2);
Kod
array(1) { [0]=> string(1) "2" }



  1. <?php
  2. $zapytanie =
  3.  
  4.    "SELECT
  5.        '',
  6.        TO_DAYS(data) - TO_DAYS(NOW())
  7.    FROM terminarz";
  8.  
  9. $idzapytania = mysql_query($zapytanie);
  10. while ($kolumna = mysql_fetch_row($idzapytania))
  11. {
  12.        
  13.    // $strzala
  14.  
  15.    IF ($kolumna_2[0] == $kolumna[1]) $strzala = strzalka; else $strzala = puste;
  16.    
  17.    
  18. echo  var_dump($kolumna_2) . var_dump($strzala) . var_dump($kolumna). '<br>';    
  19.  
  20.  
  21. '
  22.    <tr class="'. $color .'">
  23.        <th class="'. $strzala .'">'. $kolumna[0] .'</th>
  24.        <td>'. $kolumna[1] .'</td>
  25.    </tr>
  26. '
  27. ;
  28. }
  29. ?>


echo var_dump($kolumna_2) . var_dump($strzala) . var_dump($kolumna). '< br>';
Kod
bool(false) string(5) "puste" array(2) { [0]=> string(0) "" [1]=> string(2) "-6" }
bool(false) string(5) "puste" array(2) { [0]=> string(0) "" [1]=> string(1) "2" }
bool(false) string(5) "puste" array(2) { [0]=> string(0) "" [1]=> string(1) "3" }



Powyższy kod przyrównuje ($kolumna_2[0] == $kolumna[1]) i instrukcja IF nie zwraca TRUE, a powinno, bo w obu tablicach jest "2" w kolumnach: $kolumna_2[0] i $kolumna[1].

Poniżej przedstawię kod który porównuje stałą zmienną $kolumna_stala_zmienna[numerek] = 2; z tabeli i wtedy instrukcja IF zwraca TRUE:


Wszystko co napisałem poniżej jest tylko po to by pokazać, że skrypt przydziela styl CSS, jeśli porównuję:
($kolumna_stala_zmienna[numerek] == $kolumna[1])
czyli stałą zmienną z danej tabeli do zmiennej $kolumna[1] z bazy danych.

  1. <?php
  2. $kolumna_stala_zmienna[numerek] = 2;
  3. var_dump($kolumna_stala_zmienna);
  4.  
  5. '
  6.    <tr>
  7.        <td>'. $kolumna_stala_zmienna[numerek] .'</td>
  8.    </tr>
  9. '
  10. ;
  11. ?>


var_dump($kolumna_stala_zmienna);
Kod
array(1) { ["numerek"]=> int(2) }



  1. <?php
  2. $zapytanie =
  3.  
  4.    "SELECT
  5.        '',
  6.        TO_DAYS(data) - TO_DAYS(NOW())
  7.    FROM terminarz";
  8.  
  9. $idzapytania = mysql_query($zapytanie);
  10. while ($kolumna = mysql_fetch_row($idzapytania))
  11. {
  12.    
  13.    // $strzala
  14.  
  15.    IF ($kolumna_stala_zmienna[numerek] == $kolumna[1]) $strzala = strzalka; else $strzala = puste;
  16.    
  17.    
  18. echo  var_dump($kolumna_stala_zmienna) . var_dump($strzala) . var_dump($kolumna). '<br>';    
  19.  
  20.  
  21. '
  22.    <tr class="'. $color .'">
  23.        <th class="'. $strzala .'">'. $kolumna[0] .'</th>
  24.        <td>'. $kolumna[1] .'</td>
  25.    </tr>
  26. '
  27. ;
  28. }
  29. ?>


echo var_dump($kolumna_stala_zmienna) . var_dump($strzala) . var_dump($kolumna). '<br>';
Kod
array(1) { ["numerek"]=> int(2) } string(5) "puste" array(2) { [0]=> string(0) "" [1]=> string(2) "-6" }
array(1) { ["numerek"]=> int(2) } string(8) "strzalka" array(2) { [0]=> string(0) "" [1]=> string(1) "2" }
array(1) { ["numerek"]=> int(2) } string(5) "puste" array(2) { [0]=> string(0) "" [1]=> string(1) "3" }


Czyli wyświetla strzałkę: string(8) "strzalka". Czemu w pierwszym przypadku nie działa porównanie zawartości tablic?

Ten post edytował wojteke 6.08.2009, 13:53:35
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 - 12:59