Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Artykuł dnia
Forum PHP.pl > Forum > Bazy danych > MySQL
plprog
Witam,

Czesto zachodzi potrzeba wyswietlac jakas tresc na stronie, ktora codziennie ma sie zmieniac, czy to jakis artykul, czy utwor muzyczny do pobrania na stronie czy jeszcze cos innego.

Jak pobrac jeden rekord z bazy w ten sposob, aby miec pewnosc ze codziennie bedzie inny ? Przyjmujemy ze liczba rekordow wciaz rosnie (nie znamy ich ilosci), oraz nie znamy poziomu przysrostu rekordow w czasie. Zazwyczaj pobieram jakis artykul, i zaznaczam kolumnie ze jest wyswietlony, nastepny pobieram ze zbioru tych niewyswietlanych, jest to jednak uciazliwe, bo musze sprawdzac czy czasem te niewyswietlane sie nie skonczyly, a jesli tak to musze czyscic wszystkie rekordy i zabawe zaczynac od nowa.

Ma ktos sprytniejsze rozwiazanie tego problemu ?

Pozdrawiam
Vengeance
  1. SELECT id, tytul FROM artykuly WHERE id <> $id_obecnie_wyswietlanego ORDER BY RAND() LIMIT 1


To $id_obecnie_wyswietlanego keszujesz gdzieś w pliku czy bazie, tak aby caly dzien wyswietlal sie tylko jeden wybrany wpis.
Warto też zrobić cache wyniku całego zapytania czy tam wygenerowanego kodu HTML, tak żeby za każdym przeładowaniem nie pobierać
tego "artykułu dnia" skoro i tak zmienia się tylko raz dziennie.

No i pozostaje napisać skrypt odpalany z CRONa o północy, który usunie cache, wylosuje nowy artykuł i znów zapisze cache.
dr_bonzo
Cytat
Zazwyczaj pobieram jakis artykul, i zaznaczam kolumnie ze jest wyswietlony, nastepny pobieram ze zbioru tych niewyswietlanych, jest to jednak uciazliwe, bo musze sprawdzac czy czasem te niewyswietlane sie nie skonczyly, a jesli tak to musze czyscic wszystkie rekordy i zabawe zaczynac od nowa.

Nie widze w tym nic zlego, tez bym tak zrobil. I czemu uciazliwe? 1 Select i Update wiecej. Wrzucasz to do klasy/funkcji i po problemie.
Defik
Używanie do tego CRON'a jest zupełnie zbędne. Co jeśli nie masz możliwości modyfikowania w nim wpisów ?
Do wykrywania dnia użyj po prostu funkcji odczytującej datę ( np w php date('Y-m-d'); ) i porównaj z tą zapisaną w bazie.
teutates
Taktyka powinna byc taka:
jak najwiecej cacheowania i jak najwiecej w cronie.... Pracuje w olbrzymim serwisie i jest jedna z roznic dzialania szybko od wolno:) Jesli wykoujesz milion zbednych zapytan to raczej zle swiadczy o programiscie:)

Pozdrawiam
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-2024 Invision Power Services, Inc.