Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: xml vs sql
Forum PHP.pl > Forum > Przedszkole
zdzichu
Witajcie.
Staję przed problemem wyboru nośnika danych konfiguracyjnych themów- generalnie pasuje mi xml za jego elastyczność (definiowanie własnych zmiennych+ jaka templatka na jaką podstrone na xmlu to bajka smile.gif ) naomiast plik xml z tego co mi wiadomo jest "zwykłym plikiem" - mam tu namyśli, że zmiana wartości=file_put_cotents() -czego chciałbym raczej uniknąć. SQL jak wiadomo jest znacznie wolniejszy podczas wczytywania, natomiast do "obróbki" jest znacznie wygodniejszy. Co do technologii .ini zawsze jakoś miałem awersję i szczerze mówiąc nie bardzo się w nią zagłębiałem. Jak rozwiązać mój problem? czy da się jakoś łatwiej edytować pliki xml (edycja tylko poszczególnych zmiennych a nie całego pliku), może warto zainteresować się .ini (jeśli nie da się łatwo edytować xmla, a ini się da), czy jednak jestem skazany na sql (zabrzmiało to jak ostateczność, choć cała reszta systemu przeciez bazuje na sql-u tongue.gif )
nospor
Cytat
aomiast plik xml z tego co mi wiadomo jest "zwykłym plikiem"
Nie, plik xml nie jest zwyklym plikiem. Jakby byl, to nie byloby sensu wymyslac tego formatu.

Do obrobki xml jest wiele klas, ktore w latwy sposob umozliwiają jego "penetracje". Wystarczy uzyc googli o raz wyszukiwarki forum
zdzichu
xmla już używam w systemiku- opieram na simplexml, jednak narazie nie widzę możliwości edycji zmiennej- ale jeśli istnieją klasy, to zapewne jest taka możliwość- dzięki za (jakże proste) natchnienie smile.gif
nospor
sorki, nie doczytalem ze chodzi ci o edycje.

To sie robi mniej wiecej tak:
1) wczytujesz xml do jakies swojej struktury (np. tablica)
2) modyfikujesz dane w tej strukturze
3) zamieniasz te strukture znowu na xml i zapisujesz do pliku

Są klasy co zamieniają xml na tablice i na odwrot. Do ciebie nalezec bedzie modyfikacji danych w tej tablicy
zdzichu
hmm.. nie do końca rozumiem- przeiceż w simplexmlu generalnie wyrażenie jest tablicowe:
  1. <?php
  2. $xml = simplexml_load_file('test.xml');  
  3. echo $xml->foo->bar['xyz'];
  4. ?>

co do pkt 3 to musialbym poszukac w manualu jak zapisac sobie jakąś tablicę na xml (to trudne nie będzie, o ile taka funkcja istnieje biggrin.gif) jednak pkt 2 no idea jak zrobić....
nospor
Cytat
przeiceż w simplexmlu generalnie wyrażenie jest tablicowe:
No nie, to co pokazales to obiekty:
$xml->foo->bar.

Cytat
jednak pkt 2 no idea jak zrobić....

jesli masz to na tablicy to bardzo prosto:
  1. <?php
  2. $tablica['znacznik']['wartosc'] = 'nowa wartosc';
  3. ?>

Oczywiscie to tylko schemat. Klasy co widzialem zamienialy xml na tablice, ale o troche innej strukturze. Ale zasada podobna.
zdzichu
Cytat
No nie, to co pokazales to obiekty:
no w sumie tak, choć można skrócić, że będzie tylko ta "tablicowa końcówka ($bar['xyz'])"...wciąz jednak mam wrażenie, że to zamienianie to takie troszke rozwiązanie na około- poza tym, z tego co piszesz to i tak zapisanie do pliku= file_put_contents(), i nadpisywanie całego pliku, czego bym raczej chciał uniknąć- reguła KISS tongue.gif w ini też się nie da bezpośrednio zmienić jednej wartości?
nospor
No niestety, pliki mają takie ograniczenia, ze wsrodku pliku wartosci nie podmienisz. Co najwyzej mozesz na koncu pliku cos dopisac, ale to cie nie urządza.
zdzichu
podmienienie w stylu sql`owskiego UPDATE byłoby genialnym rozwiąznaiem, jeśli jednak takiego nie ma, to muszę się zastanowić, czy robić na sql, czy może jednak pobawić się, i napisać coś co mi bezboleśnie będzie zmieniało wartośc pewnych ustawień konfiguracyjnych- z tym, że problem aktualnie mam taki:
załóżmy, że pobrałem dane z xmla, zmieniłem to na tablicę, zmieniłem wartość. Jak teraz mam zapisać plik tak, żeby nie usunąć/zmienić wartości innych danych, edytując wpis, który aktualnie zamieniałem, bez duplikowania (czyli coś jakbym sobie walnął plikowego UPDATE tongue.gif )
nospor
no skoro calego xml'a masz w tablicy, podmieniles jakies tam wartosci i zamienisz spowrotem wszystko na xml, to nic nie stracisz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.