Autor Zpráva
vejnis
Profil
Zdravím,

řeším problém, jak zapsat formulář kde je plno checkboxů, radiobuttonů, textových polí, atd. do databáze? Formulář bude online a je důležitá i následné filtrování a hledání dle parametrů takže "ledabylý" zápis, kterého bych pravděpodobně schopný byl, nepřipadá v úvahu. Potřeboval bych něco sofistikovanějšího....

Někdo nějaké nápady, návrhy, odkazy na literaturu, cokoliv? Díky :))
mimochodec
Profil
Nejspíš nechceš do databáze ukládat formulář, ale z něj odeslané výstupy. Kde na trase mezi zpracováním POST a uložením dat ses ztratil?
RastyAmateur
Profil
Nevím jak ostatní, ale podle mě by tento problém chtěl asi více popsat. Nedokážu si to představit. Jestli je to nějaký dotazník, nebo systém testů pro studenty...

V každém případě bych si udělal tabulku OTÁZKY (nemusím vysvětlovat), pak ODPOVĚDI (seznam možných odpovědí) a pak nějakou spojovací tabulku, kde by byl sloupec uživatel (IP, id přihlášeného uživatele, cokoliv), otázka, odpověď, asi i datum... A máš to.

-------------------------- OTÁZKY -----------------------------
--- id --- title --------------------------------------------------
1 Pohlaví

------------------------- ODPOVĚDI --------------------------
--- id --- title -------------------------------------------------
1 muž
2 žena

---------------------- SPOJ. TABULKA -----------------------
--- id --- user --- question --- answer --- date -----------
1 25 1 2 2016-01-17 15:09

Uživatel s ID 25 17. 1. 2016 v 15:09 hodin odpověděl na otázku s ID 1 odpověď s ID 2

Pak, když chceš hledat a filtrovat : SELECT COUNT(*) FROM spojtable WHERE question='' and answer='';

Pochybuji, že to použiješ, jelikož opravdu nejsem věštec, abych věděl, co přesně potřebuješ...

mimochodec:
"řeším problém, jak zapsat formulář ...... do databáze"
mimochodec
Profil
RastyAmateur:
Tento výklad mě nenapadl. Možné to je, počkáme si. Pokud ano, každá otázka by měla mít hlavně parametr "typ", podle kterého by se se zadáním a později s výsledkem pracovalo jako s textem, číslem, vybranou jednou položkou z více, vybranými více položkami z více, atd.
RastyAmateur
Profil
mimochodec:
Tento výklad mě nenapadl.
Vždyť já jsem také víceméně typoval...

každá otázka by měla mít hlavně parametr "typ"
Ono to bude chtít dalších 50 parametrů. Jen nevíme kterých, protože nevíme, co chce vejnis vykouzlit... Ale máš pravdu, typ by tam v každém případě asi měl být...
Keeehi
Profil
vejnis:
Nejdůležitější otázka asi je, jestli to bude statické, nebo dynamické. Tedy jestli to naprogramuješ a všem se pak zobrazuje to stejné, nebo jestli se každému má zobrazit formulář s trochu jinými políčky, nebo zda ten formulář chceš nějak měnit za pomocí nějakého webového rozhraní.
vejnis
Profil
Díky za reakce!

Ano, do databáze chci ukládat opravdu výstupy z formuláře :) Zpracování dat a POST zvládám, jen se jedná opravdu o komplikovaný formulář, takže mi jde spíše o návrh "ukládacího schématu" než o přesný zápis algoritmu.

Formulář by se dal přirovnat k dotazníku, ale je opravdu rozsáhlý (cca 100-150 checkboxu, 15radiobuttonu, 50 textovych polí povětšinou typu date a name) struktura formuláře je daná, měnit se nesmí - možná opravdu minimálně. Jedná se o převedení papírového formuláře do elektronické podoby. Představit si to můžete tak, jako kdyby jste chtěli formulář pro daňové přiznání převézt do elektronické podoby a to doslova. Tzn vyplnit formulář na webu, odeslat do databáze a následně zase zpětně z databáze (třeba dle r.č.) vypsat data do formuláře

Formulář bude dynamický, každý přihlášený uživatel uvidí to samé a dle nastavených práv bude moc přes webové rozhraní měnit obsah (odškrtávání/zaškrtávání checkboxu atd.)

Přihlašování, práva a jiné si snad pořeším sám, případně budu řešit později. Pokud to řeknu opravdu blbě, tak momentálně mi jde o to jak onen formulář/dotazník "nacpat" nějakým inteligentním způsobem do databáze tak, aby to bylo přehledné a správa/výpis/změna/filtrování dat byla možná.

Jelikož to je takto rozsáhlé tak bych nejraději vymyslel něco automatizovaného abych nemusel v mysql pro každou otázku tvořit jednu table popřípadě jiné takovéto "blbé" řešení. Potom by i sebemenší změna podoby formuláře byla dost obtížná :-/
Keeehi
Profil
V tom případě bych udělal jednu velkou tabulku.
vejnis
Profil
Nebude pak správa té databáze obtížná? Co třeba když se nějaká otázka z formuláře odstraní nebo naopak přidá? Nějak si to moc nedokážu abstraktně představit :-/
Keeehi
Profil
vejnis:
Proto jsem se ptal, jestli se bude měnit nebo ne. Ale dá se žít i se změnami. Co se týče odstranění otázky, tak záleží na tom, co chcete udělat se starými daty. Pokud je nepotřebujete, jen smažete sloupec, pokud jsou pro aplikaci důležitá, necháte sloupec tam a v nových řádcích budou nully. S přidáním je to podobné. Přídáte sloupec a pak se pro staré řádky tam něco přidáte. Co, to už záleží co bude očekávat aplikace. Může to být zase null nebo nějaká defaultní hodnota.
mimochodec
Profil
vejnis:
Přihlašování, práva a jiné si snad pořeším sám, případně budu řešit později. Pokud to řeknu opravdu blbě, tak momentálně mi jde o to jak onen formulář/dotazník "nacpat" nějakým inteligentním způsobem do databáze

Tak jak to píšeš, nepotřebuješ cpát do databáze dotazník, ale jen výsledky. Takže v html uděláš form, pro jeho jednotlivé prvky uděláš v tabulce v databázi sloupeček. Ruční práce. Co řádek, to bude jedno odeslání dat.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0