Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]losowanie liczby - codziennie innej
bialko0019
post 8.12.2010, 06:38:14
Post #1





Grupa: Zarejestrowani
Postów: 294
Pomógł: 4
Dołączył: 19.12.2008

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


Witam. Myślę, nad skryptem generującym codziennie inną liczbę. Chodzi mi o podobną funkcję co rand(), tyle, że ona generuje z podanego zakresu za każdym odświeżeniem nowy los, ja chciałbym uzyskać codziennie inną liczbę z podanego zakresu.. Ma ktoś pomysł?

Chciałbym codziennie wyświetlić z bazy inny cytat, ale codziennie - nie po każdym odświeżeniu..

Pozdrawiam!


--------------------
---
"kto pyta ten nie błądzi"...
Go to the top of the page
+Quote Post
ciekawskiii
post 8.12.2010, 08:06:52
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


ja wpadlem na to zeby losowac o danej godzinie czyli ustalasz np. godzina=08 minuta=00 sekunda=00 i warunek, jezeli jest ta godzina to losuje, pewnie jest prostszy sposob ale ja tak bym to zrobil


--------------------
Go to the top of the page
+Quote Post
markonix
post 8.12.2010, 08:28:34
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Musisz zapisywać sobie poprzednie liczby w bazie lub w pliku.
Może to być w jednym wierszu jako tablica + serialize.

Potem pętla losująca taka dopóki nie znajdzie unikalnej liczby.

Poza tym możesz na sztywno ustalić np. 31 cytatów zależnych od dnia miesiąca - nikt nie będzie czekał ponad miesiąc żeby ocenić czy te cytaty były losowane czy pojawiały się w określonej kolejności.

Ten post edytował markonix 8.12.2010, 08:29:49


--------------------
Go to the top of the page
+Quote Post
chemikpil
post 8.12.2010, 09:09:37
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 7
Dołączył: 3.07.2010

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


Tworzysz tablicę numerowaną od 1, czyli pierwszego dnia miesiąca do 31 ostatniego. Przy pomocy funkcji array_rand układasz w kolejności losowej wszystkie elementy na początku każdego miesiąca. Następnie serializujesz posortowaną tablice i zapisujesz w bazie. Odczytujesz ją za każdym razem pobierając index odpowiadający danemu dniu miesiąca.
Go to the top of the page
+Quote Post
aart3k
post 8.12.2010, 13:54:24
Post #5





Grupa: Zarejestrowani
Postów: 72
Pomógł: 10
Dołączył: 2.02.2008
Skąd: Kraków

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


Lub też czytasz o liniowym generatorze kongruencyjnym i codziennie go wywołujesz tongue.gif
Go to the top of the page
+Quote Post
exood
post 8.12.2010, 16:30:53
Post #6





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

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


hej,
możesz zrobić tak:
dodajesz do tabeli 'cytat', kolumnę 'czy_byl' i defaultowo ustawiasz na 0 wszystkim rekordom
cytat na stronie wyświetlasz za pomocą zapytania:
  1. SELECT * FROM cytat WHERE czy_byl = 0 ORDER BY id LIMIT 1

tworzysz sobie w cronie skrypt, który raz dziennie będzie ci modyfikował obecnie wyświetlany rekord wykonując zapytanie:
  1. UPDATE cytat SET czy_byl = 1 WHERE czy_byl = 0 ORDER BY id LIMIT 1

i tym sposobem masz codziennie nowy cytat smile.gif

i teraz jeżeli cytatów masz mało - dajesz w tym cronie warunek sprawdzający na ilu rekordach zadziałał update - jeżeli nie zadziałał (zadziałał na 0 rekordach) to ustawiasz wszystkim czy_byl = 0 i leci wszystko od początku smile.gif
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: 14.08.2025 - 02:26