![]() |
[mysql/php] - Wersja do druku +- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl) +-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www) +--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych) +--- Wątek: [mysql/php] (/thread-mysql-php) |
[mysql/php] - SavageMephisto - 27-05-2011 Mam 2 tabele z kursami walut, których struktura przedstawia się następująco: WALUTA (łącznie 5 walut, które są stałe) id nazwa // np. dolar amerykański kod // np. USD WARTOSC id waluta_id kurs // np. 2.76 data // np. 2011-04-10 Wykonuję zapytanie sql, które pobiera z bazy danych ostatnie 5 wyników za pomocą LEFT JOIN i wyświetla tabelę z kursami: Kod: SELECT * FROM waluta JOIN LEFT value ON valuta.id=wartosc.waluta_id ORDER BY wartosc.data DESC LIMIT 0,5 Następnie za pomocą skryptu php pobieram dane ze strony z kursami walut. W zmiennej $waluty mam wówczas tablicę postaci: Kod PHP: Array ( [USD] => Array ( [name] => dolar amerykański [code] => USD [amount] => 2.80 [date] => 2011-05-27 ) [EUR] => Array ( [name] => euro [code] => EUR [amount] => 3.98 [date] => 2011-05-27 ) [CHF] => Array ( [name] => frank szwajcarski [code] => CHF [amount] => 3.26 [date] => 2011-05-27 ) [GBP] => Array ( [name] => funt szterling [code] => GBP [amount] => 4.59 [date] => 2011-05-27 ) [RUB] => Array ( [name] => rubel rosyjski [code] => RUB [amount] => 0.10 [date] => 2011-05-27 ) ) Teraz chciałbym wyświetlić w nowej tabeli ostatnich 5 kursów walut oraz 5 nowych koło siebie (tych niedawno pobranych, które znajdują się w tablicy), dodatkowo policzyć zmianę procentową między starym kursem, a nowym dla każdej waluty (zmiana_procentowa = 100%-stary_kurs*100%/nowy_kurs, gdy stary_kurs > nowy_kurs oraz zmiana_procentowa = stary_kurs*100%/nowy_kurs, gdy stary_kurs < nowy_kurs), tak aby widok tabeli był mniej więcej taki: Lp. | Nazwa | Kod | Kurs | Data | Nowy kurs | Aktualna data | Zmiana procentowa 1 | dolar amerykański | USD | 2.76 | 2011-04-10 | 2.91 | 2011-05-27 | 1.05 % Dodam, że w tej chwili zawartość tabeli WARTOSC jest następująca. id | waluta_id | kurs| data 1 | 1 | 2.76 | 2011-04-10 2 | 2 | 4.07 | 2011-04-10 3 | 3 | 3.09 | 2011-04-10 4 | 4 | 4.66 | 2011-04-10 5 | 5 | 0.10 | 2011-04-10 9 | 1 | 2.91 | 2011-05-02 10 | 2 | 3.85 | 2011-05-02 11 | 3 | 3.19 | 2011-05-02 12 | 4 | 4.47 | 2011-05-02 13 | 5 | 0.12 | 2011-05-02 W jaki sposób tego dokonać? Jest możliwość, aby pominąć zapisywanie do tabeli WARTOSC nowych kursów? Ktoś pomoże? RE: [mysql/php] - kmd - 28-05-2011 Wyciągasz dane z bazy danych i zaprzęgasz zwykłą szkolną matematykę. Tworzysz sobie zmienne np. $x i $y i wykonujesz działania matematyczne. Poza tym dobrym rozwiązaniem może być zrobienie tabeli, która zawiera w sobie kurs waluty z poprzedniej daty. Czyli w momencie dodawania nowego wpisu napisz skrypt, który pobierze wartość z wpisu poprzedniego i doda go do nowego - mam nadzieję, że nie zamotałem za bardzo ![]() |