Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> nie wiem jak zapisac kilka pól form. do jednego pola bazy...
kukix
post 1.10.2002, 21:08:10
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ć..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
itsme
post 1.10.2002, 22:40:35
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ą
Go to the top of the page
+Quote Post
e11
post 1.10.2002, 23:49:29
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.
Go to the top of the page
+Quote Post
itsme
post 2.10.2002, 06:02:34
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ą
Go to the top of the page
+Quote Post
dragossani
post 2.10.2002, 10:06:56
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
Go to the top of the page
+Quote Post
kukix
post 5.10.2002, 09:32:42
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...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 11:12