Zapis danych pobranych z bazy danych w pliku w formacie dokumentu XML
Opis zadania
Należy napisać funkcję, która będzie zapisywała wynik dowolnego zapytania SQL-owego w pliku w formacie XML.
Następnie należy sprawdzić poprawność działania funkcji wyświetlając zawartość pliku w oknie przeglądarki internetowej.
Pomocne informacje
1. Składnia dokumentu XML
Wynikiem zapytania napisanego w języku SQL jest tabela. Traktując każdy wiersz takiej tabeli jako węzeł dokumentu XML-owego, a poszczególne wartości jako elementy tego węzła, można napisać funkcję, która zapisze wynik zapytania w postaci poprawnego dokumentu XML. Należy pamiętać, że każdy znacznik musi być zamknięty oraz że dokument XML musi mieć znacznik główny.
Przykład:
Zapytanie zwróciło następującą tabelę:
IdPracownika |
Nazwisko |
27 |
Nowak |
34 |
Kowalski |
Poprawnym plikiem XML zawierającym te dane jest:
<Pracownicy>
<P1>
<IdPracownika>27</IdPracownika>
<Nazwisko>Nowak</Nazwisko>
</P1>
<P2>
<IdPracownika>34</IdPracownika>
<Nazwisko>Kowalski</Nazwisko>
</P2>
</Pracownicy>
Nazwy pól oraz wartości można pobrać za pośrednictwem zmiennej zawierającej tabelę będącą wynikiem zapytania za pomocą funkcji pg_result (wartość) oraz pg_field_name (nazwy pól), których składnia jest następująca (funkcje te zostały opisane w pliku pomocy do zajęć dotyczących wykorzystania PHP do operowania na bazie danych):
pg_result($r, numer_wiersza, numer_kolumny)
pg_field_name($r, nr_kolumny)
gdzie:
$r - nazwa kursora zawierającego wynik zapytania wybierającego
2. Funkcje PHP do operowania na plikach
Zapis do pliku jest możliwy, gdy plik jest umieszczony w katalogu mającym uprawnienia co najmniej 703.
Wybrane funkcje wykorzystywane do operacji na plikach dyskowych:
- otwarcie pliku do zapisu (jeśli plik nie istnieje, jest tworzony):
$f = fopen(”katalog/plik”, ”w”)
Wynik działania funkcji należy przypisać zmiennej plikowej, za pośrednictwem której w dalszej części funkcji następuje odwołanie do pliku.
- zamknięcie pliku:
fclose($f)
Jako parametr funkcji podaje się nazwę zmiennej plikowej. Po zakończeniu przetwarzania plik musi zostać zamknięty.
- zapis na koniec pliku:
fwrite($f, ”tekst”)
gdzie $f to zmienna plikowa związana z plikiem, w którym zapisywane są dane, a ”tekst” to wyrażenie, które ma zostać zapisane w pliku.
- aby plik był bardziej czytelny i uporządkowany można używać znaczników:
\n - znacznik końca wiersza
\t - znacznik tabulatora
Przykład:
fwrite($f, ”abc\n\txyz”);
Do pliku związanego ze zmienną plikową $f zapisany zostanie tekst abc, następnie wstawiony zostanie znak końca wiersza. W nowym wierszu wstawiony będzie tabulator i tekst xyz. Jeśli tak utworzony plik zostanie wyświetlony (np. w oknie przeglądarki internetowej), to pojawi się w następującej postaci:
abc
xyz
Przykładowy algorytm rozwiązania zadania:
W katalogu public_html utwórz katalog o nazwie XML i nadaj mu uprawnienia 703
(rwx----wx)
W katalogu public_html utwórz program w PHP o nazwie sql2xml.php, który:
w katalogu XML utworzy plik do zapisu (plik może mieć dowolną nazwę, ale musi mieć rozszerzenie xml),
połączy się z Twoją bazą danych,
wybierze z bazy danych dowolne dane (instrukcja SELECT),
zapisze do pliku dane będące wynikiem zapytania w postaci pliku XML,
zamknie plik.
Aby uruchomić napisany program z poziomu katalogu public_html programie putty wydaj polecenie:
php sql2xml.php
Jeśli program działa poprawnie, w katalogu XML powinien zostać utworzony plik zawierający wynik zapytania zapisany w formacie XML.
Jeśli zadanie zostanie wykonane poprawnie, po wpisaniu w przeglądarce adresu:
ie.uek.krakow.pl/~login/XML/plik.xml
na ekranie powinien pojawić się plik zawierający dane będące wynikiem zapytania zapisane w formacie XML.