Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Forms, API Reflection, Tworzenie Obiektów do obsługi ogólnej
Master Miko
post 25.12.2006, 13:21:15
Post #1





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


Witam,
To jest mój pierwszy post w php Pro i nie wiem czy pasuje, jeśli nie, to przepraszam moderatorów.

Wiem, że wiele frameworków stosuje "podobne" rozwiązania, lecz ja chce stworzyć ten "systemik" w celach ćwiczebnych i opanowania obiektowości.

Przejdę wieć do właściwej treści:

Zastanawiam się jak połączyć bazę danych, formularze i nie natrudzić się przy tym. Moim zdaniem to bezsensu jest, że za każdym razem robimy oddzielny formularz do każdej tabeli w bazie.

Chce osiągać ten efekt: skrypt tworzy formularz na podstawie tabeli - gdzie zawarte są też elementy walidacji. Ale jest problem. Jeśli zapisze te wszystkie właściwości pól w bazie danych to ją przecież zarżnę! Przy np: rejestracji potrzebne będą 3 połączenia z bazą danych. Jedno z pobraniem właściwości formularzy, drugie w czasie wysyłania i walidacji, trzecie w czasie wysyłania danych rejestracji. Gdzie zapisać te właściwości tabel? Można by zrobić tak, że skrypt cacheuje właściwości tabeli i zapisuje je np. w pliku - ale w jakim formacie najlepiej? SQLite? Zwykłym plikowym?
Potem - po stworzeniu formularza i wysłaniu przez użytkowników - Reflecion ma przechytywać te dane i na podstawie danych walidacji - sprawdzać dane i zapisywać do odpowiedniej tabeli o prawidłowych wartościach. To wiem jak rozwiązać (mam php Solutions tongue.gif)

Jak rozwiązać ten problem przechowywania?

A może użyć jeszcze do tego AJAXa, który by wysyłał dane rejestracji?
Co do walidacji nie chce używać JavaScript bo jakoś zaufania nie mam winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
LBO
post 25.12.2006, 13:43:38
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


serializuj dane
Go to the top of the page
+Quote Post
Master Miko
post 25.12.2006, 14:23:58
Post #3





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


No dobrze mam te serializowane dane, ale gdzie je trzymać, żeby było wydajnie?


--------------------
Go to the top of the page
+Quote Post
Turgon
post 25.12.2006, 15:39:06
Post #4





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Jeśli te dane nie muszą być bezpieczne zwykłe pliki. Jeśli nie, to zabezpieczasz folder .htaccess z plikami .php.


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Ociu
post 25.12.2006, 20:21:52
Post #5





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Może tak:
  1. <forms>
  2. <form type="text" size="20" name="nazwa" />
  3. <form type="textarea" name="opis" />
  4.  
  5. <validator class="string">
  6. <input name="opis" error="Opis nie jest stringiem" />
  7. <input name="nazwa" error="Nazwa nie jest poprawna">
  8. </validator>
  9.  
  10. </forms>


  1. <?php
  2. class StringValidation extends Validation
  3. {
  4.  
  5. public function validate( $name, $error )
  6. {
  7.  
  8. if( is_empty( $_POST[$name] ) AND !is_string($_POST[$name]) )
  9. {
  10. print $error;
  11. return false;
  12. }
  13. else { return true; }
  14.  
  15. }
  16.  
  17. }
  18. ?>
Go to the top of the page
+Quote Post
Master Miko
post 25.12.2006, 21:56:37
Post #6





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


Rzeczywiście, XML będzie tu chyba najlepszym rozwiązanem smile.gif
Tylko takie pytanie: Jak będzie logiczniej - Najpierw tworzyć tabele i je opisywać w XML czy najpierw stworzyć schemat XML i na jego postawie tworzyć tabele? Chyba to drugie rozwiązanie jest lepsze..?

Ten post edytował Master Miko 25.12.2006, 21:56:49


--------------------
Go to the top of the page
+Quote Post
LBO
post 26.12.2006, 07:25:39
Post #7





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(Master Miko @ 25.12.2006, 21:56:37 ) *
Rzeczywiście, XML będzie tu chyba najlepszym rozwiązanem smile.gif
Tylko takie pytanie: Jak będzie logiczniej - Najpierw tworzyć tabele i je opisywać w XML czy najpierw stworzyć schemat XML i na jego postawie tworzyć tabele? Chyba to drugie rozwiązanie jest lepsze..?

Elastyczność wymagałaby, by ten Wizzard formularzy korzystał już z istniejących tabel. Bo dziwne wydaje mi się, tworzenie tabeli specjalnie pod niego. Poza tym nic nie stoi na przeszkodzie, by opis xml'owy był na tyle dobry, by to działało w obie strony.
Go to the top of the page
+Quote Post
Master Miko
post 26.12.2006, 12:11:21
Post #8





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


Tzn o tworzenie tabel w oparciu o XML chodziło mi o coś takiego, że tworzę sobie z 6 plików XML, w każdym opisuję tabele - właściwości, typy pól itp itd (razem z walidacją) puszam skrypt automatyzujący - który tworzy tabele. A w odwrotną stronę musiałbym się więcej natrudzić.
TABELA->XML - najpierw samemu trzeba stworzyć tabelę, użyć skryptu imortującego właściwości tabeli do xml a potem je opisywać (mogą być wyjątki, specjalne pola itp). Więc tak naprawdę 2 czynności :/

XML->TABELA - wszystkie wyjątki są JUŻ opisane razem z kolumnami tabeli - bez problemowo uruchamia się skrypt i tworzy tabele w bazie danych...


--------------------
Go to the top of the page
+Quote Post
Dandelion
post 26.12.2006, 16:18:23
Post #9





Grupa: Zarejestrowani
Postów: 169
Pomógł: 0
Dołączył: 27.01.2006

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


a nie prosciej tak.

1. Tworzysz tabele wraz z polami w bazie danych
2. Klasa generuje formularz np po wpisaniu makeform(tabela) :]


budowe tabeli wyciagac np za pomoca DESCRIBE TABLE

Ten post edytował Dandelion 26.12.2006, 16:26:57
Go to the top of the page
+Quote Post
Master Miko
post 26.12.2006, 21:43:16
Post #10





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


Super... po czym zapycham cały mysql pojawiającymi się non stop describe... przeczytaj mój pierwszy post.


--------------------
Go to the top of the page
+Quote Post
LBO
post 26.12.2006, 21:58:01
Post #11





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Hmmm, wybacz, ale kolega napisał, że formularze budowane za pomocą komendy makeform(). Więc zakładam, że docelowo dzieję się to tylko raz, dane są cacheowane i Wizzardstamtąd pobiera już dane o budowie tabel,
Go to the top of the page
+Quote Post
Master Miko
post 26.12.2006, 21:59:48
Post #12





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


Nie wiem... zdanie "Klasa generuje formularz np po wpisaniu makeform(tabela)" zrozumiałem, że za każdym razem robi ten describe... ponieważ "generuje formularz" oznacza generowanie formularza na stronie. Może niech kolega to potwierdzi bądź zaprzeczy smile.gif


--------------------
Go to the top of the page
+Quote Post
LBO
post 26.12.2006, 22:00:14
Post #13





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


edit:
wróć, żadnej "budowie tabel". Powinna nastąpić kompilacja do wynikowego kodu php/HTML
Go to the top of the page
+Quote Post
Master Miko
post 26.12.2006, 22:03:07
Post #14





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


No ale czy nie ma się większej kontroli gdy cały opis tabeli jest skonstruowany w pliku XML i na jego postawie tworzy się tabelę? Wtedy odrazu wszystko jest skonfigurowane, nie trzeba robić describe'ów?

Chociaż problem może pojawić się w czasie zmianie kolumn ponieważ jak zmienię XML to będzie trzeba wygenerować znowu tabelę... chyba że napisać jakiś super algorytm... a tego chyba nie chce tongue.gif


--------------------
Go to the top of the page
+Quote Post
LBO
post 26.12.2006, 22:11:49
Post #15





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


A mi się wydaje, że przekombinowujesz. Projekt takiego Wizzarda powinien być łatwo-dołączalny do istniejących już aplikacji. Czyli z gotową bazą danych.
Pomysł z plikami XML wydaje mi się chybiony, w sytuacji gdy tak jak proponujesz miałby być za każdym razem parsowane i generować formularz w locie.
Oczywiście, nie jest to zły pomysł, bo łatwiej na plikach XML działać. Na początek radziłbym Tobie napisać silnik czytający taki XML i parsujący go do gotowych plików formularza, a dopiero potem dodać funkcję tworzenia pliku XML z gotowych tabel w BD.

Cytat
Chociaż problem może pojawić się w czasie zmianie kolumn ponieważ jak zmienię XML to będzie trzeba wygenerować znowu tabelę... chyba że napisać jakiś super algorytm... a tego chyba nie chce tongue.gif


Dlatego zaprojektuj również w jaki sposób taki Wizzard powinien generować kod formularzy, żeby w razie zmiany struktury tabel w Bazie Danych, tylko podmienić odpowiednie pliki, tymi nowo-skompilowanymi.

Ten post edytował LBO 26.12.2006, 22:14:28
Go to the top of the page
+Quote Post
Master Miko
post 26.12.2006, 22:25:53
Post #16





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


Ok dzięki! To już wiem jak się za to powoli zabierać smile.gif


--------------------
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: 16.04.2024 - 05:36