Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 25.11.2009 Ostrzeżenie: (0%)
|
Cześć wszystkim,
Tworzę sobie projekt w którym jedną z funkcji jest system losowania cytatów (taki quiz). Poniższy skrypt działa w sumie w 85% w takim stopniu w jakim chciałbym aby działał, jednakże brakuje tych najistotniejszych 15%. 1. Użytkownik wybiera poziom trudności 2. Biorąc pod uwagę wybrany poziom (lub brak) wyświetla treści adekwatne do wybranego 3. Projekt opiera się o 3 tabele w bazie danych, które posiadają cytaty o trzech stopniach trudności. W przypadku wybrania poziomu łatwego (1 baza) wskazuje nam tylko cytaty z pierwszej bazy itd. W przypadku wybrania całej bazy, system losuje jedną z trzech baz. Teraz chciałbym przejść do problemu, który napotkałem (jestem samoukiem, stąd chciałbym poradzić się u bardziej doświadczonych osób ). Na wstępie podam skrypt/kod (prędzej jest tylko wyciągnięcie numeru id/loginu użytkownika z sesji, co nie ma wpływu na zaistniały problem:
Problem wygląda następująco i dotyczy tego kawałka kodu:
Kod, który wylosuje ID, sprawdza za pomocą funkcji strstr() czy występuje dany cytat w bazie danych użytkownika (czy został już użyty - każdy użyty jest zapisywany w tabeli użytkowników w polu "test", przyjmuje on formę np. L3, L10, L100 itd. co oznacza L - łatwy, 100 numer ID). W momencie kiedy mamy do wyboru np. trzy cytaty w bazie danych o stopniu łatwym i tylko ta baza została wybrana, dwa z nich zostały użyte, czyli znajdują się już w zmiennej $uzytecytaty, system poprawnie losuje 3 cytat, który pozostał w bazie danych i nie był użyty w quizie. Problem pojawia się, kiedy każdy z cytatów został wykorzystany dla wybranego poziomu trudności, wtedy pętla wpada w nieskończoną. Próbowałem opcji break, endwhile niestety nic z tego nie zadziałało w sposób, który byłby rozwiązaniem tego problemu. W związku z tym, że programistą nie jestem i robię to jako pasję (po prostu uczę się - dlatego też do Was napisałem), domyślam się, że problem może leżeć w konstrukcji pętli, może formie, wyborze rodzaju pętli. Chciałbym poprosić o pomoc w rozwiązaniu mojego problemu. Za każdą z odpowiedzi będę bardzo wdzięczny. Pozdrawiam Piotr |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 25.11.2009 Ostrzeżenie: (0%)
|
Pierwotnie tak była skonstruowana baza. Podpowiedz zatem w jaki sposób wyodrębnić min i max dla konkretnego poziomu.
Zakładając Twój pomysł z polem "poziom". Jak ustalić minimalną i maksymalną wszystkich cytatów dla poziomu danego przy założeniu, że: 1 | Cytat | Łatwy 2 | Cytat | Średni 3 | Cytat | Średni 4 | Cytat | Trudny 5 | Cytat | Łatwy 6 | Cytat | Trudny 7 | Cytat | Łatwy 8 | Cytat | Łatwy 9 | Cytat | Trudny 10 | Cytat | Średni Oczywiście nie jest to forma, jedynie przykład. Albo w przypadku kiedy byłaby baza ale każdy cytat byłby o jednakowym stopniu trudności. Biorąc pod uwagę pętlę do while, którą użyłem w jaki sposób zmienić jej konstrukcje (lub zastosować inną może), która wykona tą samą funkcję ale w przypadku wylosowania wszystkich możliwych cytatów, zwróci komunikat: Wylosowano już wszystkie dostępne cytaty, koniec gry. |
|
|
|
rex [PHP][MySQL] Losowanie Unikalnego ID 10.10.2017, 09:41:21
nospor Po pierwsze nie myl pojec:
tabela
baza danych
Po ... 10.10.2017, 09:54:24
nospor Masz jeszcze skopana tabele z cytatami, ktore user... 10.10.2017, 10:26:26
rex Okej, dzięki za podpowiedź, wieczorem pewnie zajmę... 10.10.2017, 10:43:59
nospor Nie chce mi sie analizowac tej calej sieczki, no ... 10.10.2017, 10:48:12 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 04:34 |