Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] czasem działa czasem nie
Forum PHP.pl > Forum > Przedszkole
graveozz
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..
isso
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
graveozz
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ź.
isso
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... :]
graveozz
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.
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.