![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 726 Pomógł: 129 Dołączył: 10.01.2008 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Do tabeli z osobami dodaj sobie jeszcze jedno pole, available tinyint(1) i jeśli ta osoba zostanie wylosowana zmień available z 0 na 1 przykładowo, losuj z tych u których available jest na 0.
-------------------- Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/ |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy dobrze zrozumialem, ale chodzi chyba o to, ze bede musial recznie zmieniac te wartosci z 0 na 1
![]() Ja wymyslilem sobie to tak. Jeden z nas wchodzi na index.html, gdzie znajduje sie link podpisany imieniem kazdego z nas. Po kliknieciu na niego skrypt losuje jedna osobe (zapytanie sql wyklucza wylosowanie siebie samego) a nastepnie kasuje ja z bazy danych. W ten sposob nastepna osoba nie bedzie mogla wylosowac tej samej osoby. Jest to takie moje rozwiazanie, ale napewno nie jest one optymalne z racji tego iz sie dopiero ucze. Czekam na jakies sugestie. Jak moge zrobic, aby ten kto juz raz losowal nie mogl ponownie nacisnac linku do losowania lub np. F5? W moim rozwiazaniu musze stworzyc dla kazdego z nas oddzielny link do oddzielnego skryptu. Czy moge jakos przekazac poprze klikniecie na link zmiennej z imieniem? |
|
|
![]()
Post
#4
|
|
![]() 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:
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ę. -------------------- Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/ |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czy dobrze tworze ta tabele z wylosowanymi, bo wywala mi blad w 4 lini
EDIT: Bledu juz nie ma...pospieszylem sie, ale chodzi mi w sumie czy o taki wyglad tabeli Ci chodzi? Ten post edytował saren_as 30.10.2008, 16:42:59 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 726 Pomógł: 129 Dołączył: 10.01.2008 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Nie twórz do tego osobnej tabeli. Dodaj te 2 pola do tabeli z użytkownikami.
-------------------- Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/ |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
...EDIT...
Troche mi zeszlo, ale w koncu mam cos takiego i odziwo nawet mi dziala. Mam jednak jeszcze kilka niewiadomych:
W skrypcie zaznaczylem poprzez //TUTAJ MAM PROBLEM miejsce problemu (linia 36). Osoba, ktora juz wczesniej kogos wylosowala nie moze jeszcze raz tego uczynic. Tak tez sie dzieje przy pomocy uzytej instrukcji IF, ale chcial bym, aby poza informacja, ze juz brala udzial w losowaniu wyswietlilo sie kogo ta osoba wczesniej wylosowala (w ramach przypomnienia) Jak wiec przypisac na stale tej osobie swojego partnera? Prosze takze o wskazanie mi bledow jakie popelnilem piszac moj pierwszy skrypt ![]() Pozdrawiam i dzieki za pomoc ! ...EDIT... OK widze, ze nikt nie wie jak mi pomoc wiec zadam inne pytanie. W lini 34 mam if ($losowal > 0) { dziala to tak jak ma, ale dla czego, gdy wezme if ($losowal = 1) { juz nie dziala? Warunek ten zaklada to samo wiec powinno to dziala w ten sam sposob na obydwu przykladach. Moze mi to ktos wytlumaczyc? PS. Ewentualnie prosze tez o pomoc ze wczesniejszym problemem (linia 36). Pozdrawiam! Ten post edytował saren_as 4.11.2008, 16:42:32 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
wcześniejszy prblem :
zamiast staus_avaiblem ożesz wrzucać id użytkownika którego wylosował ... wyjdzie na to samo drugi problem :
ponieważ to jest operator przypisania a nie porównania, porównujesz za pomocą podwójnego równasię ![]() -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
wcześniejszy prblem : zamiast staus_avaiblem ożesz wrzucać id użytkownika którego wylosował ... wyjdzie na to samo Nie bardzo wiem o co Ci chodzi. Jezeli uzytkownik 'a' wylosowal 'b' to w momencie, gdy 'a' nacisnie jeszcze raz link do losowania zostanie poinformowany, ze juz dokonal losowania i nie moze jeszcze raz tego uczynic. Ja chcial bym, aby dodatkowo wyswietlilo mu, ze wylosowal juz 'b'. Nie wiem jak to zrobic poniewaz w zadnym miejscu nie jest na stale przypisana wartosc wylosowanego elementu. Baza tylko zaznacza, ze juz "kogos" wylosowal. Prosze o dalsza pomoc i z gory dzieki. PS. Co do problemu powyzej (dalem ==1 zamiast =1) miales racje wiec oczywiscie ... 'pomogl' i dzieki za wyjasnienie zagadki. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 293 Pomógł: 4 Dołączył: 28.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
I jeżeli publikujesz ten serwer w sieci internet, to zmień hasło roota.
-------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
I jeżeli publikujesz ten serwer w sieci internet, to zmień hasło roota. Narazie jest to moja zabawa w php wiec wszystko stoi na localhost'cie czyli jest to bezpieczne. Dzieki w kazdym badz razie za info i napewno sie dostosuje. Co do mojego problemu to dalej nie znalazlem rozwiazania. Chyba musze do tego dodac logowanie i wtedy do danego loginu podpiac jakies cookies lub sesje, ale to tylko moje przypuszczenia. Czekam na wskazowki i dzieki za zainteresowanie! Pozdrawiam! Ten post edytował saren_as 5.11.2008, 13:33:53 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 01:51 |