Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nie wiem jak zapisac kilka pól form. do jednego pola bazy...
Forum PHP.pl > Forum > PHP
kukix
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ć..
itsme
rozjasnij to troche zaczynam rozumiec ale jednak za malo danych podales
e11
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.
itsme
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
dragossani
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.
kukix
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...
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.