Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> form generator/builder
marcio
post
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Witam chcialem sie zapytac czy zend fw/symfony/kohana lub jakis inny fw posiadaja klase do generowania formularzy z information shcema z mysql?
Nie chodzi mi o "helpery" z gotowymi funkcjami do generowania input'ow itp...tylko cos takiego:
  1. $oform = new FormBuilder($this -> $db -> query('select login,passwd,email from users where id = 1'));

I chcialbym miec juz gotowy formularz do np edycji danych.
Wiem ze cos takiego istnieje ale teraz nie potrafie znalesc...

Ten post edytował marcio 27.10.2010, 18:27:46


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


W symfony takie formularze są w zasadzie tylko do wygenerowane, chociaż można i by zrobić to w locie.
Wiem, że do Kohany jest sporo różnych bibliotek i do formularzy i do obsługi bazy.
Go to the top of the page
+Quote Post
Spawnm
post
Post #3





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Hmm tego typu klasę to raczej sam powinieneś zrobić z wykorzystaniem klasy do inputów.
Pamiętaj że gdzieś wcześniej trzeba by zadeklarować jaki typ inputa dla jakiej nazwy z bazy.
Go to the top of the page
+Quote Post
marcio
post
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Hmm tego typu klasę to raczej sam powinieneś zrobić z wykorzystaniem klasy do inputów.
Pamiętaj że gdzieś wcześniej trzeba by zadeklarować jaki typ inputa dla jakiej nazwy z bazy.

kurde wlasnie juz cos takiego widzialem tylko ze na podstawie typu kolumny w tabeli ustawial ze np username byl typu char czy tam varchar to ustawial <input type="text" ale tak szczerze mowiac na podstawie nazwy kolumny byloby to o wiele latwiej zrobic.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
destroyerr
post
Post #5





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Cytat
zadeklarować jaki typ inputa dla jakiej nazwy z bazy

Właśnie chodzi o to, że nie trzeba rozpoznawać na podstawie nazwy kolumny tylko na podstawie jej typu.
Go to the top of the page
+Quote Post
Spawnm
post
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




A mogę prosić o podanie listy w formie
'typ w bazie' -> 'typ formularza'
z tym że typ z bazy podajcie dokładnie czyli np. tinyint(4)
(to zaraz dam gotowca biggrin.gif )

Jestem ciekaw dla jakiś wartości nie wliczając text => textarea był by inny input niż type=text ;]

+ jak widzicie spr czy ma być type=password bez deklaracji tablicy nazw ?

//edit
dobra te bajery typu pass to jednak można by przez dodatkowy parametr z tablicą smile.gif
Powód edycji: [Spawnm]:
Go to the top of the page
+Quote Post
marcio
post
Post #7





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(Spawnm @ 27.10.2010, 20:21:56 ) *
A mogę prosić o podanie listy w formie
'typ w bazie' -> 'typ formularza'
z tym że typ z bazy podajcie dokładnie czyli np. tinyint(4)
(to zaraz dam gotowca biggrin.gif )

Jestem ciekaw dla jakiś wartości nie wliczając text => textarea był by inny input niż type=text ;]

+ jak widzicie spr czy ma być type=password bez deklaracji tablicy nazw ?

//edit
dobra te bajery typu pass to jednak można by przez dodatkowy parametr z tablicą smile.gif

NO wlasnie juz sa komplikacje z polami text i passwd a co dopiero jak kombinowac z form upload?
Chyba pokombinuje za pomoca defaulowych nazw ewentalnie bedzie mozna dodawac dynamicznie nowe nazwy i tag html dla nich

I na jakiej zasadzie rozponac checkbox/radio/menu?


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Spawnm
post
Post #8





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




http://spawnframework.com/drivers/sf_form_builder.tar.gz
miłej zabawy snitch.gif
Powód edycji: [Spawnm]: up :]
Go to the top of the page
+Quote Post
destroyerr
post
Post #9





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


@Spawnm wybacz, ale to nawet szkic nie jest. W takim wypadku lepiej już skorzystać z SQL Buddy lub phpMyAdmin.

Cytat
I na jakiej zasadzie rozponac checkbox/radio/menu?

Pewnie na takiej samej jak robisz to sam, ręcznie. Wszystko zależy od kontekstu w jakim używasz tych pól.
Go to the top of the page
+Quote Post
marcio
post
Post #10





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(destroyerr @ 27.10.2010, 21:44:46 ) *
@Spawnm wybacz, ale to nawet szkic nie jest. W takim wypadku lepiej już skorzystać z SQL Buddy lub phpMyAdmin.


Pewnie na takiej samej jak robisz to sam, ręcznie. Wszystko zależy od kontekstu w jakim używasz tych pól.

Haha w sumie masz racje podswiadomie pomyslalem o tym jednak jakos nie skumalem ;] nie wiem jak to wytlumaczyc ;p

@Spawnm zrobimy tak dzis napisze glowny szkielet tego form builder'a a jutro spojrze na twoja klase bo jak nie to popsuje sobie zabawe a juz idee i zarys mam snitch.gif


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
phpion
post
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(marcio @ 27.10.2010, 19:27:36 ) *
Witam chcialem sie zapytac czy zend fw/symfony/kohana lub jakis inny fw posiadaja klase do generowania formularzy z information shcema z mysql?

Kohana ma moduł Formo, który natomiast posiada plugin ORM, który stworzy formularz na podstawie schematu bazy danych (modelu) z uwzględnieniem relacji. CodeIgniter ma podobne narzędzie wbudowane w siebie i nazwane Scaffolding. Symfony natomiast posiada generator admina. Masz w czym wybierać smile.gif
Go to the top of the page
+Quote Post
skowron-line
post
Post #12





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Szkoda że
Kod
show columns from (..)
nie pokazuje komentarzy nałożonych na daną kolumnę, wtedy tam można by upychać takie informacje.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
marcio
post
Post #13





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


http://3paste.com/s/1918
http://marcio.ekmll.com/formbuilider.php -> mozna zobaczyc

Wczoraj skombinowalem cos takiego, jednak nie wiem jak zrobic zeby dane pole moglo byc typu text/checkbox/menu/radio.
Nie wiem jak to latwo wykombinowac albo zrobic jakies "dynamiczne" settery gdzie mozna byc zmienic zawartosc klucza w $db_equivalent_field ktory by np zmienial wartosc dla klucza login z text na checkbox lub menu i opcjonalnie podac parametry ktore moga byc w menu.

I co w ogole o tym myslicie?


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
skowron-line
post
Post #14





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(marcio @ 29.10.2010, 12:47:15 ) *
I co w ogole o tym myslicie?

Pokaż kod z przykładu
  1. public static function open_rows_and_cols() {
  2.  
  3. if(self::get_table())
  4. self::$form .= '<tr><td align="center">';
  5.  
  6. }
  7.  
  8.  
  9. public static function close_rows_and_cols() {
  10.  
  11. if(self::get_table())
  12. self::$form .= '</td></tr>';
  13.  
  14. }

Nie każdy wsadza wszystko w tabelki, czyli pod tym względem kicha.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
marcio
post
Post #15





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


To jest kwiesta 2 linijek kodu zeby dodac opcje czy maja automatycznie byc tabelki czy tylko czysty form i pozniej samemu sie ostyluje..

CHodzi mi ogolnie o idee dzialania i jak rozwiazac ten problem o ktory pytalem...

Dobranoc tak ogolnie ;**
Cytat
Pokaż kod z przykładu

tzn?w linku z cpaste jest wszystko...



jakis pomysl?bo ja mam jakas idee ale wydaje mi sie ze mozna zrobic to lepiej...

ok form builider prawie gotowy dzis mialem troche czasu i jakos wyszedl, dzis jeszcze dokoncze.

To teraz przejdzmy do nastepnego problemu...

Po pierwsze chcialem zapytac na jakies zasadzie admin generator generuje dane z usuwaniem,edycja i dodawaniem?
Po drugie, widzialem ze niektore form builider'y maja juz walidacje w nie wbudowane, nie ktore korzystaja z niezaleznego lib'a.

Wbudowany walidator wedlug mnie ma ten plus ze znajac juz typ i nazwe kolumny z bazy(ktory jest pobierany automatycznie) mozna ustawic ze np pole email oprocz tego ze ma miec input typy text to mozna mu ustawic reguly do walidacji typu:
  1. $fields = array('email' => array('input' => 'text', 'validation_rule' => array('required', 'isEmail'));

Cos w tym stylu potem wystarczyloby tylko obsluzyc wcisniecie submit'a i tyle walidacja dzialalaby automatycznie...

Co wy na to?

btw: idee jak ma dzialas taki prosty admin generator juz mam ale chce uslyszec idee innych jesli ktos taka posiada..

Ten post edytował marcio 30.10.2010, 00:10:48


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Crozin
post
Post #16





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
To jest kwiesta 2 linijek kodu zeby dodac opcje czy maja automatycznie byc tabelki czy tylko czysty form i pozniej samemu sie ostyluje..
Tyle się tłucze: jeden obiekt jedno zadanie.
Do renderowania formularza w HTMLu użyj osobnego obiektu, który co najwyżej operuje na obiekcie formularza.

Cytat
Po pierwsze chcialem zapytac na jakies zasadzie admin generator generuje dane z usuwaniem,edycja i dodawaniem?
Chodzi Ci o to jak zautomatyzować operacje CRUD dla danych? Dosyć prosto, wystarczy, że modele będą implementować pewien zestaw interfejsów na których opierać się będzie jeden uniwersalny kontroler oraz widok. Co prawda tutaj poruszyłem kwestię MVC, ale to bez większego znaczenia.

Przykładowe interfejsy jakie mogłyby się przydać (wybacz za ewentualne dziwne nazwy):
  1. <?php
  2.  
  3. // Sposób wyświetlania:
  4.  
  5. interface Fetchable {
  6. public function retrieve();
  7. public function retrieveOne($id);
  8. }
  9.  
  10. interface List extends Fetchable { }
  11.  
  12. interface Table extends List {
  13. public function getColumns();
  14. }
  15.  
  16. // "Bajery" przy liście wszystkich rekordów
  17.  
  18. interface Paginable {
  19. public function getOffset();
  20. public function setOffset($offset);
  21. public function getLimit();
  22. public function setLimit($limit);
  23. }
  24.  
  25. interface Sortable {
  26. public function getColumn();
  27. public function setColumn($column);
  28. public function getDirection();
  29. public function setDirection($direction);
  30. }
W zależności od tego jak wygląda sprawa z obsługą formularzy konieczne może okazać się dopisanie kilku interfejsów, które będą pozwalały na uaktualnianie obiektu/rekordu.

Cytat
Cos w tym stylu potem wystarczyloby tylko obsluzyc wcisniecie submit'a i tyle walidacja dzialalaby automatycznie...
Na podstawie typu kolumny w bazie danych możesz co najwyżej sprawdzić czy format danych jest prawidłowy, a to najczęściej za mało. Przypuśćmy, że masz kolumnę publish_at typu DATE. Taki automat spisze się przy sprawdzeniu czy wprowadzone dane mają format YYYY-MM-DD, ale nie sprawdzi już czy data nie jest aby przypadkiem datą przeszłą, albo czy nie jest to rok 2054.

Cytat
Co wy na to?
Określanie reguł walidacji tekstem, zamiast obiektami implementującymi odpowiedni(e) interfejs to proszenie się o wielki ból dupy. winksmiley.jpg
Go to the top of the page
+Quote Post
marcio
post
Post #17





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Tyle się tłucze: jeden obiekt jedno zadanie.
Do renderowania formularza w HTMLu użyj osobnego obiektu, który co najwyżej operuje na obiekcie formularza.

Moglbys to przepisac na 2 linijki kodu bo tak to nie bardzo skumalem....taki mini przyklad ktory pokarze mi o co chodzi
Cytat
Chodzi Ci o to jak zautomatyzować operacje CRUD dla danych? Dosyć prosto, wystarczy, że modele będą implementować pewien zestaw interfejsów na których opierać się będzie jeden uniwersalny kontroler oraz widok. Co prawda tutaj poruszyłem kwestię MVC, ale to bez większego znaczenia.

No wlasnie nie chcialem az tak "kombinowac".
Myslalem o czyms prostszym i troche bardziej prymitywnym ;p

Mniej wiecej tak by to mialo wygladac.
Pobieramy wszystkie kolumny z danej tabeli np news czyli kolumny(id,author,title,content,date)
ustawiamy ze np kolumna id i/lub date nie powinny byc np wyswietlane.
No i poprostu tworzymy prosty panel jeden news pod drugim przy nich 2 ikonki edii i delete i na dole panelu mamy add.
Potem tylko trzeba zaprogramowac proste zdarzenia jak edycja i usuwanie news'ow jak i ich dodawanie

Co do walidacji formularzy masz racje niech inna klasa tym sie zajmie ;]


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Crozin
post
Post #18





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
No wlasnie nie chcialem az tak "kombinowac".
OK, gdzie tam masz jakieś kombinowanie, poza podstawowym wykorzystaniem elementów OOP?

Cytat
Moglbys to przepisac na 2 linijki kodu bo tak to nie bardzo skumalem....taki mini przyklad ktory pokarze mi o co chodzi
  1. <?php
  2.  
  3. class Form {
  4. // To się zajmuje reprezentacją formularza "dla PHP"
  5. }
  6.  
  7. interface FormRenderer {
  8. public function __construct(Form $form);
  9.  
  10. public function render();
  11. public function renderField($field);
  12.  
  13. // ewentualnie jakieś:
  14. public function renderLabel($field);
  15. public function renderHiddenFields();
  16. }
  17.  
  18. class DlFormRenderer implements FormRenderer {
  19. protected $form;
  20.  
  21. public function __construct(Form $form) {
  22. $this->form = $form;
  23. }
  24.  
  25. public function render() {
  26. $renderedFields = array();
  27.  
  28. foreach ($this->form->getFields() as $name => $field) {
  29. $renderedFields = $this->renderField($name);
  30. }
  31.  
  32. return implode('', $renderedFields);
  33. }
  34.  
  35. public function renderField($field) {
  36. // ...
  37. }
  38. }
Oczywiście ten interfejs powinien być nieco bardziej rozbudowany.
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 Aktualny czas: 20.08.2025 - 09:30