Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Problem z pobraniem daty z bazy i obliczenie ile upłynęło dni do dzisiaj
kamil9012
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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ć.

Ten post edytował kamil9012 2.01.2011, 18:34:27
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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'));


Ten post edytował tehaha 2.01.2011, 18:25:36
Go to the top of the page
+Quote Post
kamil9012
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Dzięki,
niestety nie wiedziałem, dlatego piszę w dziale Przedszkole (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/blinksmiley.gif)

ps. w razie czego będę pisał w tym temacie.

Ten post edytował kamil9012 2.01.2011, 18:30:39
Go to the top of the page
+Quote Post
daros17
post
Post #4





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

Ostrzeżenie: (0%)
-----


poczytaj również tutaj manual
Go to the top of the page
+Quote Post
kamil9012
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Zrobiłem coś takiego i myślałem, że będzie już ok, ale niestety wyskakują errory (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
kamil9012
post
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


1. W życiu bym nie wpadł że musi być pętla while aby wyświetlić dane z bazy (IMG:style_emoticons/default/smile.gif) Już wyświetlana jest data (IMG:style_emoticons/default/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ść (IMG:style_emoticons/default/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... (IMG:style_emoticons/default/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. ?>


Ten post edytował kamil9012 2.01.2011, 19:36:39
Go to the top of the page
+Quote Post
tehaha
post
Post #8





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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

Ten post edytował tehaha 2.01.2011, 19:40:01
Go to the top of the page
+Quote Post
kamil9012
post
Post #9





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)

Dziękuję tehaha i oczywiście po + (IMG:style_emoticons/default/smile.gif)

jeżeli wszystko OK z kodem to temat do zamknięcia.
Go to the top of the page
+Quote Post

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: 26.09.2025 - 06:35