Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]losowanie liczby - codziennie innej
Forum PHP.pl > Forum > Przedszkole
bialko0019
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!
ciekawskiii
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
markonix
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.
chemikpil
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.
aart3k
Lub też czytasz o liniowym generatorze kongruencyjnym i codziennie go wywołujesz tongue.gif
exood
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
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-2025 Invision Power Services, Inc.