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:| id | ostatni_czas | co_ile_naliczac |
+------+--------------+-------------------+
To jednak wymaga zapytania dla każdego wiersza w bazie danych. A ja chciałbym to wszystko zalatwić jednym zapytaniem. Jak to ugryźć?
<?php // Pobierz wszystko z tabeli { // tak długo jak ostatni czas jest mniejszy od aktualnego czasu... while($temp['ostatni_czas']<time() ) { // zwiększaj go o wartość "co_ile_naliczać" $temp['ostatni_czas'] += $temp['co_ile_naliczac']; } // A ponieważ chcemy mieć wartość minimalnie mniejszą, a nie minimalnie większą, t
eraz trzeba ten jeden raz zmniejszyć wartość $temp['ostatni_czas'] -= $temp['co_ile_naliczac']; // i zaktualizować odpowiednie pole w bazie danych mysql_query("UPDATE tabela SET ostatni_czas = " . $temp['ostatni_czas'] . " WHERE id = " . $temp['id']); } ?>