Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]System nieliniowej ankiety
Forum PHP.pl > Forum > Przedszkole
Kappucino
Hej!
Muszę napisać system, który:
1) Dla użytkownika będzie kolejno wyświetlał pytania, a na samym końcu generował raport. Wyświetlane kolejno pytania zależą często od poprzednich odpowiedzi, więc musiałby istnieć system różnych warunków na podstawie których skrypt oceniałby jakie pytanie pokazać następne.
2) Dla administratora będzie istnieć łatwa możliwość dodawania pytań z różną liczbą odpowiedzi, a także różnym typem: jednokrotnego wyboru, wielokrotnego wyboru, czy pole tekstowe. Musi również być opcja dodawania własnych warunków do pytań ( na przykład: jeśli użytkownik wybrał odpowiedz "a", a w poprzednim pytaniu miał "b", to idź do pytania 21 ).
Moje pytanie brzmi jak zabrać się za coś takiego? Przeszukałem trochę Internet, "moodle" to chyba coś w ten deseń, ale ja potrzebuje własny skrypt. Wpadłem też na taki pomysł:

Dwie tabele w bazie danych:
1) Tabela pytań: zawiera ID pytania, treść pytania, odpowiedzi na nie, a także ID warunków przypisanych do tego pytania,
2) Tabela warunków: zawiera ID warunku, typ warunku, wartość warunku oraz ID pytania do którego przekierowywuje.


Zastanawiam się, czy to dobry pomysł. Może ma ktoś lepszy, albo wie jak usprawnić to co już wymyśliłem? smile.gif
trueblue
Zmieniłbym tabelę warunków na tabelę odpowiedzi. Oczywiście analogicznie - z id_pytania przy danej odpowiedzi.
Te dwie tabele pozwolą Ci przeprowadzić użytkownika przez ścieżkę pytań.
Dodatkowa tabela będzie potrzebna na przechowanie odpowiedzi użytkownika.
Kappucino
Jak w tym przypadku przechowywać warunki? Do każdej odpowiedzi administrator może stworzyć dowolne warunki.
trueblue
Ok, doczytałem.
Nie wiem czy nie prościej byłoby tworzyć duplikaty pytań. Czyli zamiast budować wszelkie możliwe kombinacje (warunki) kierujące do pytania, już na etapie budowy ścieżek je zwielokrotnić. To się tyczy Twojego: "(na przykład: jeśli użytkownik wybrał odpowiedz "a", a w poprzednim pytaniu miał "b", to idź do pytania 21 )".
Chodzi mi o to, że użytkownik nigdy nie dotrze jakąkolwiek ścieżką do tego samego pytania (o tym samym id), choć treść pytania może być identyczna.
Po prostu może prostsze będzie zarządzanie tym od strony administracyjnej.
Kappucino
Ciekawe rozwiązanie, przy czym ( mogłem to pokazać na większej liczbie przykładów ) warunki mogą być różne. Może to być "A LUB B", "A I B", "W POPRZEDNIM B LUB A A W TYM C", itp.
Chciałbym żeby nie było ograniczeń co do dodawanych warunków i tutaj chyba system duplikowania pytań mógłby być irytujący do zarządzania.

Zastanawiam się może nad wprowadzeniem jakiegoś własnego pseudokodu, który byłby później interpretowany przez skrypt. Coś w stylu:
1:B&A - oznaczałoby że jeśli w pierwszym pytaniu wybrał B, a w obecnym wybrał A, to wtedy przekieruj do pytania jakiegośtam ( podane w innym polu ).
Czy coś takiego to dobre rozwiązanie?
trueblue
Tyle, że w Twoim rozwiązaniu będziesz musiał te warunki wprowadzić.
W moim nie wprowadzasz warunków, ale budujesz od razu docelową ścieżką na podstawie warunków.
To, które rozwiązanie wybierzesz, zależy od Ciebie. Być może Twoje będzie dla Ciebie łatwiejsze do implementacji i zarządzania.
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.