Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP + MySQL] Skrypt zdarzenie.php
henio
post
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

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


Utworzyłem następujący skrypt:
  1. <?php
  2. include("funkcje.php");
  3. include("baza.php");
  4. naglowek("Zdarzenie");
  5.  
  6. $data = date('m-d');
  7. $wynik = mysqli_query($mysql, "SELECT * FROM zdarzenie WHERE substr(data, 6, 5) = '$data'");
  8.  
  9. datapl();
  10. echo "<br /><b>Tego dnia</b>:";
  11. while($wynik && $rekord = mysqli_fetch_assoc($wynik))
  12. {
  13. $data_z_bazy = explode('-', $rekord['data']);
  14. $dataunix = mktime(0, 0, 0, $data_z_bazy['1'], $data_z_bazy['0'], $data_z_bazy['2']);
  15. $dzisiaj = time();
  16. $roznica = $dataunix - $dzisiaj;
  17. $roznica2 = floor($roznica / (365 * 24 * 60 * 60));
  18. if($roznica2 == 1)
  19. {
  20. echo "<br /><b>Rok</b> temu ".$rekord['zdarzenie']."";
  21. echo "<br />".nl2br($rekord['opis_zdarzenie'])."";
  22. }
  23. elseif($roznica2 <=4)
  24. {
  25. echo "<br /><b>".$roznica2."</b> lata temu ".$rekord['zdarzenie']."";
  26. echo "<br />".nl2br($rekord['opis_zdarzenie'])."";
  27. }
  28. else
  29. {
  30. echo "<br /><b>".$roznica2."</b> lat temu ".$rekord['zdarzenie']."";
  31. echo "<br />".nl2br($rekord['opis_zdarzenie'])."";
  32. }
  33. }
  34. ?>

W bazie danych mam zdarzenie, którego data to 2004-07-06.
Powinno mi wyświetlić się:
3 lata temu ...
A wyświetla się:
4 lata temu.

Choć różnica pomiędzy datą 2007-07-06 a datą 2004-07-06 to 3 lata

Ten post edytował henio 6.07.2007, 10:08:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Stark
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 30.09.2006

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


Wydaje mi sie, ze blad lezy w sposobie obliczania przez ciebie daty:

  1. <?php
  2. $roznica = $dataunix - $dzisiaj;
  3. ?>


Wykonujesz dzialanie na datach: 2004.07.06 00:00 - 2007.07.06 11:05. Wynikiem tego sa -3 lata i pare godzin, co funkcja floor zaokragla w dol do -4.
Go to the top of the page
+Quote Post
uli
post
Post #3





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Zaokrągla w dół liczbę np. -3.685854, co daje -4 smile.gif

@UP: Stark był szybszy smile.gif

Ten post edytował uli 6.07.2007, 10:33:42


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
henio
post
Post #4





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

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


W takim razie co powinienem zmienić, aby było ok i "uniwersalne do każdej godziny"?
Go to the top of the page
+Quote Post
uli
post
Post #5





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Heniu litości...

Liczysz różnicę między dziś, a zdarzeniem w przeszłości...

Zamiast:

  1. <?php
  2. $roznica = $dataunix - $dzisiaj;
  3. ?>


Daj:

  1. <?php
  2. $roznica = $dzisiaj - $dataunix;
  3. ?>


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
henio
post
Post #6





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

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


Cytat(uli @ 6.07.2007, 10:04:52 ) *
Heniu litości...

Liczysz różnicę między dziś, a zdarzeniem w przeszłości...

Zamiast:

  1. <?php
  2. $roznica = $dataunix - $dzisiaj;
  3. ?>


Daj:

  1. <?php
  2. $roznica = $dzisiaj - $dataunix;
  3. ?>

Tak już próbowałem wczaśniej, ale wychodzi mi liczba na minusie
Go to the top of the page
+Quote Post
uli
post
Post #7





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


A to zadziwiające doprawdy bo nam dwóm wychodzi tak przy Twoim zapisie. Zreszta poprawnie i logicznie, bo od kiedy 2004-2007 daje wynik dodatni biggrin.gif


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
henio
post
Post #8





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

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


Cytat(uli @ 6.07.2007, 12:22:14 ) *
A to zadziwiające doprawdy bo nam dwóm wychodzi tak przy Twoim zapisie. Zreszta poprawnie i logicznie, bo od kiedy 2004-2007 daje wynik dodatni biggrin.gif


Nadal nie mam rozwiazania mojego problemu. Sam sie dziwie dlaczego jest źle
Go to the top of the page
+Quote Post
uli
post
Post #9





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


  1. <?php
  2. $roznica2 = floor(abs($roznica / (365 * 24 * 60 * 60)));
  3. ?>


Skoro otrzymujesz wartości ujemne to weź wartość bezwzględną.


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
henio
post
Post #10





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

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


Cytat(uli @ 6.07.2007, 12:33:20 ) *
  1. <?php
  2. $roznica2 = floor(abs($roznica / (365 * 24 * 60 * 60)));
  3. ?>


Skoro otrzymujesz wartości ujemne to weź wartość bezwzględną.


Dzięki za pomocą. Właśnie przed chwilą rozwiązałem problem. I to nie przez wartość bezwzględną.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 10:16