Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Problem z pobraniem daty z bazy i obliczenie ile upłynęło dni do dzisiaj
Forum PHP.pl > Forum > Przedszkole
kamil9012
Witam.
W bazie SQL mam tabelę wp_users z polami:
ID - id użytkownika
user_login - login uzytkownika
user_pass - hasło użytkownika
user_registered - data i czas rejestracji użytkownika w formacie: 2008-10-23 22:46:43

  1. <?php
  2. $userid = get_the_author_ID();
  3. $res=mysql_query("SELECT user_registered FROM wp_users WHERE ID='$userid'");
  4. echo $res;
  5. ?>


funkcja get_the_author_ID() pobiera ID autora artykułu. Połączenie z bazą jest ok na 100%.

Dążę do tego, aby wyświetlić staż na blogu, czyli ilość dni od momentu rejestracji do dzisiaj. Pół dnia za pomocą poradników układałem powyższy kod, a wynik jest taki, że nic się nie wyświetla. Póki co działam małymi kroczkami i aktualnie próbuję wyświetlić datę rejestracji dla autora wpisu, finisz będzie na wyświetleniu ilości dni od momentu rejestracji do teraz, ale kompletnie mi słabo w tym idzie sciana.gif . Używam skryptu Wordpress.

Z góry dziękuję za wszelkie pomoce i podpowiedzi.

ps. jeżeli nie wiesz jak mi pomóc wdzięczny będę również za linki do podobnych kodów PHP dzięki którym mógłbym się wzorować.
tehaha
ale jakiej Ty pomocy oczekujesz, skoro nawet nie wiesz jak pobrać wyniki z bazy danych? słabo chyba te poradniki czytałeś -> http://www.w3schools.com/php/php_mysql_select.asp

a tu masz funkcję na wyliczanie różnicy w dniach między datami ->http://roshanbh.com.np/2008/03/finding-days-difference-php.html

Pamiętaj, że istnieje coś takiego jak Google, znalezienie tego zajęło mi 2min

pewnie zaraz napiszesz, że nie wiesz jak przerobić taką datę 2008-10-23 22:46:43 na taką 2008-03-13 więc

  1. echo date('Y-m-d', strtotime('2008-10-23 22:46:43'));
kamil9012
Dzięki,
niestety nie wiedziałem, dlatego piszę w dziale Przedszkole worriedsmiley.gif

Zabieram się za pracę bo podałeś mi cenne informacje. Wiesz ja nawet nie wiem jakie frazy wpisywać w google żeby coś znaleźć na ten temat, a szukam już dobre 4 godzinki blinksmiley.gif

ps. w razie czego będę pisał w tym temacie.
daros17
poczytaj również tutaj manual
kamil9012
Zrobiłem coś takiego i myślałem, że będzie już ok, ale niestety wyskakują errory sad.gif

  1. <?php
  2. function daysDifference($endDate, $beginDate)
  3. {
  4. $userid = get_the_author_ID();
  5. $beginDate=mysql_query("SELECT user_registered FROM wp_users WHERE ID='$userid'");
  6. $endDate=date();
  7.  
  8. //explode the date by "-" and storing to array
  9. $date_parts1=explode("-", $beginDate);
  10. $date_parts2=explode("-", $endDate);
  11. //gregoriantojd() Converts a Gregorian date to Julian Day Count
  12. $start_date=gregoriantojd($date_parts1[1], $date_parts1[2], $date_parts1[0]);
  13. $end_date=gregoriantojd($date_parts2[1], $date_parts2[2], $date_parts2[0]);
  14. return $end_date - $start_date;
  15. }
  16. daysDifference($andDate);
  17.  
  18. ?>


Wiecie co może być źle tutaj? Sam już padam od myślenia
tehaha
1. zapoznaj się z pierwszym linkiem jaki Ci podałem bo widzę, że go nie czytałeś.
2. Nie przerabiaj tej funkcji, ona jest już gotowa, podajesz do niej 2 parametry: data od i data do i ona zwraca gotowy wynik
3. ZAWSZE podawaj treść błędu
kamil9012
1. W życiu bym nie wpadł że musi być pętla while aby wyświetlić dane z bazy smile.gif Już wyświetlana jest data smile.gif, więc pierwszy krok już mam. Teraz zabieram się za obliczanie dni za pomocą tej funkcji co podałeś.
3. Będę już wiedział na przyszłość smile.gif

edit:
Wszystko już działa, ale potrzebuję jeszcze jakiejś funkcji, która zamiast '2011-01-02' będzie dawała aktualną datę w takim formacie... sad.gif
  1. <?php
  2.  
  3. function daysDifference($endDate, $beginDate)
  4. {
  5.  
  6. //explode the date by "-" and storing to array
  7. $date_parts1=explode("-", $beginDate);
  8. $date_parts2=explode("-", $endDate);
  9. //gregoriantojd() Converts a Gregorian date to Julian Day Count
  10. $start_date=gregoriantojd($date_parts1[1], $date_parts1[2], $date_parts1[0]);
  11. $end_date=gregoriantojd($date_parts2[1], $date_parts2[2], $date_parts2[0]);
  12. return $end_date - $start_date;
  13. }
  14.  
  15.  
  16. $userid = get_the_author_ID();
  17. $result=mysql_query("SELECT user_registered FROM wp_users WHERE ID='$userid'");
  18.  
  19. while($row = mysql_fetch_array($result))
  20. {
  21. echo daysDifference('2011-01-02',$row['user_registered']);
  22.  
  23. echo "<br />";
  24. }
  25.  
  26.  
  27. ?>
tehaha
dobrze, że usunąłeś ten kawałek kodu co tam przed chwilą był bo już mnie zatrzęsło:)
  1. echo date('Y-m-d');


to jest data obecna, a drugą przerobisz do takiego formatu tym co Ci dałem w pierwszym poście
kamil9012
wywoływanie funkcji zrobiłem za pomocą tego kodu
  1. echo daysDifference(date('Y-m-d'),date('Y-m-d', strtotime($row['user_registered'])));


Mam nadzieję, że jest dobrze bo wszystko działa smile.gif

Dziękuję tehaha i oczywiście po + smile.gif

jeżeli wszystko OK z kodem to temat do zamknięcia.
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.