Witam wszystkich. Jestem bardzo zczęśliwy gdyż dziś udało mi się to zrobić dzięki podpowiedzi jednego człowieka, który zasugerował użycie kanałów RSS przez NBP.
Oto skrypt który realizuje Pobieranie bieżących kursów walut oraz archiwum z nbp przez php do bazy danych Postgresql
<?php
/*
Author :poli25
date :22.03.2012
Pobieranie kursow z kanalu rss udostepnianej przez nbp i ladowanie do bazy PostgreSql
Skrypt pobiera kursy z ostatnich 25 dni czyli tyle na ile pozwala ten kanal
Najpierw w Bazie danych (w moim przypadku PostgreSql) trzeba utworzyć te oto tabele:
waluta_naglowek
kolumny:
dzien_waluty (date)
numer_waluty character(30)
waluta_pozycje
kolumny:
dzien_publikacji (date)
kod_waluty character(5)
kurs_waluty character(6)
p.s.
dla zainteresowanych:
zmiana formatu kursu waluty z varchar na numeric odbywa się w postgresql za pomocą polecenia
select round(cast(replace(kurs_waluty,',','.')as numeric),4)
*/
$connect=pg_connect('host=localhost port=5432 user=postgres password=postgres dbname=waluty') or
die ('Problem z połączeniem.');
function stworz_link_xml($string)
{
$podciag_srodek=substr($string,0
,24
); $link_z_xml=$podciag_srodek."xml2/".$year."/a/".$end.".xml";
return $link_z_xml;
}
$kursy=simplexml_load_file('http://rss.nbp.pl/kursy/TabelaA.xml');
foreach($kursy->channel->item as $kanal)
{
$kurs=$kanal->link;
$link=stworz_link_xml("$kurs");
$kursy_dwa=simplexml_load_file($link);
$nr_tabeli=$kursy_dwa->numer_tabeli;
$data_publikacji=$kursy_dwa->data_publikacji;
$sprawdz_date_publikacji=pg_query("select * from waluta_naglowek where dzien_waluty='$data_publikacji'"); if ($ilosc_naglowek==0)
{
$insert_naglowek=pg_query("insert into waluta_naglowek values('$data_publikacji','$nr_tabeli')");
foreach($kursy_dwa->pozycja as $kanal2)
{
//echo $nazwa_waluty=$kanal2->nazwa_waluty;
$kod_waluty=$kanal2->kod_waluty;
$kurs_sredni=$kanal2->kurs_sredni;
//echo"<tr><td>$kod_waluty</td><td>$kurs_waluty</td><td>$nazwa_waluty</td>";
$insert_pozycje=pg_query("insert into waluta_pozycje values('$data_publikacji','$kod_waluty','$kurs_sredni');"); }
echo "Dopisano kursy z dnia : <b>$data_publikacji</b> o numerze tabeli <b>$nr_tabeli</b><br>";
}
else
{
echo "Masz już wpisane kursy z dnia <b>$data_publikacji</b> <br>";
}
}
?>
P.S. temat można zamknąć