Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt losujacy
Forum PHP.pl > Forum > PHP
Sahcio
Hej wszystkim!

Moja szkoła ma tradycję 'szczęśliwego numerka' i chcieliśmy zrobić go w wersji online, na dzień wcześniej. Wymyśliłem, że do tego celu mogę użyć corna który będzie odwiedzał skrypt codziennie np. o 17:00, wykluczając soboty i niedziele. Jednak mam problem, bo nie wiem jak zrobić, żeby wylosowane liczby były odrzucane od puli losującej, dopóki program nie skorzysta z wszystkich możliwych, żeby nikt nie był ominięty podczas całego pełnego cyklu losowania (czyli 31 numerków w różnej kolejności).

  1. <?php
  2.  
  3. $plik = file_get_contents('liczba.txt');
  4. $temp = explode('|', $plik);
  5. if (date('j') == $temp[1]) { // data sie zgadza
  6. $nr = $temp[0];
  7. echo 'Szczęślwy numerek: ' . $nr;
  8. } else { // losowanie nowego numerka
  9. $nr = rand(1, 31);
  10. file_put_contents('liczba.txt', $nr . '|' . date('j'));
  11. }
  12.  
  13. ?>


Jest to gotowy skrypt który gdzieś znalazłem, co prawdą próbowałem coś zrobić z wykorzystaniem bazy danych, ale nie mam pomysłu jak zrobić to 'odrzucanie' tego co zostało już wcześniej wylosowane. Jakieś pomysły macie jak to mogę zrobić?
kristaps
Możesz albo usuwać daną liczbę z pliku, albo zrobić to na bazie danych - po wylosowaniu zwykł update, zmieniający status rekordu - np. na 1.
  1. SELECT * FROM `tabela` ORDER BY RAND() WHERE STATUS = 0

Następnie po wylosowaniu np. liczby 12 (którą zapisz do zmiennej):

  1. UPDATE `tabela` SET STATUS = '1' WHERE liczba = $wylosowana


Przy następnym losowaniu rekord nie będzie uwzględniany. Raz na miesiąc możesz odpalić crona żeby wyzerować statusy.
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.