jarod20
8.01.2005, 16:23:45
Witam,
Chciałbym zrobić ankietę opartą o php i MySQL. Ankieta ma zawierać kilkanaście pytań, zarówno z możliwością wyboru tylko jednej odpowiedzi, jak i z możliwością wyboru więcej niż jednej odpowiedzi. O ile to pierwsze wiem jak zrobić, to nie wiem, jak wysłać do bazy informacje, że na dane pytanie ankietowany udzielił na przykład odpowiedzi numer 2 i 5.
Czy ktoś mógłby mi podpowiedzieć jak powinienem skonstruować tabele w bazie i jak wpisywać do nich takie informacje.
Z góry dziękuję.
Zawsze możesz skorzystać z uniwersalnego sposobu jakim jest zapis poprzez liczby binarne. Co mam na myśli? Jeżeli ustawiasz prawa to jak może wiesz jest to suma praw odczytu, zapisu, wykonywania ... Jak to w twoim przypadku ma wyglądać? Mamy np. 5 odpowiedzi. 00000 - zero zaznaczonych. 01001 - zaznaczona pierwsza odpowiedź oraz czwarta, po konwersji na system dziesiętny wychodzi 2^0+2^3=9 i tą liczbę zapisujesz do pola

Potem jak będziesz chciał wyciągnąć dane to zamienisz znów na binarne i wydobędziesz, które pola były zaznaczone.
Może ktoś ma inny pomysł ;}
jarod20
8.01.2005, 18:19:42
Dzięki za podpowiedź, ale mam nadzieję, że można to rozwiązać w jakiś prostszy sposób.
popbart
9.01.2005, 15:54:59
Jedno z najczęstszych rozwiazań:
tabela: ankieta
id_ank | nazwa
tabela: pytanie
id_pyt | id_ank | nazwa
tabela: odpowiedź
id_odp | id_pyt | nazwa
edit---
do tabeli odpowiedź dodaj user'a
jarod20
9.01.2005, 16:45:27
W ten sposób można zaprojektować tabele dla ankiety(sondy raczej) z jednym pytaniem i kilkoma odpowiedziami, spośród których wybiera się tylko jedną. A przynajmniej tak mi się wydaje, choć pewnien nie jestem, bo dopiero zaczynam zabawę z php i MyQSL. Myślę, że podpowiedź sf jest bliższa temu, o co mo chodzi, szukam jednak czegoś prostszego. Nie wątpię, że można to zrobic inaczej, tylko pytanie brzmi: jak? Może zna ktoś adres internetowy, pod którym znajdę jakąś podpowiedź.
Jeszcze raz z góry dziękuję.
Piotrek
popbart
10.01.2005, 09:11:09
Nie rozumiem cię. Przecież ja ktoś wybierze kilka odpowiedzi to do tabeli glos wprowadzasz tyle rekordów.Żeby wyświetlić kto udzielił jakich odpowiedzi wykonujesz odpowiednim zapytaniem a nie strukturą danych. Ciekaw jestem jak w rozwiązaniu sf obliczysz ile kto oddał wszystkich odpowiedzi albo jak wyciągniesz nazwy odpowiedzi(relacje).
edytowane---
W moim przykładzie zabrakło tabel
tabela: ankieta
id_ank | nazwa
tabela: pytanie
id_pyt | id_ank | nazwa
tabela: odpowiedź
id_odp | id_pyt | nazwa
tabela: glos
id_glos | id_odp | id_user
tabela: user
id_user | nazwa
kszychu
10.01.2005, 09:44:40
Prosciej? proszę bardzo.
Tworzysz w bazie pole varchar a w nim przechowujesz odpowiedzi na dane pytanie oddzielone np, przecinkiem. Obsługa balanlnie prosta (explode, implode).
jarod20
10.01.2005, 20:43:52
Już rozumiem. Wielkie dzięki!
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.