Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana treści w iteracji pętli
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty forum
Largo
Witam,

Tworzę zapytanie, które ma wylistować ilość transakcji z udziałem mojego ID, czyli moich. Wszystko jest OK, ale zmodyfikować dane na zasadzie, że jeżeli id_from == moje ID, to ja dokonałem transkcji i odejmuje mi kwotę. Oto mój problem, napisałem taki kod:

  1. <?php
  2. $row['amount'] = ( $this->ipsclass->input['uid'] ) ? '<span style='color: red;'>'$row['fg_from'] + $row['amount']'</span>' : '<span style='color: green;'>'$row['fg_to'] - $row['amount']'</span>';
  3. ?>


$this->ipsclass->input['uid'] - sprawdza ID zalogowanego usera, czyli np. mnie.
$row['amount'] - kwota.
$row['fg_from'] - kwota, która został odjęta od mojego konta.
$row['fg_to'] - kwota, która przychodzi do mnie.

Dobry pomysł jest. Nie mogę sprawdzać ID w skinie, nie przyjmuje tej konstrukcji.

PS. Skrypt IP.Board.

Pozdrawiam,
Largo
EarthCitizen
  1. <?php
  2. $row['amount'] = ( $this->ipsclass->input['uid'] ) ? '<span style="color: red;">' . ($row['fg_from'] + $row['amount']) . '</span>' : '<span style="color: green;">' . ($row['fg_to'] - $row['amount']) . '</span>';
  3. ?>
Largo
Witaj,

@EarthCitizen - dziękuję Ci z góry za chęć pomocy, mimo to, dziwnie skrypt reaguje. Powinno się teoretycznie wyświetlić:

15.00 - 10.00 -> 5.00 - dla dodania
5.00 + 10.00 -> 15.00

A mi w każdym przypadku podaje końcową liczbę i kolor zielony. W czym może tkwić problem?

  1. <?php
  2. //-----------------------------------------
  3.            // Build query...  
  4.            //-----------------------------------------    
  5.            $this->ipsclass->DB->build_query( array ( 'select'      => 'fg.*',
  6.                                                      'from'        => array( 'fg_logs' => 'fg' ),
  7.                                                      'add_join'    => array( 0 => array(
  8.                                                              'select' => 'mf.members_display_name AS from_name',
  9.                                                              'from'   => array( 'members' => 'mf' ),
  10.                                                              'where'  => 'mf.id = fg.id_from',
  11.                                                              'type'   => 'left' ),
  12.                                                                              1 => array(
  13.                                                              'select' => 'mt.members_display_name AS to_name',
  14.                                                              'from'   => array( 'members' => 'mt' ),
  15.                                                              'where'  => 'mt.id = fg.id_to',
  16.                                                              'type'   => 'left' ) ),
  17.                                                      'where'       => 'id_from = '.$this->ipsclass->member['id'].' OR id_to = '.$this->ipsclass->member['id'],
  18.                                                      'order'        => 'date '.$order,
  19.                                                      'limit'        => array( $this->loop,$this->per_page ) ) );
  20.                                                
  21.            $query = $this->ipsclass->DB->exec_query();
  22.            while ( $row = $this->ipsclass->DB->fetch_row($query) )
  23.            {
  24.                $row['amount'] = ( $this->ipsclass->input['uid'] ) ? '<span style="color: red;">' . ($row['fg_from'] + $row['amount']) . '</span>' : '<span style="color: green;">' . ($row['fg_to'] - $row['amount']) . '</span>';
  25.                $row['date'] = $this->ipsclass->get_date( $row['date'], 'SHORT' );
  26.                $this->output .= $this->ipsclass->compiled_templates['skin_fg']->fg_logs_row($row);
  27.            }
  28. ?>


Jak widzisz, a w skinie przekazuje zmienną $row['amount']. Masz jakieś sugestię?

PS. Kod, który przepisywałem pod siebie z nowymi funkcjami, odpowiadający za to, wygląda tak:

  1. <?php
  2. if($row['id_from'] == $this->ipsclass->member['id'])
  3.                $table .=  $row['fg_from']." - <font color='red'>".$row['amount']."</font> -> ".number_format(($row['fg_from'] - $row['amount']));
  4.                else
  5.                $table .=  $row['fg_to']." + <font color='green'>".$row['amount']."</font> -> ".number_format(($row['fg_to'] + $row['amount']));
  6. ?>


PS2. Udało mi się samemu. Dziękuję za nakierowanie :-) Oto poprawny kod:

  1. <?php
  2. while ( $row = $this->ipsclass->DB->fetch_row($query) )
  3.            {
  4.                if ( $row['id_from'] == $this->ipsclass->member['id'] )
  5.                {
  6.                    $row['amount'] = $row['fg_from'].' - <span style="color: red;">'.$row['amount'].'</span> -> '.($row['fg_from'] - $row['amount']);
  7.                }
  8.                else
  9.                {
  10.                    $row['amount'] = $row['fg_to'].' - <span style="color: green;">'.$row['amount'].'</span> -> '.($row['fg_to'] + $row['amount']);
  11.                }
  12.                $row['date'] = $this->ipsclass->get_date( $row['date'], 'SHORT' );
  13.                $this->output .= $this->ipsclass->compiled_templates['skin_fg']->fg_logs_row($row);
  14. ?>


Pozdrawiam,
Largo
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.