Omin
30.10.2020, 22:18:43
Hej,
chciałbym zrobić ranking zdjęć.
Przykładowo mam zbiór 10 zdjęć. Na ekranie pojawiają się 2 i użytkownik wybiera jedno z nich.
Wiem mniej więcej jak podziałać, by zawsze wyświetlić unikalne zdjęcia, ale nie wiem za bardzo co zrobić, by przy kolejnym wyborze wartości się nie powtórzyły.
Znalazłem informację, że można wartości, które się już pojawiły przypisać do tablicy - tu zaczynają się schody.
Muszę jakimś sposobem zrobić tak, by wylosowane wartości zostały usunięte ze zbioru, żeby użytkownik 2 raz na nie nie wpadł.
Ma ktoś sugestię jak taki skrypt napisać?
SmokAnalog
30.10.2020, 22:21:07
Czy po wyborze zdjęcia strona przekierowuje do kolejnego zestawu zdjęć czy to się odbywa w JavaScripcie, bez odświeżania?
Omin
30.10.2020, 22:24:15
Po wyborze strona przekierowuje do kolejnego zestawu.
SmokAnalog
30.10.2020, 22:36:40
Zapisuj informację o widzianych zdjęciach od razu jak je wyświetlasz, najlepiej w bazie danych czy tam pliku na serwerze, żeby po zamknięciu i/lub wyczyszczeniu danych przeglądarki nadal był utrzymany stan.
Jeśli korzystasz z bazy danych i te widziane zdjęcia są dla przykładu w tabeli `widziane_zdjecia`, to zapytanie dla następnego zestawu zdjęć może wyglądać tak:
SELECT *
FROM `zdjecia`
WHERE NOT EXISTS (
SELECT *
FROM `widziane_zdjecia`
WHERE `widziane_zdjecia`.`zdjecie_id` = `zdjecia`.`id`
AND `widziane_zdjecia`.`id_uzytkownika` = ?
)
ORDER BY rand()
LIMIT 2
Omin
30.10.2020, 23:07:36
Dziękuję za sugestię. Z pewnością skorzystam.
Zastanawiam się jedynie jak zastosować te rozwiązanie w przypadku użytkowników, którzy nie byliby zarejestrowani.
SmokAnalog
30.10.2020, 23:12:37
W takim wypadku oparłbym to o sesję na podobnej zasadzie. Możesz na przykład do sesji wrzucać ID zdjęć, które już ktoś widział, a na ekranie przy wejściu pokazywać 2 ostatnie z nich. Wtedy też przy zamknięciu i ponownym otwarciu przeglądarki ktoś zobaczy te same zdjęcia, co ostatnio.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.