Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML+PHP] parser XML do tworzenia Formatek, i ich obsługa bez `ręcznej` zmiany kodów PHP
Cezar708
post
Post #1





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Witam,

Dostałem zlecenie, które polega na napisanie pewnego rodzaju back-officeowej aplikacji służącej do generowania fomularzy na podstawie XML.
W pliku XML zapisane mają być tagi, które spowodują pojawienie się na formularzu określonych pól i przycisków w określonych miejscach, a zmiana formatki ma być tylko na podstawie plików XML, bez programowania w PHP.

UWAGA! Nie chodzi mi o transformatę XSLT, ponieważ jednym z założeń ma być DODAWANIE PÓL FORMULARZA oraz ich USUWANIE.

Na przykład: Mamy dane dotyczące użytkownika:

imie,
nazwisko,
miasto,
ulica.

Wiadome jest, że aby dodać takie dane do bazy danych należy stworzyć odpowiednią formatkę i plik PHP ją obsługujący.

Po jakimś czasie okazuje się, że należy dodać jeszcze pola:

nr_telefonu,
kod_pocztowy.

W normalnych warunkach wymagałoby to zmiany w bazie danych oraz zmianie kodów PHP (a w tym walidacja formularza oraz kod akcji zapisywania danych do bazy)

Teraz pytanie:

Czy istnieje jakieś rozwiązanie, na którym mógłbym się oprzeć tworząc taką aplikację?
Czy może ktoś z Was już kiedyś coś podobnego robił?
Proszę o jakiekolwiek wskazówki w jaki sposób najefektywniej utworzyć taki parser - kreator kodu PHP.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lszota
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Kraków

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


Rozbijanie na 2 tabele:

Zakładam, że masz w relacyjnej bazie danych tabele o nazwie "user".
W tabeli przechowujesz dane w stałym formacie: np. user_id, nazwisko, imie, e-mail.
Tworzysz sobie nową tabelę (zakładam, że masz prawo wykonać polecenie CREATE TABLE), w której możesz tworzyć i usuwać dowolne kolumny. Jedną z nich (z reguły pierwszą) jest user_id, która odwołuje się do klucza głównego tabeli user.

Prawdopodobnie z tabeli user korzystają inne moduły Twojego programu lub inne programy. Tabela user nie podlega wtedy modyfikacjom struktury i jest bezpieczna w przypadku błędnego skonstruowania polecenia ALTER TABLE przez skrypt PHP.

Oczywiście możesz przechowywać w tej dodatkowej tabeli pola w postaci XML lub tekstu z separatorami, jednak operacje na takiej bazie może wykonywać jedynie aplikacja a nie baza.
Można w tego typu bazie przechować dowolne informacje, np. dla kilku userów zapisać:
INSERT INTO USER_DATA (user_id, dane_opisowe) VALUES(55, '<NUMER_BUTA>43</NUMER_BUTA>');
Niestety, nie da się wtedy przeszukać takiej bazy pisząc:
SELECT user_id FROM USER_DATA WHERE numer_buta=55. Niestety (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) to nie przejdzie.

Proponuję, abyś dołożył nową tabelę (ja ją nazwałem USER_DATA) i w niej przechowywał dane o zmiennym formacie. Raczej w grę wchodzi tylko dodawanie kolumn, bez usuwania bo wtedy tracisz dane. Do tego dodatkowe pole tekstowe (typu varchar) na ewentualne dane, które bardzo chcesz przechować a sa na tyle nietypowe, że tworzenie dla nich specjalnej kolumny jest niemozliwe.

Jeszcze inne rozwiązanie.
Załóż tabelę o nazwie powiedzmy "parametry".
create table parametry(user_id int, parametr varchar, wartosc varchar);
Będziesz mógł przechowywać dowolną zmienną listę wartości dla każdego użytkownika i operować na niej poleceniami SQL.
Najfajniej to działa na bazie Oracle ale na MySQL też się sprawdza.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 18:52