Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: prośba o podpowiedź w sprawie ankiety
Forum PHP.pl > Forum > Bazy danych > MySQL
jarod20
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ę.
sf
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 smile.gif 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
Dzięki za podpowiedź, ale mam nadzieję, że można to rozwiązać w jakiś prostszy sposób.
popbart
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
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
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
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.