Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml,php,mysql] problem z pobieraniem danych
Forum PHP.pl > Forum > XML, AJAX > XML
marioxp
Witam,
mam problem z zasysaniem plikow xml do mysql
sprawa wyglada nastepujaco
do katalogu na serwerze generowane sa plik xml z 3 roznymi danymi:
1) xxxx23218937321.xml
2) zzz88923189832.xml
3) yy12432332132.xml

w kazdym z tych plikow znajduja sie rozne dane przykladowe dane
1)xxxx23218937321.xml
<?xml version="1.0" encoding="UTF-8" ?>
<tabela>
<nazwisko>Kowalski</nazwisko>
<data>2010.05.24 10:48:21</data>
<email>kk@k.pl</email>
</tabela>
2) zzz88923189832.xml
<?xml version="1.0" encoding="UTF-8" ?>
<tabela2>
<miasto>Warszawa</miasto>
<data_2>2010.05.24 10:41:21</data_2>
<kod_pocztowy>01-114</kod_pocztowy>
</tabela2>
3) yy12432332132.xml
<?xml version="1.0" encoding="UTF-8" ?>
<tabela3>
<wojewodztwo>mazowieckie</wojewodztwo>
<data_3>2010.05.24 10:39:21</data_3>
<skrot>maz</skrot>
</tabela3>
Te pliki beda sie wrzucone do katalogu x

uzylem parsowania simplexml jesli jest jedne plik z danej kategori to nie ma problemu i oczywiscie kazdy z rodzaj pliku w oddzienlnym katalogu to nie ma problem pobiera ale jedne plik moze ktos pomoc aby wszystkie pliki byly pobierane z jednego katalogu a zeby sam skryp z php pobieral po zawartosci pliku czyli jesli tabela,tabela2,tabela3 i wrzucal od odpowieniej bazy
jesli cos nie napisalem zrozumiale to prosze i info dopisze wiecej

ponizej kawalek kodu dzieki ktoremu pobieram dane z pliku i przerzucam do bazy :

if($katalog = opendir('./xml/x')){
while(false !== ($plik = readdir($katalog))){
if($plik != '.' && $plik != '..'){
$connection = @mysql_connect('localhost', 'user', 'haslo')
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());

$db = @mysql_select_db('tabela', $connection)
or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());

$xml = simplexml_load_file('./xml/x'.$plik.'');
$w = $xml->attributes();

$nazwisko = $xml->nazwisko;
$data = $xml->data;
$email = $xml->email;
$dodaj = mysql_query ('INSERT INTO tabela SET nazwisko='.$nazwisko.', data='.$data.', email='.$email.'');
}
}
}
powyzszy kod dziala ale na pojedynczych plikach nie chce wrzucac wszystkich w danym katalogu, ale najlepszym rozwiazanem bylo by zeby wszystkie pliki byly w jednym katalogu (xxxx*.xml,zzz*.xml,yy*.xml)

z gory dzieki
Dragonas
  1. $dodaj = mysql_query ('INSERT INTO tabela SET nazwisko='.$nazwisko.', data='.$data.', email='.$email.'');

zamień na:
  1. $dodaj = mysql_query ('INSERT INTO tabela SET nazwisko='".$nazwisko."', data='".$data."', email='".$email."');


Data ma więcej niż 11 znaków, więc musisz w badzie danych ustawić, żeby kolumna `data` miała długość wiecej znaków lub użyć funkcji strftotime Czy jakoś tak, choć mam przeczycie, że jest to varchar - jeśli tak to wtedy nie trzeba nic zmieniać.

Pozdrawiam
SATIO
tu podałem przykład zastosowania klasy parsującej xml z zapytaniami xpath:
http://forum.php.pl/index.php?showtopic=156664&hl=
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-2024 Invision Power Services, Inc.