Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zwiększenie time_stamp do ostatniego wystąpienia określonej wielokrotności godziny, gdy jako pola czas używam int(14)
L_Devil
post 29.10.2006, 10:24:31
Post #1





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


Witam serdecznie!

Mam następujący problem:
W mojej bazie danych przechowuję czas jako int(14) - timestamp. Jest mi wygodnie na tym operować i dotychczas nie miałem żadnych problemów. Mam taką przykładową tabele:
Kod
+------+--------------+-------------------+
|  id  | ostatni_czas |  co_ile_naliczac  |
+------+--------------+-------------------+
ostatni czas wskazuje na konkretną godzinę danego dnia, np. timestamp 0:00, dnia 25 października 2006. Co ile naliczać to liczba sekund, o jaki należy ten czas zwiększać, np. 60 * 60 * 6. Teraz, mając te dwa pola, chciałbym jednym zapytaniem zwiększyć pierwsze o taką wielokrotność drugiego, żeby było możliwie największe, a przy tym nie przekraczało obecnego czasu (w chwili wykonywania zapytania). Można by to zrobić tak:
  1. <?php
  2. // Pobierz wszystko z tabeli
  3. $query = mysql_query("SELECT * FROM tabela");
  4. while($temp = mysql_fetch_array($query))
  5. {
  6. // tak długo jak ostatni czas jest mniejszy od aktualnego czasu...
  7. while($temp['ostatni_czas']<time() )
  8. {
  9. // zwiększaj go o wartość "co_ile_naliczać"
  10. $temp['ostatni_czas'] += $temp['co_ile_naliczac'];
  11. }
  12. // A ponieważ chcemy mieć wartość minimalnie mniejszą, a nie minimalnie większą, t
    eraz trzeba ten jeden raz zmniejszyć wartość
  13. $temp['ostatni_czas'] -= $temp['co_ile_naliczac'];
  14. // i zaktualizować odpowiednie pole w bazie danych
  15. mysql_query("UPDATE tabela SET ostatni_czas = " . $temp['ostatni_czas'] . " WHERE id = " . $temp['id']);
  16. }
  17. ?>
To jednak wymaga zapytania dla każdego wiersza w bazie danych. A ja chciałbym to wszystko zalatwić jednym zapytaniem. Jak to ugryźć?

Ten post edytował L_Devil 29.10.2006, 10:26:51


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
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: 31.07.2025 - 08:42