Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Baza danych z testami
Forum PHP.pl > Forum > PHP
qjam
Witam.

Zastanawiam się jak utworzyć bazę danych z testami. Otóż mam formularz dodający test. Są pola na pytania i odpowiedzi ale teraz jak zaznaczyć te poprawne odpowiedzi? Obok każdej z poprwanych odpowiedzi wrzucić opcję "checkbox" lub "radio" i wrzucać to jakoś do osobnej tabeli? W sensie że same pytania i odpowiedzi będą w tabeli test_pytania, a odpowiedzi test_odpowiedzi i tam tylko porównywać po ID gdy użytkownik rozwiąże test? Jak to widzicie?
Wazniak96
W tabeli dodać kolumnę, i jeżeli odp jest poprawne zmienić na np. 1.
Co do tych całych testów, jeżeli masz ich większą ilość rozbiłbym pytania i odpowiedzi na dwie tabele. W tabeli pytania - id, pytanie i czy test jest aktywny, a w drugiej - odpowiedź, id pytania do którego jest to odp, i czy pytanie jest poprawne. smile.gif
qjam
Testów będzie więcej. Dodatkowo ten Twój sposób się nie sprawdzi bo trzeba byłoby znać ID testu i dodatkowo przypisać pytania i odpowiedzi do tego testu. A ID nie znamy przecież w momencie zakładania testu.
q3trm
To kto ma znać to ID?. Ja bym to rozdzielił na trzy tabele TESTY ( nazwa), PYTANIA (nazwa_test, id_pytania, pytanie), ODPOWIEDZI (id_pytania, odpowiedz), następnie powiązać PYTANIAnazwa_test z TESTYnazwa, ODPOWIEDZIid_pytanie z PYTANIAid_pytanie.
qjam
Cytat
To kto ma znać to ID?

Nie powiesz mi, że w momencie wyświetlania formularza znasz ID tworzonego testu, a tym samym umieszczasz ID testu w odpowiedziach i pytaniach. Po GET? Nie, bo w bazie ID może być zupełnie inne. Sprawdzanie czy dane ID jest wolne i dopiero ładowanie formularza? Bez sensu.

Chodzi o to panowie, że miałbym powiedzmy w każdym teście po 10 pytań i teraz tak. Tworzę test, nadaję mu nazwę, wypisuję pytania i po 4 możliwe odpowiedzi (zamknięte) do każdego pytania. Tutaj w jakiś sposób muszę już określić (tworzac test) która odpowiedz jest poprawna.

Następnie ktoś rozwiązuje test, pobiera wszystkie pytania, zaznacza odpowiedzi i test sprawdza poprawność odpowiedzi zwracając mu wynik.
mlawnik
To w momencie tworzenia testu nadajesz mu ID poprzez podanie NULL w pole ID z właściwością AUTO_INCREMENT NOT NULL.
Wazniak96
Takie problemy oczywiście zostały już dawno przewidziane smile.gif
  1. $query = mysql_query("SELECT LAST_INSERT_ID()");
  2. $id = mysql_fetch_assoc($query);
  3. $id = $id['LAST_INSERT_ID()'];
  4.  
  5. // metoda druga


Oczywiście musi być byle AUTO INCREMENT...
q3trm
Cytat(qjam @ 1.05.2013, 17:00:54 ) *
Nie powiesz mi, że w momencie wyświetlania formularza znasz ID tworzonego testu, a tym samym umieszczasz ID testu w odpowiedziach i pytaniach. Po GET? Nie, bo w bazie ID może być zupełnie inne. Sprawdzanie czy dane ID jest wolne i dopiero ładowanie formularza? Bez sensu.


Nie muszę znać id testu w ogóle w tym przypadku bym go nie użył. Wolałbym mieć samą nazwę testu w tabeli pytania - łatwiej się rozeznać w logice bazy, niż w każdej tabeli importować jakieś obce id. A przepisywaniem id_pytanie do tabeli odpowiedzi oraz test_nazwa do pytanie, zajmuje się TRIGGER.
qjam
Moglibyście tu wrzucić w CODE zaprojektowana baze itp. jak widzicie relacje między nimi? Bo utknąłem i teraz nie wiem jak to zrobić...
Tutaj zamieszczam link o oc mi chodzi:



Widać, że jest radio przy każdej odpowiedzi aby zaznaczyć poprawność. Więc w tabeli TEST_ODPOWIEDZI powinienem zrobić jeszcze dodatkowe pole np. POPRAWNA i gdy będzie 1 tzn, że porpawna odpowiedź, a jak 0 to nie? I jak sprawdzić później tą poprawność skoro w teście wyświetlą się wszystkie pytania, 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.