![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 1 Dołączył: 9.02.2012 Ostrzeżenie: (10%) ![]() ![]() |
Witajcie,
Chciał bym zrobić w swoim serwisie coś na zasadzie lotto - dla zabawy użytkowników. Ma to działać na zasadzie - użytkownik wybiera 6 liczb z zakresu 1-49, zapisuje je w bazie. O określonej porze, adminsitrator wybiera 6 liczb i są one porównywane z tymi które wybrali użytkownicy. Jeżeli jest trafienie 3,4,5,6 użytkownik dostaje punkty. Zastanawiam się w jaki sposób zapisywać wybierane przez użytkowników liczby - w jednej kolumie, czy dla każdej z liczb stworzyć osobną. Jak to później porównać po wyciągnięciu z bazy, aby zbytnio nie obciążać serwera? Za wszystkie radzy bardzo dzięki! (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Zapisać w sumie możesz tak
user_id | liczby np. zapisujesz po przecinkach (spacjach czy jak chcesz) 3 | 1,2,3,4,5,6 Swoje wygenerujesz też w ten sposób, explodem rozdzielisz je do tablicy i porównasz czy $liczba_usera[0] == $wylosowana[0], $liczba_usera[1] == $wylosowana[1] itd. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 52 Dołączył: 3.02.2013 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Panowie, żyjemy w czasach znormalizowanych tabel w bazach danych.
Moim zdaniem najlepiej by było stworzyć tabelę użytkowników oraz tabelę wybranych liczb. Rekordy z tabeli wybranych liczb przypisywać do użytkowników za pomocą klucza obcego po np id. Dzięki temu jak kiedyś będziesz chciał zmienić ilość liczb (np z 6 na 9) to unikniesz dodatkowej roboty. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zastanawiam się w jaki sposób zapisywać wybierane przez użytkowników liczby - w jednej kolumie, czy dla każdej z liczb stworzyć osobną. Jak to później porównać po wyciągnięciu z bazy, aby zbytnio nie obciążać serwera? Za wszystkie radzy bardzo dzięki! (IMG:style_emoticons/default/smile.gif) ja by zrobił tak .... T: users id | .... T: typy id | user_id | data-losowania | typ SELECT user_id , count(id) as ilosc-trafien FROM typy WHERE data-losowania = coś-tam-coś-tam AND typ IN (liczy wylosowane) GROUP BY user_id i masz listę userów z ilością trafień z danego losowania |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Zapisać w sumie możesz tak user_id | liczby np. zapisujesz po przecinkach (spacjach czy jak chcesz) 3 | 1,2,3,4,5,6 Tak proszę nie rób, mstraczkowski mądrze mówi (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 1 Dołączył: 9.02.2012 Ostrzeżenie: (10%) ![]() ![]() |
Panowie, żyjemy w czasach znormalizowanych tabel w bazach danych. Moim zdaniem najlepiej by było stworzyć tabelę użytkowników oraz tabelę wybranych liczb. Rekordy z tabeli wybranych liczb przypisywać do użytkowników za pomocą klucza obcego po np id. Dzięki temu jak kiedyś będziesz chciał zmienić ilość liczb (np z 6 na 9) to unikniesz dodatkowej roboty. No tak... ale... Liczby zapisywać każda w osobnej kolumnie, czy separować np. przecinkiem. Później explode, sortowanie od najmniejszej do największej i porównywanie każdej z osobna. Ale przy np. 100 graczach porównanie każdej liczby daje 36 porównań na gracza. Nie będzie to obciążało za bardzo serwera? Interesuje mnie najbardziej opytmalne rozwiązanie z tego względu, że graczy będzie napradę dużo. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
analizowałeś moją propozycję (IMG:style_emoticons/default/questionmark.gif)
przecież tak masz rozwiązani gdzie możesz robić losowania ilu liczb chcesz a wyniki dostajesz jednym zapytanie, które też podałem |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 1 Dołączył: 9.02.2012 Ostrzeżenie: (10%) ![]() ![]() |
Hmm a jakbyś porównał same zmienne? Np. $liczby_usera = "1,2,3,4,5,6"; $wylosowane = "1,2,3,4,5,6";
Oczywiście najpierw trzeba liczby posortować. Tylko, że wygrana punktów będzie zależała od liczby trafień - od 3 w górę, tak jak jest to w lotto (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
explode a potem array_intersect($uzytkownika, $wylosowane)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 15:29 |