Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Losowanie jednej osoby
koszar93
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 24.09.2010

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


Witam, napisałem skrypt na system loterii (system losuje z dodanych osób jedną i ta wylosowana dostaje nagrodę).

Zrobiłem dodawanie zgłoszeń. I teraz chce, że po zgłoszeniu się 100 osób system wylosuje 1 osobę. Graczy zapisanych mam w bazie. Takie mam tabele: id, name, acc_id.

Jakiej funkcji użyć aby wylosować jedną osobę z tych 100 zapisanych w bazie?

A i jeszcze jedno. Jak zrobić żeby już po wylosowaniu tej jednej osoby system wyczyścił całkowicie tą bazę w której znajdują się ci zapisani. Dodam że w kolumnie id mam auto_increment.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


@exood takie zapytanie jest bardzo mało wydajne (dla każdego wiersza tabeli losowana jest osobna liczba losowa + sortowanie całej tabeli).
Lepiej jest zrobić to w kilku krokach;

1. maxID := SELECT MAX( id ) FROM tabela
2. randNumber := rand( 1, maxID )
3. randID := SELECT MIN( id ) FROM tabela WHERE id >= randNumber
4. SELECT * FROM tabela WHERE id = randID

Jak się uprzeć, to można to zrobić w jednym zapytaniu z podzapytaniami
Go to the top of the page
+Quote Post
exood
post
Post #3





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

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


Cytat(Noidea @ 26.01.2011, 18:15:29 ) *
@exood takie zapytanie jest bardzo mało wydajne (dla każdego wiersza tabeli losowana jest osobna liczba losowa + sortowanie całej tabeli).


wiem, że jest mało wydajne ... ale nie dla 100 rekordów, kwestię wydajności w tym wypadku można uznać za najmniejszy problem.
Twoje rozwiązanie jest niemalże identyczne jak gordena - również nie przewiduje braku konkretnego id w bazie.
Go to the top of the page
+Quote Post

Posty w temacie


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: 7.10.2025 - 03:49