![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 31.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
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. ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 31.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 1 Dołączył: 26.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 31.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 455 Pomógł: 49 Dołączył: 12.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
To w momencie tworzenia testu nadajesz mu ID poprzez podanie NULL w pole ID z właściwością AUTO_INCREMENT NOT NULL.
-------------------- Pozdrawiam,
mlawnik Cytat(nospor) Jedzmy gówno.... miliony much nie może się przecież mylić |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
Takie problemy oczywiście zostały już dawno przewidziane
![]()
Oczywiście musi być byle AUTO INCREMENT... Ten post edytował Wazniak96 1.05.2013, 17:04:05 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 1 Dołączył: 26.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 31.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
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...? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 16:56 |