![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam
Jestem w trakcie isania sondy.. jest taki problem, że urzytkownik może podac dowolną liczbe pól odpowiedzi (1-20)... Problem jest w tym jak zapisac to wszystko w bazie... W bazie zrobiłem 4 pola: id pytanie odpowiedzi opcja potrzebuje zapisac liste odpowiedzi w bazie np: tak|nie wiem|może|nie - odpowiedzi 1|5|9|2 - opcje próbowałm za pomocą pętli for, ale coś nie wychodziło.. Najgorsze jest to, że liczba odpowiedzi nie jest stała.. Nie wie ktoś co z tym zrobić.. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
rozjasnij to troche zaczynam rozumiec ale jednak za malo danych podales
-------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 17.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej ponazywaj te pola formularza, które łączą się na jedną odpowiedź w taki sposób: odp[0], odp[1] itd. (czyli np. <input name="odp[0]">)
potem użyj funkcji implode w taki sposób Kod $pole_sql=implode('|',$_POST["odp"])
i $pole_sql wstaw do bazy. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
Cytat Najlepiej ponazywaj te pola formularza, które łączą się na jedną odpowiedź w taki sposób: odp[0], odp[1] itd. (czyli np. <input name="odp[0]">)
potem użyj funkcji implode w taki sposób Kod $pole_sql=implode('|',$_POST["odp"])
i $pole_sql wstaw do bazy. To nie bedzie najlepszy pomysl gdyz jak sama nazwa wskauje to bedzie sonda pozniej zas powstana problemy ze sporzadzeniem statystyk najlepiej rozwiazac to sama budowa bazy danych tab1 [user].[id, imie, nazwisko, itp....] tab2 [sonda].[id, tytul, pytanie, dane opisujace dana sonde] tab3 [wynik].[id_user, id_sonda, odpowiedz] - w tej tabeli kluczem beda te trzy kolumny gdyz ani user, sonda i odpowiedz sie nie moze powtorzyc pozdrawiam -------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Itsme ma oczywiście rację. Jego rozwiązanie jest skalowalne - a to ważna cecha. Chciałem tylko wspomnieć, że przy prostych zastosowaniach wystarczy połączyć elementy przecinkami (implode ale z przecinkiem) i wrzucić do jednego pola. MySQL ma polecenia takie jak FIND_IN_SET albo IN - pozwalają one dobrać się do takiego pola w miarę komfortowo.
-------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Dzięki za odpowiedz.. Spróbuje wszystkich rozwiązań. Jezeli byłoby to na plikach, można by zastosować pętle for, która by powtażałaby się w zależności od ilośi pól.. pętla zapisywała by pierwsze pole, następnie znowu odczytywałaplik i dodawała następne pole z przecinkiem albo "|"... spróbuje to zrobićz bazą... Jezeli chodzi o pomysł (Istme) z nowymi tabelami, to wolałbym teg nie stosować... w tej bazie i tak jest dużo tabel... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 11:12 |