Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowanie bez powtorzen + nowe pytania, [PHP][MySQL]
saren_as
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


Witam!
Chce osiagnac cos takiego:
Mam w bazie 8 osob. Kazda z tych osob musi wylosowac jedna osobe (pomijajac siebie), ale warunkiem jest to, iz jezeli osoba nr_1 wylosowala nr_5 bedzie on (nr_5) juz nie dostepny dla innych.
Opis:
Zblizaja sie swieta wiec...
Jest nas osiem osob i chcemy zrobic losowanie kto komu kupi prezent. Jedna osoba kupi cos tylko dla jednej osoby. Problem w tym, ze musimy zrobic losowanie, a jestesmy w tej chwili daleko od siebie. W ramach nauki php wymyslilem sobie, ze stworze stronke na ktorej to skrypt wylosuje za nas ta osobe.
Prosze o pomysly jak to moge rozwiazac. Moje rozwiazanie:
- tworze baze z tabelami losujacy i wylosowany
- kazdy z nas loguje sie i skrypt pobiera wszystkich z bazy (poza zalogowana osoba), a nastepnie losowo wybiera jedna osobe.
Problem w tym, ze nie wiem jak zrobic cos takiego, aby po wylosowaniu jednej osoby nie byla ona juz dostepna dla innych.
Zapraszam do pomocy:) Zaznaczam, ze chcial bym tego dokonac "sam" - nie chce gotowych skryptow ... chyba ze sie poddam.
Pozdrawiam!

Ten post edytował saren_as 3.11.2008, 15:25:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Maxik
post
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Nie ręcznie, a zapytaniem do bazy:
  1. UPDATE tabela SET available=1 WHERE id=1


Po wylosowaniu osoby o id 1 powyższe zapytanie wykluczy ja, z głosowania. Losuj funkcją rand" title="Zobacz w manualu PHP" target="_manual i sprawdzaj czy wylosowany numer nie został już wybrany, jeśli tak losuj kolejną liczbę, aż do skutku.

Do wykluczenia tych co głosowali zrób sobie jeszcze jedno pole np. losowal tinyint(1) NOT NULL i jeśli ta osoba już losowała to zablokuj taką opcję.
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: 4.04.2026 - 15:32