Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] czasem działa czasem nie, Dlaczego nie sumuje??
graveozz
post 7.04.2008, 12:02:50
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 28.03.2008
Skąd: Kielce

Ostrzeżenie: (10%)
X----


Witam, mam dość rozbudowany kod, ale problem pojawia się w poniższym jego fragmencie:
  1. <?php
  2. $zapytanie="SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(start + stop)) AS gotowe FROM godziny";
  3. $odpowiedz=mysql_query($zapytanie)
  4. or die (mysql_error());
  5. $wynik=mysql_fetch_array ($odpowiedz);
  6. echo "Suma czasów <b> ".$wynik[0]."</b><br />";
  7. ?>

Czy ktoś wie, dlaczego poniższe zapytanie gdzie start i stop są kolumnami typu DATETIME tabeli godziny nie zawsze sumuje czasy prawidłowo?
I bywa, że po wprowadzeniu prawidłowych danych w wyniku dostaję 1970-01-01 01:00:00 ?

przykładowo:
2008-04-09 21:00:00 + 0000-00-00 00:25:00 = 2008-04-09 21:25:00
2008-04-09 21:25:00 + 0000-00-00 01:00:00 = 2008-04-09 22:25:00
i to są dane poprawne, ale już:
2008-04-16 11:50:00 + 0000-00-00 00:45:00 = 1970-01-01 01:00:00
Przykładów mógłbym mnożyć.
W czym może tkwić problem?
Zastanawiające jest to, że wszystkie błędne sumy są identyczne - 1970-01-01 01:00:00, a trafiają sie nie wiadomo dlaczego i kiedy..
Go to the top of the page
+Quote Post
isso
post 7.04.2008, 12:16:01
Post #2





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

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


nie mam pojecia... dlaczeo to nie działa...

ale może spróbuj zamienić datę z Twoich kolumn używając mktime()" title="Zobacz w manualu PHP" target="_manual dodaj je i spowrotem zameń smile.gif


--------------------
Go to the top of the page
+Quote Post
graveozz
post 7.04.2008, 12:23:38
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 28.03.2008
Skąd: Kielce

Ostrzeżenie: (10%)
X----


Nie no probowałem pochodzić do problemu dodawania godzin w php z różnych stron, ale również nie dawało to zamierzonego efektu, operacje na bazie są wg. mnie najlepszym rozwiązeniem bo generują błędny wynik tylko raz na jakiś czas.. dzieki za odpowiedź.
Go to the top of the page
+Quote Post
isso
post 7.04.2008, 12:39:31
Post #4





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

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


Hmmm, ale jak coś robisz... ;] to rób to porzadnie... czyli powinno działać zawsze;] a wydaje mi się że po zamianie daty i czasu przez mktime() otrzymujesz zawsze dobre wynik... :]


--------------------
Go to the top of the page
+Quote Post
graveozz
post 7.04.2008, 13:15:48
Post #5





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 28.03.2008
Skąd: Kielce

Ostrzeżenie: (10%)
X----


Otóż nie, bo przynajmniej w moim przypadku przy użyciu mktime (może błędnie formatowałem date), ale wkradały się jakoweś dziwne anomalie i wynik był większy o parę minut niż prawidłowy.
Jednak udało mi się problem rozwiązać na bazie danych, a mianowicie do zmiennej $zapytanie przypisałem coś takiego:
Kod
   SELECT ADDTIME(start, TIME_FORMAT(stop, '%T')) AS gotowe FROM godziny

i działa poprawnie za każdym razem.
Co nie zmienia faktu, że nie widzę błędu w poprzednim kodzie, i dalej jestem ciekaw czemu generował błędne wyniki.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:59