Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyświetlanie danych z bazy MySQL zgodnie z datą
Forum PHP.pl > Forum > Przedszkole
brzanek
Witam robię stronę bazującą na najnowszym silniku CMS PHP-Fusion v9 stworzyłem dla własnych potrzeb wtyczkę do wydawania prognozy pogody dla danego dnia. Po stronie administratora wszystko działa to jak powinno. Wydawanie pogody dla danego dnia działa wszystko zapisuje się w bazie danych. Problem jest tylko z wyświetlaniem tego na stronie głównej. Jeśli dam prognozę pogody na dzisiaj, na jutro i na pojutrze to na stronie głównej pojawi mi się ta najnowsza, czyli już na pojutrze, bo wszystko wyświetla mi się po najnowszym id. Jak zrobić, aby pogoda na stronie głównej pojawiała się dla odpowiadającej w tej chwili daty. Czyli nie po id a po odpowiedniej dacie.
Wiem, że trzeba coś pokombinować w zapytaniu, ale nie bardzo wiem jak to ugryźć.
Tak wygląda zapytanie do wyświetlania.
  1. $result = dbquery(
  2. "SELECT d.*, u.user_id, u.user_name, u.user_status
  3. FROM ".DB_PROGNOZADZIEN." d
  4. LEFT JOIN ".DB_USERS." u ON u.user_id=d.user
  5. ORDER BY obszar_id DESC LIMIT 1"
  6. );

To powoduje wyświetlanie pogody z najnowszym id
Dodawałem też coś takiego

[/php]WHERE obszar_id > DATE(DATE_SUB(NOW(), INTERVAL 1 DAY)) AND obszar_dzien <[php]
Ale nic to nie dawało.

A takie mam pola w bazie danych.
  1. $inf_newtable[1] = DB_PROGNOZADZIEN." (
  2. obszar_id smallint(5) unsigned NOT NULL auto_increment,
  3. user MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
  4. obszar_dzien VARCHAR(40) DEFAULT '0' NOT NULL,
  5. obszar_atemp VARCHAR(20) DEFAULT '0' NOT NULL,
  6. obszar_awiatr VARCHAR(20) DEFAULT '0' NOT NULL,
  7. obszar_akierunek VARCHAR(20) DEFAULT '0' NOT NULL,
  8. obszar_astopien VARCHAR(20) DEFAULT '0' NOT NULL,
  9. obszar_aikona VARCHAR(20) DEFAULT '0' NOT NULL,
  10. obszar_tekst VARCHAR(550) NOT NULL default '',
  11. obszar_autor VARCHAR(20) DEFAULT '0' NOT NULL,
  12. PRIMARY KEY (obszar_id)
  13. ) ENGINE=MyISAM";


Proszę o pomoc.
arzach
W kolumnie obszar_dzień masz datę questionmark.gif?
Jak tak to typ powinien być
obszar_dzien DATE NOT NULL DEFAULT '0000-00-00, a nie VARCHAR

  1. WHERE obszar_dzien = CURDATE()


Takie coś wyświetli z dziś
brzanek
Tylko jest mały problem bo data zapisuje mi się w bazie w takiej postaci np. 01 Marca 2015 a nie w formie 2015-03-01
ilidir
no to zastosuj konwesje daty smile.gif
brzanek
Cytat(ilidir @ 1.03.2015, 14:09:39 ) *
no to zastosuj konwesje daty smile.gif

No to pomogłeś mi słyszałem o tym ale jak to wszystko połączyć w bazach danych jestem laikiem i nie wiem jak to ugryźć dlatego potrzeba mi wasza pomoc.
ilidir
poczytaj to http://www.w3schools.com/sql/sql_dates.asp
brzanek
Dobra to już udało mi się zrobić ale teraz jak zamienić ten uzyskany format 2015-03-01 na 01-03-2015 albo na 01 Marzec 2015
Taki mam kod
  1. $result = dbquery(
  2. "SELECT d.*, obszar_dzien
  3. FROM ".DB_PROGNOZADZIEN." d
  4. WHERE obszar_dzien = CURDATE()
  5. ORDER BY obszar_id DESC LIMIT 1"
  6. );
  7. $rows = dbcount("(obszar_id)", DB_PROGNOZADZIEN);
  8. if ($rows) {
  9. while($data = dbarray($result)) {
  10.  
  11. echo "<h4>Dzień ".$data['obszar_dzien']."</h4>";
  12. }
  13. }
ilidir
widać że nie czytałeś tego co napisałem więc przeczytaj to http://www.w3schools.com/sql/func_date_format.asp
brzanek
To ja rozumiem tylko nie wiem jak to umieścić w kodzie php.
ilidir
jak rozumiem chcesz to umiescic w zapytaniu SQL tak ?
brzanek
Już po problemie metodą prób i błędów doszedłem dzięki za pomoc.
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.