Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]quiz
Forum PHP.pl > Forum > Przedszkole
masterbx2
próbuje zrobic cos w rodzaju quizu na stronke.

mam tabele pytania a w niej

id
pytanie
odpowiedz

chce teraz wyswietlic losowe pytanie i 4 losowe odpowiedzi w czym jedna jest prawidlowa

jak sie do tego najlepiej zabrac?

probowalem miedzy innymi tak:

  1. $query = mysql_query("SELECT pytanie, odpowiedz FROM pytania ORDER BY rand() LIMIT 4");
  2. while($row = mysql_fetch_assoc($query))
  3. {
  4. echo $row['pytanie'];
  5. echo $row['odpowiedz'];
  6.  
  7. }


ale nie wiem jak wtedy ustawic z osobna limity na pytania i odpoweidzi bo w tem sposob mam z kazdego po 4 :/
tolomei
Myślę, że powinieneś najpierw przebudować swoją bazę.
Ciężko sobie wyobrazić jak tam upchałeś pytanie i 4 odpowiedzi smile.gif
kill15
Cytat(tolomei @ 10.05.2011, 02:23:12 ) *
Myślę, że powinieneś najpierw przebudować swoją bazę.
Ciężko sobie wyobrazić jak tam upchałeś pytanie i 4 odpowiedzi smile.gif


mógłby w polu odpowiedzi zrobić 4 odpowiedzi np dając przecinek pomiędzy nimi a potem zrobić tablice z tego dzięki przecinkowi.
Ale myślę że najprościej to zrobić:

id
pytanie
prawdziwa
falszywa
falszywa2
falszywa3

potem tylko sprawdza warunkiem czy zaznaczona odpowiedz równa jest wartości z pola prawdziwa snitch.gif

Jeżeli by chciał to mógłby nawet osobną tabele zrobić na odpowiedzi snitch.gif
wyglądało by to np tak
id
odpowiedz - jej tresc
pytanie - id pytania
prawda - liczba np 1 oznaczała by że to jest poprawna odpowiedź ;>

Sam wybierz snitch.gif
Możliwości wiele jest sam wybierz jak to zrobisz.
masterbx2
Cytat(tolomei @ 10.05.2011, 02:23:12 ) *
Myślę, że powinieneś najpierw przebudować swoją bazę.
Ciężko sobie wyobrazić jak tam upchałeś pytanie i 4 odpowiedzi smile.gif



troszke zle zrozumiales

w tabeli mam

1 pytanie = 1 odpowiedz,

chcialem zrobic tak aby wyswietlala sie 4 wiersze przy czym jeden ma by pytanie + prawidlowa odpowiedz, 3 pozostale to losowe bledne odpowiedzi.

@kill15

dzieki moze masz w sumie racje rozdzielenie tabeli byloby chyba najlepszym rozwiazaniem
kill15
Ah rozumiem Cie snitch.gif
No ale i tak możesz zrobić to tak jak mówiłem lub troszke inaczej tzn:

tabela pytania:
id
pytanie
odpowiedz

tabela błędne:
id
odp

i ew jezeli chcesz mieć ciągle te same możliwości odpowiedzi do pytania to zrób jak mówiłem w blednych: id_pytania
Ghostbusters
Cytat(kill15 @ 10.05.2011, 11:01:58 ) *
tabela pytania:
id
pytanie
odpowiedz

tabela błędne:
id
odp

i ew jezeli chcesz mieć ciągle te same możliwości odpowiedzi do pytania to zrób jak mówiłem w blednych: id_pytania


Jeżeli tak zrobisz, obciążysz baze niepotrzebnymi danymi.
Zauwaz, że dla kazdej tabeli PYTANIA bedziesz musiał stworzyc tabele ODPOWIEDZI.

Zamiast zrobić jedną tabele QUIZ, w której umieścisz kolumny: ID, pytanie, odpowiedź

A skrypt będzie pobieral odpowiedni rekord jako pytanie np.:

ID=1, pytanie,

odpowiedziami będą losowo wybrane rekordy z tym, że jeden z rekordów będzie tym samym rekordem co w pytaniu:

ID=1, odpowiedź
ID=2, odpowiedź
ID3, odpowiedź
ID=4, odpowiedź


Czyli zamiast ładować dodatkowe tabele, do odpowiedzi będą dobrane dodatkowe 3 rekordy, które będą wybrane losowo np. sąsiednie rekordy.


Wolałbym rowinąć wątek, który zaczął masterbx2.

Dobrze myśli tylko nie wie jak to zrobić w PHP + MySQL.

Na coś takiego chciałbym znać odpowieź mądrą.

To samo tyczy sie Twojego wczesniejszego pomysłu:

id
pytanie
prawdziwa
falszywa
falszywa2
falszywa3

Wyobraź sobie teraz, gdybyś miał w bazie 1000 rekordów (ID, pytanie, odpowiedź) i do każdego rekodu musiał dodać dodatkowe 3 kolumny, dodatkowe 3 wartości.

A tak, to masz tylko pytanie i odpowiedź.
Pytanie porównujesz z 4 odpowiedziami, przy czym 3 z nich są losowe.

maviozo
Moim skromnym zdaniem wersja z 4 kolumnami i pytaniem jednak ma sens, dlatego, że losowe niewłaściwe odpowiedzi mogą zupełnie nie pasować do pytania, tzn. nie pozostawiające nawet cienia wątpliwości.
Gdyby się jednak upierać, to zrobiłbym dwie tabele
id
pytanie
id_poprawnej_odpowiedzi

oraz tabela z listą wszystkich odpowiedzi.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.