Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z obliczaniem daty/pobieraniem z bazy danych
P4nch0
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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


Witam,

Wiem, że jest mnóstwo tematów z tym problemem, przeglądam je próbuje na różne sposoby i nie kminię dlaczego wychodzi tak a nie inaczej..
W projekcie gry, po kliknięciu na ekran zapisuje się data kliknięcia.

Pobieram ją i chciałbym przy wczytywaniu danych do gry obliczyć ile minęło od dodania, ale dostaję jakieś dziwne liczby.. Mam dwa zapytania, chodzi mi o zapytanie o "Data"

  1. <?php
  2. /*Nagłówek pliku informujacy o tym, że dane będą przekazywane w formacie JSON (JavaScript Object Notation)
  3. - jest to format transferu danych, w praktyce wyglądać będzie on finalnie w następujacy sposób:
  4. [["66","Austria"],["65","Polska"],["64","Czechy"]]
  5. */
  6. header('Content-type: application/json; charset=UTF-8');
  7.  
  8. /*Załączenie pliku odpowiadającego za połączenie z bazą danych.*/
  9. require 'config.php';
  10. require_once 'user.class.php';
  11. $login = $_SESSION['login'];
  12.  
  13. // łączymy się z bazą danych
  14. if ($conn) {
  15.  
  16. // zapytanie do bazy danych
  17. $wynik = mysql_query("SELECT * FROM danemapa WHERE login = '$login'")
  18. or die("Błąd w zapytaniu!");
  19.  
  20. $czas = mysql_query("SELECT Data FROM danemapa WHERE login = '$login'")
  21. or die("Błąd w zapytaniu!");
  22.  
  23.  
  24. }
  25. else echo "Nie mogę połączyć się z bazą danych!";
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33. $i=0;
  34. $j=0;
  35. $arr = array();
  36. $arrdata = array();
  37. $czasobecnie = date("Ymdhis");
  38.  
  39.  
  40.  
  41. while($res = mysql_fetch_row($wynik))
  42. {
  43. $arr[$i++]=$res;
  44.  
  45.  
  46.  
  47. }
  48.  
  49. while($res1 = mysql_fetch_row($czas))
  50. {
  51.  
  52.  
  53.  
  54.  
  55. $jednostka_czasu="godzin";
  56.  
  57. $tablica = array(minut=>60, godzin=>3600, dni=>86400, sekund=>1);
  58. $roznica = round(((strtotime($czasobecnie) - strtotime($res1)) / $tablica[$jednostka_czasu]));
  59.  
  60.  
  61. $arrdata[$j++]=$roznica;
  62.  
  63.  
  64.  
  65. }
  66.  
  67.  
  68.  
  69.  
  70.  
  71. header('Content-Type: application/json');
  72. echo json_encode($arr);
  73. echo json_encode($arrdata);
  74.  
  75. ?>



W bazie mam dwa rekordy zapisane w formacie:

20160115000001
20160118000001





A po załadowaniu pliku otrzymuję dziwne liczby i w dodatku te same dla obu rekordów:

[403665,403665]





Gdy ustawię datę na sztywno, wszystko działa..


  1. <?php
  2. $jednostka_czasu="dni";
  3.  
  4. $czasobecnie = date("Ymdhis");
  5. $res1 = "20160115000001";
  6.  
  7. $tablica = array(minut=>60, godzin=>3600, dni=>86400, sekund=>1);
  8. $roznica = round(((strtotime($czasobecnie) - strtotime($res1)) / $tablica[$jednostka_czasu]));
  9.  
  10.  
  11.  
  12. echo $roznica;
  13. ?>


Podejrzewam, że mam błąd w pobieraniu danych z bazy, może jest źle zapisywana.. prosze o pomoc w rozwikłaniu tego.
Pozdrawiam (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
P4nch0
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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



Ahh kurcze, że nie pomyślałem o tym, dzięki za nakierowanie (IMG:style_emoticons/default/smile.gif)





Witam ponownie, mam jeszcze problem z przekazaniem tego przez Ajax. Obecnie plik wygląda tak:

  1. <?php
  2. /*Nag��wek pliku informujacy o tym, �e dane b�d� przekazywane w formacie JSON (JavaScript Object Notation)
  3. - jest to format transferu danych, w praktyce wygl�da� b�dzie on finalnie w nast�pujacy spos�b:
  4. [["66","Austria"],["65","Polska"],["64","Czechy"]]
  5. */
  6. header('Content-type: application/json; charset=UTF-8');
  7.  
  8. /*Za��czenie pliku odpowiadaj�cego za po��czenie z baz� danych.*/
  9. require 'config.php';
  10. require_once 'user.class.php';
  11. $login = $_SESSION['login'];
  12.  
  13. // ��czymy si� z baz� danych
  14. if ($conn) {
  15.  
  16. // zapytanie do bazy danych
  17. $wynik = mysql_query("SELECT * FROM danemapa WHERE login = '$login'")
  18. or die("B��d w zapytaniu!");
  19.  
  20. $czas = mysql_query("SELECT Data FROM danemapa WHERE login = '$login'")
  21. or die("B��d w zapytaniu!");
  22.  
  23.  
  24. }
  25. else echo "Nie mog� po��czy� si� z baz� danych!";
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33. $i=0;
  34. $j=0;
  35. $arr = array();
  36. $arrdata = array();
  37. $czasobecnie = date("YmdHis");
  38.  
  39.  
  40.  
  41.  
  42. while($res = mysql_fetch_row($wynik))
  43. {
  44. $arr[$i++]=$res;
  45.  
  46.  
  47.  
  48. }
  49.  
  50. while($res1 = mysql_fetch_row($czas))
  51. {
  52.  
  53. $datazapisu = $res1[0];
  54. //$datazapisu="20160118000001";
  55. $jednostka_czasu="godzin";
  56. $tablica = array(minut=>60, godzin=>3600, dni=>86400, sekund=>1);
  57. $roznica = round(((strtotime($czasobecnie) - strtotime($datazapisu))/$tablica[$jednostka_czasu]));
  58. var_dump($datazapisu);
  59.  
  60. $arrdata[$j++]=$roznica;
  61.  
  62.  
  63.  
  64. }
  65.  
  66.  
  67.  
  68.  
  69.  
  70. header('Content-Type: application/json');
  71. echo json_encode($arr);
  72. echo json_encode($arrdata);
  73.  
  74. ?>





W innym plik mam funkcję odbierającą dane Ajax:
  1. function startdanemapa(){
  2. $(document).ready(function(){
  3. $.ajax({
  4. type:"GET", /*Informacja o tym, że dane będą pobierane*/
  5. url:"startdanemapa.php", /*Informacja, o tym jaki plik będzie przy tym wykorzystywany*/
  6. contentType:"application/json; charset=utf-8", /*Informacja o formacie transferu danych*/
  7. dataType:'json', /*Informacja o formacie transferu danych*/
  8.  
  9. /*Działania wykonywane w przypadku sukcesu*/
  10. success: function(json) { /*Funkcja zawiera parametr*/
  11. Tablicawiersze = 0;
  12.  
  13.  
  14. for (var klucz in json)
  15. {
  16.  
  17.  
  18. var wiersz = json[klucz]; /*Kolejne przebiegi pętli wstawiają nowy klucz*/
  19. var idtile = wiersz[5];
  20. var tilex = wiersz[3];
  21. var tiley = wiersz[4] ;
  22. var layer = wiersz[6];
  23. var czasdod = wiersz[7];
  24.  
  25.  
  26. Tablica[klucz] = [idtile , tilex, tiley, layer, czasdod];
  27. Tablicawiersze += 1;
  28.  
  29. console.log(czasdod);
  30.  
  31. /*Ustalenie sposobu wyświetlania pobranych danych w bloku div*/
  32.  
  33.  
  34.  
  35.  
  36.  
  37. }
  38.  
  39. czasobecnie = json[0];
  40. console.log(czasobecnie);
  41. },
  42.  
  43.  
  44. /*Działania wykonywane w przypadku błędu*/
  45. error: function(blad) {
  46. alert( "Wystąpił błąd");
  47. console.log(blad); /*Funkcja wyświetlająca informacje
  48.   o ewentualnym błędzie w konsoli przeglądarki*/
  49. }
  50.  
  51. });
  52. });
  53.  
  54.  
  55.  
  56. };



I niestety wyrzuca allert o błędzie i w konsoli loguje:

Object { readyState: 4, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 11 więcej… }



Jakieś pomysły dlaczego?

Ok, poradziłem sobie rozbijając to zapytanie na dwa (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 7.10.2025 - 07:44