Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> cytat dnia, ale *nie* random
wudz
post 3.12.2005, 02:28:03
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 3.05.2004

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


Witam,

chciałbym napisać skrypt, który będzie wyświetlał cytat (obrazek, kolor tła, cokolwiek) przez 24 godziny, po czym będzie się zmieniał na inny (np. o północy)

w sieci można znaleźć wiele skryptów obsługujących cytaty, ale w większości przypadków wybierany jest losowy cytat i po odświeżeniu strony jest już inny - takie coś mnie nie interesuje

założenia:
- baza danych jest
- ilość cytatów x (tzn. dowolna)
- codziennie wyswietlamy 1 cytat
- po przejściu całej kolejki (czyli po x dniach) zaczynamy znów od pierwszego
- żeby nie było errorów żadnych gdy zmienimy liczbe cytatów (x)
- musi to chodzić dosyć szybko, żeby nie obciążać zbytnio serwera

zaznaczam, że nie chodzi mi o gotowy skrypt, ale o jakiś pomysł na to, bo ja nie mam konceptu, znaczy mam, ale nie wiem, czy to jest najszybsze i najprostsze rozwiązanie

wymyśliłem, że można dla każdego x (czyli dla każdego cytatu) na samym początku wygenerować (i przyporządkować) kolejne daty począwszy od dnia dzisiejszego do dnia dzisiejszego + x dni, a gdy kolejka się skończy, czyli po x dniach, znów zrobić to samo i przy każdym wywołaniu strony przez przeglądarkę sprawdzić, czy w bazie istnieje wpis (cytat) z dzisiejszą datą i go wyświetlić, a jeśli nie istnieje, to wygenerować daty od początku

mam nadzieję, że da się zrozumieć to, co napisałem smile.gif
i mam też nadzieję, że ktoś mi pomoże

z góry dzięki, pozdrawiam


--------------------
dżentelmen to mężczyzna, który potrafi grać na akordeonie, ale tego nie robi
Go to the top of the page
+Quote Post
-Guest-
post 3.12.2005, 08:24:31
Post #2





Goście







Heja,

ja bym to zrobił tak:
1) kolumna w tabeli z cytatami data_wyswietlania;
2) pobieram sobie z tabelki losowy cytat, z puli tych, które nie mają daty;
3) sprawdzam, czy dzisiejsza data nie pasuje do żadnego cytatu;
4) jeśli nie pasuje, pobieram i po pobraniu zapisuje sobie do bazy datę dla cytatu;
5) jeśli nie ma wolnych cytatów (bez dat) robię coś tam (np. usuwam wpisy dat lub wywalam komunikat);

pomogłem trochę? worriedsmiley.gif
Go to the top of the page
+Quote Post
wudz
post 3.12.2005, 13:01:19
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 3.05.2004

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


no w zasadzie napisałeś coś podobnego do tego co ja napisałem, ale czy to jest szybkie? bo te cytaty to ma być dodatek, żeby nie było tak, że wygenerowanie cytatu zajmuje 90% czasu generowania całego skryptu

Ten post edytował wudz 3.12.2005, 13:02:16


--------------------
dżentelmen to mężczyzna, który potrafi grać na akordeonie, ale tego nie robi
Go to the top of the page
+Quote Post
dtb
post 3.12.2005, 14:44:01
Post #4





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


tabela cytaty:
timestamp | cytat

a potem za kazdym razem gdy dodajesz cytat dajesz timestamp wiekszy o 3600*24 od poprzedniego, a dzisiejszy cytat wybierasz WHERE timestamp = teraz_data (dla godziny 00:00:00 albo 01 [nie pamietam teraz])

aby szło od nowa gdzy sie skoncza cytaty to powiekszasz wszedzie timestamp o 3600*24*ilosc_cytatow_w_bazie

Ten post edytował dtb 3.12.2005, 14:45:03


--------------------
Go to the top of the page
+Quote Post
wudz
post 3.12.2005, 17:45:54
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 3.05.2004

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


dzieki za pomoc, nie miałem okazji sprawdzić tego jeszcze, sprawdzę jak będę mieć trochę czsu i napiszę jk mi poszło, jeszcze raz dzięki za pomoc


--------------------
dżentelmen to mężczyzna, który potrafi grać na akordeonie, ale tego nie robi
Go to the top of the page
+Quote Post
Jabol
post 3.12.2005, 22:13:20
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


wybieraj poprzez random() z taki samym seed - np. ((dzień + rok) * 15 ) / miesiąc. Powinien się codziennie wybierać inny, ale w obrębie jednego dnia ten sam.
Ten sposób jest dużo prostszy od poprzedniego, aczkolwiek nie jest pewne, że wszystkie cytaty będą wyświetlnoe. I jest troszkę sprzeczny z wymaganiami.
Możesz też np zrobić:
Cytat na dziś id = (rok * 1000 + miesiąć * 10 + dzień) % x;
albo coś w tym stylu. Ale to ma te same wady co poprzedni sposób.

Ten post edytował Jabol 3.12.2005, 22:18:11
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: 27.04.2025 - 08:33