Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Skrypt losujacy, Odrzucanie wylosowanych liczb?
Sahcio
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 17.12.2012

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


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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
kristaps
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

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


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.

Ten post edytował kristaps 17.12.2012, 19:34:19
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:53