Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kursy walut
szoszon3
post 7.05.2004, 19:59:25
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.01.2004

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


Witam mam taki skrypcik do kursu walut[php:1:1f25bb204b] <?php

DEFINE('_N_COLOR','#004080'); //kolor czcionki nagłówka
DEFINE('_W_COLOR','#000000'); //kolor czcionki wyników walut
$f = @fopen("http://www.nbp.pl/Kursy/KursyA.html", "r");
if ($f) {
while(!feof($f)) $strona.= fread($f,1024); fclose($f);
$strona = preg_replace("/r/", " ", $strona);
$strona = preg_replace("/n/", " ", $strona);

preg_match("/z dnia <b>(.*?)</b>/", $strona, $zdnia);
echo "<font color="._N_COLOR.">Kursy walut NBP z dnia ". $zdnia[1]."</font>";
preg_match_all ("/<tr valign="middle">.*?</tr>/", $strona, $sa);

for ($i=0; $i<count($sa[0]); $i++) {
preg_match("/new">(.*?)</td/", $sa[0][$i], $waluta);
preg_match("/lne">(.*?)</td/", $sa[0][$i], $kurs);
if (eregi("EUR",$waluta[1])) echo "<br><br><B><img src="/img_waluty/ue.gif">&nbsp;<font color="._W_COLOR.">1 EUR - ".$kurs[1]."</font>";
if (eregi("USD",$waluta[1])) echo "<br><img src="/img_waluty/usa.gif">&nbsp;<font color="._W_COLOR.">1 USD - ".$kurs[1]."</font>";
if (eregi("GBP",$waluta[1])) echo "<br><img src="/img_waluty/gb.gif">&nbsp;<font color="._W_COLOR.">1 GBP - ".$kurs[1]."</font></b>";

}
}
?>[/php:1:1f25bb204b]
niestety od kilku dni cos sie zmienilo na stronce nbp i nie chce juz pobierac info o walutach. Co i jak zmienic zeby bylo okej ?
Go to the top of the page
+Quote Post
Majdan
post 7.05.2004, 20:12:30
Post #2





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

Ostrzeżenie: (10%)
X----


Jakbyœ mógł, to umieœć kod między
  1. <?php
  2. , a
  3. ?>
. Każdemu zrobisz przyjemnoœć. :wink:


--------------------
Go to the top of the page
+Quote Post
tmk
post 8.05.2004, 15:11:58
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 15.04.2004
Skąd: w-wa

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


No na nowej stronce nie ma juz class="new", ani "lne", a Ty się do nich odwołujesz. Najprosciej bedzie chyba skorzystac z xml'a umieszczonego na stronce, i wyszukiwanie odpowiendnich danych miedze znacznikami tzn:
[php:1:5cf6cb2e67]<?php
preg_match("/<kod_waluty>(.*?)</kod_waluty>/", $znalezione[0][$i], $waluta);
preg_match("/<kurs_sredni>(.*?)</kurs_sredni>/", $znalezione[0][$i], $kurs);
?>[/php:1:5cf6cb2e67]
Go to the top of the page
+Quote Post
matid
post 8.05.2004, 15:28:10
Post #4





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


Ja pobieranie walut rozwiązuję w ten sposób:
[php:1:25e0aa8f26]
<?
$new = 'http://www.nbp.pl/Kursy/xml/a056z040319.xml';
$filename = 'waluty.xml';
$obj->tree = '$obj->xml';
$obj->xml = '';

function startElement($parser, $name, $attrs) {
global $obj;

// If var already defined, make array
eval('$test=isset('.$obj->tree.'->'.$name.');');
if ($test) {
eval('$tmp='.$obj->tree.'->'.$name.';');
eval('$arr=is_array('.$obj->tree.'->'.$name.');');
if (!$arr) {
eval('unset('.$obj->tree.'->'.$name.');');
eval($obj->tree.'->'.$name.'[0]=$tmp;');
$cnt = 1;
}
else {
eval('$cnt=count('.$obj->tree.'->'.$name.');');
}

$obj->tree .= '->'.$name."[$cnt]";
}
else {
$obj->tree .= '->'.$name;
}
if (count($attrs)) {
eval($obj->tree.'->attr=$attrs;');
}
}

function endElement($parser, $name) {
global $obj;
// Strip off last ->
for($a=strlen($obj->tree);$a>0;$a--) {
if (substr($obj->tree, $a, 2) == '->') {
$obj->tree = substr($obj->tree, 0, $a);
break;
}
}
}

function characterData($parser, $data) {
global $obj;

eval($obj->tree.'->data=''.$data.'';');
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($filename, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
if($obj->xml->TABELA_KURSOW->DATA_PUBLIKACJI->data!=date("Y-m-d")){
$filename = $new;
$obj->tree = '$obj->xml';
$obj->xml = '';
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($filename, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);

}
$arr = $obj->xml->TABELA_KURSOW->POZYCJA[6]; // aby pobrać inną walute zmień wartość klucza dla tablicy POZYCJA
echo $arr->PRZELICZNIK->data . " ¥ = " . $arr->KURS_SREDNI->data . " zł";
?>
[/php:1:25e0aa8f26]
Przykład na Jenach japońskich, ale przerobić to tylko kwestia zmiany jednej linijki
Go to the top of the page
+Quote Post
szoszon3
post 9.05.2004, 11:54:44
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.01.2004

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


witam ! cos jest nie tak lub cos zle robie bo wychodzi mi blad

Nie można wyświetlić strony XML
Nie można przeglądać wejścia XML przy użyciu arkusza stylów . Popraw błąd, a następnie kliknij przycisk Odśwież lub spróbuj ponownie później.


--------------------------------------------------------------------------------

Spacja nie jest dozwolona w tej lokalizacji. Błąd podczas przetwarzania zasobu 'http://www.e-tarnow.pl/waluty.xml'. Wiersz 1, Pozycja 3

[/url]
Go to the top of the page
+Quote Post
Indianin
post 9.05.2004, 12:02:15
Post #6





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Hamburg / Darlowo

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


masz pustą linie na początku kodu . Musisz mieć plik waluty.xml . U mnie działa bez zarzutu.
Go to the top of the page
+Quote Post
szoszon3
post 9.05.2004, 20:10:24
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.01.2004

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


[quote]masz pustą linie na początku kodu . Musisz mieć plik waluty.xml . U mnie działa bez zarzutu.[/quote]


hym [php:1:0afda29cb2]<?php
$new = 'http://www.nbp.pl/Kursy/xml/a056z040319.xml';
$filename = 'waluty.xml';
$obj->tree = '$obj->xml';
$obj->xml = ''; <--- o to chodzi ?
?>[/php:1:0afda29cb2]

co mam dac do pliku waluty.xml?questionmark.gif[/quote]
Go to the top of the page
+Quote Post
matid
post 9.05.2004, 20:48:09
Post #8





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


Kod z tego co wiem jest dobry, bo go sprawdzałem.
Wystarczy utworzyć pusty plik waluty.xml
Go to the top of the page
+Quote Post
miedzna
post 10.05.2004, 11:53:43
Post #9





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


[php:1:2b342d1add]<?php
$new = 'http://www.nbp.pl/Kursy/xml/a056z040319.xml';
$filename = 'waluty.xml';
$obj->tree = '$obj->xml';
$obj->xml = 'waluty.xml';

function startElement($parser, $name, $attrs) {
global $obj;

// If var already defined, make array
eval('$test=isset('.$obj->tree.'->'.$name.');');
if ($test) {
eval('$tmp='.$obj->tree.'->'.$name.';');
eval('$arr=is_array('.$obj->tree.'->'.$name.');');
if (!$arr) {
eval('unset('.$obj->tree.'->'.$name.');');
eval($obj->tree.'->'.$name.'[0]=$tmp;');
$cnt = 1;
}
else {
eval('$cnt=count('.$obj->tree.'->'.$name.');');
}

$obj->tree .= '->'.$name."[$cnt]";
}
else {
$obj->tree .= '->'.$name;
}
if (count($attrs)) {
eval($obj->tree.'->attr=$attrs;');
}
}

function endElement($parser, $name) {
global $obj;
// Strip off last ->
for($a=strlen($obj->tree);$a>0;$a--) {
if (substr($obj->tree, $a, 2) == '->') {
$obj->tree = substr($obj->tree, 0, $a);
break;
}
}
}

function characterData($parser, $data) {
global $obj;

eval($obj->tree.'->data=''.$data.'';');
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($filename, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
if($obj->xml->TABELA_KURSOW->DATA_PUBLIKACJI->data!=date("Y-m-d")){
$filename = $new;
$obj->tree = '$obj->xml';
$obj->xml = '';
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($filename, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);

}
$arr = $obj->xml->TABELA_KURSOW->POZYCJA[6]; // aby pobrać inną walute zmień wartość klucza dla tablicy POZYCJA
echo $arr->PRZELICZNIK->data . " ¥ = " . $arr->KURS_SREDNI->data . " zł";
?>[/php:1:2b342d1add]

Ale nadal wywala mi :
Warning: fopen(): php_network_getaddresses: gethostbyname failed in c:program filesapache groupapachehtdocsplikitabela.php on line 73

Warning: fopen(http://www.nbp.pl/Kursy/xml/a056z040319.xml): failed to open stream: No error in c:program filesapache groupapachehtdocsplikitabela.php on line 73
could not open XML input

Plik waluty.xml utworzylem, ale nic...
Go to the top of the page
+Quote Post
Indianin
post 10.05.2004, 12:36:25
Post #10





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Hamburg / Darlowo

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


[php:1:be4e153a6f]<?php
//$obj->xml = 'waluty.xml'; // sad.gif a po co ?
$obj->xml = ''; // ;-) wystarczy
?>[/php:1:be4e153a6f]
Go to the top of the page
+Quote Post
miedzna
post 10.05.2004, 14:18:53
Post #11





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Cytat
[php:1:4b289fa53f]<?php
//$obj->xml = 'waluty.xml'; // sad.gif a po co ?
$obj->xml = ''; // ;-) wystarczy
?>[/php:1:4b289fa53f]


I tak wywala ten sam blad :

Warning: fopen(): php_network_getaddresses: gethostbyname failed in c:program filesapache groupapachehtdocsplikitabela.php on line 73

Warning: fopen(http://www.nbp.pl/Kursy/xml/a056z040319.xml): failed to open stream: No error in c:program filesapache groupapachehtdocsplikitabela.php on line 73
could not open XML input
Go to the top of the page
+Quote Post
Indianin
post 10.05.2004, 16:49:45
Post #12





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Hamburg / Darlowo

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


A masz plik "waluty.xml" ?
Go to the top of the page
+Quote Post
miedzna
post 10.05.2004, 16:51:32
Post #13





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Cytat
A masz plik "waluty.xml" ?


Mam i nic sad.gif
Go to the top of the page
+Quote Post
Bakus
post 10.05.2004, 17:24:00
Post #14


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


Ja z kolei mam inny problem...
Cytat
XML error: no element found at line 2


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
Indianin
post 10.05.2004, 18:36:32
Post #15





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Hamburg / Darlowo

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


Ja miałem tak samo gdy w pliku waluty.xml bylo kilka pustych linii . Plik musi mieć 0 bitów .

Ten post edytował Indianin 23.07.2004, 07:58:54
Go to the top of the page
+Quote Post
matid
post 10.05.2004, 19:56:18
Post #16





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


Plik musi być pusty bo inaczej skrypt interpretuje go jako cache. Co do waszych innych problemów: Być może na serwerze macie zablokowaną funkcję fopen dla plików zewnętrzych. Można to ew. przerobić na file();
Go to the top of the page
+Quote Post
miedzna
post 11.05.2004, 14:16:02
Post #17





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Cytat
Być może na serwerze macie zablokowaną funkcję fopen dla plików zewnętrzych. Można to ew. przerobić na file();


w php.ini mam taka linijke:
allow_url_fopen = On
o to chodzilo questionmark.gif?

P.S. Mialem na ON ale i tak nie dziala sad.gif
Go to the top of the page
+Quote Post
ambrozy
post 11.05.2004, 14:49:54
Post #18





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 5.02.2003

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


a ja mam pytanie innego typu: czy jest sens istnieja ponizszej czesci kodu skoro plik waluty.xml i tak nie jest aktualizowany przez skrypt

[php:1:f3c87869c7]<?php
if($obj->xml->TABELA_KURSOW->DATA_PUBLIKACJI->data!=date("Y-m-d")){
$filename = $new;
$obj->tree = '$obj->xml';
$obj->xml = '';
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($filename, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);

}
?>[/php:1:f3c87869c7]
Go to the top of the page
+Quote Post
matid
post 11.05.2004, 14:53:58
Post #19





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


Przepraszam, skopiowałem złą wersję kodu. To była rozwojowa i tutaj jest problem z cachowaniem. Za niedługo wrzucę nową.
Go to the top of the page
+Quote Post
miedzna
post 11.05.2004, 14:56:56
Post #20





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Cytat
Przepraszam, skopiowałem złą wersję kodu. To była rozwojowa i tutaj jest problem z cachowaniem. Za niedługo wrzucę nową.


Wrzuc wrzuc, bo towarzysze czekaja ...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 17:42