Wpis z mikrobloga

mirki z #php #webdev i #javascript muszę przygotować kawałek aplikacji, która pozwoli generować formularze oraz wyciągać i przezentować przesłane przez nie dane w formie tabeli. O ile formularz, baza i prezentacja to pikuś o tyle pomysłu na możliwość dodawania własnych zdefiniowanych formularzy mnie przeraża

Od strony pomysłu wygląda to tak: użytkownik uprawniony może dodać bądź zmienić istniejące formularze. Do ich utworzenia wybiera pola które będą mu potrzebne lub dodaje/definiuje nowe (w założeniu wszelkie pola mają być opisane już wewnątrz aplikacji, ale kto zabroni dodać 10 pól z datetime, co nie?), wybiera np checkboksami (bo wizualnie nie będziemy się #!$%@?ć), po zapisaniu generuje się na podstawie podanego tytułu podstrona z danym formularzem

Od technikalii
Baza danych ma strukturę liniową, mamy tabelkę ze zdefiniowanymi polami typu id, typ pola, name (dla posta)

oraz wpisy w postaci
id, id pola, id zdefiniowanego formularza, wartość - gdzie wartość to jakiś długi varchar do którego wszystko będzie szło

Mirki mieliście podobne rzeczy do uklepania czy tylko w mojej firmie takie cuda na kiju wymyślają?
  • 9
@poszlo_wyszlo: Ale w czym jest problem bo nie bardzo widzę? Poza tym, że wybieranie checkboksami jest słabe, raczej bym dał coś takiego

Nazwa (dla posta) [input text]
Typ pola [select z możliwymi typami]
Dodaj / Usuń

No i klient sobie dodaje pola jakie chce, wrzucasz to do bazy i masz
@poszlo_wyszlo: w bazie masz (powinieneś mieć) tabelę, gdzie trzymasz pola dla danego formularza, czyli

id, idformularza, typpola, labelka, nazwadlaposta

No i lecisz foreach(wiersz z tej tabeli) {
$wiersz['labelka']
}

Oczywiście sprawa się robi bardziej zamotana jeśli mają być jeszcze jakieś selecty, radiobuttony itp (bo trzeba wtedy jeszcze dodać obsługę definiowania przez użytkowników możliwych wartości selecta itp.), ale zasada pozostaje ta sama, a dla zwykłych inputów nie wygląda
@qwertyu: narazie to ja mam parę kartek ze z grubsza przemyślaną logiką
powiedz mi jakbyś to do bazy wsadzał? tak samo? dla każdego pola w pętli doklejał stringa z kolejnym insertem?

Tabela z wpisami jest wierszowa, nie mam tu kolumn dla każdego pola tylko każde z nich idzie do tej samej kolumny, rozróżniane są jedynie po id
@poszlo_wyszlo: jak bym wsadzał definicje pól czy wartości z wypełnionego formularza?

to pierwsze to po kolei inserty, chyba, że chcesz się od razu bawić w optymalizację to jeden insert wstawiający od razu wszystkie wiersze (INSERT INTO tabela(...) VALUES (...), (...), (...))

a to drugie to tabela tak jak napisałeś we wpisie, tylko przypuszczam, że dany formularz można wypełnić wielokrotnie, czyli jeszcze musiałbyś dodać pole z identyfikatorem wypełnionego formularza, czyli masz takie
@poszlo_wyszlo: proponuje tylko dodać pole enum na typ pola np. checkbox, radio itp.
zależnie od wybranego pola zapisywać jego ustawienia w uniwersalnej kolumnie gdzie sobie będziesz wrzucał je np. w formie jsona

np. przy polu datetime dajesz użytkownikowy do wyboru tylko title i typ, gdy wybierze datetime'a to przez jsa pokazujesz mu np. dodatkowo opcje wybory min. max. i domyślnej daty których ustawienia później zapisujesz w jsonie do tabeli.

przy wyświetlaniu