Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] bład wyswietlania walut
Forum PHP.pl > Forum > Przedszkole
gosienkami
co jest nie tak? nie wyswietla mi pierwszej pozycji kursu walut( wstawia 0), a w poniższych wyswietla kod waluty zamiast jego nazwę..
  1. <?php
  2. ...
  3. for($i=8;$i<=24;$i++)
  4. //{  
  5. if ($i==8 OR $i==12  OR $i==14 OR $i==15 OR $i==16)
  6. {
  7.  $a = $i . $offset;
  8. echo"<table width=\"222\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  9.         <tr>
  10.           <td align=\"center\"  width=\"74\">".$matches_t[0][$a]."</td>";
  11.           $t = explode(',', $matches_t[0][$a+2]);
  12.           $o = explode(',', $matches_o[0][$a+2]);
  13.           $value_n = round($t[0] . '.' . $t[1],2);
  14.           $value_o = round($o[0] . '.' . $o[1],2);
  15.           $diff = round(($value_n - $value_o),2);
  16.           echo "<td align=\"center\"  width=\"74\">$value_n</td>";
  17.           $t = explode(',', $matches_t[0][$a+4]);
  18.           $o = explode(',', $matches_o[0][$a+4]);
  19.           $value_n = round($t[0] . '.' . $t[1],2);
  20.           $value_o = round($o[0] . '.' . $o[1],2);
  21.           $diff = round(($value_n - $value_o),2);
  22.           echo "<td align=\"center\" width=\"74\">$value_n</td>
  23.         </tr>
  24.       </table>";
  25.  
  26.       echo "\n";
  27. //}
  28.       $offset+=2;
  29.       if($offset == 10)
  30.       {
  31.       $i++;
  32.       $offset = 0;
  33.      }
  34.       echo "";
  35.  
  36. }
  37. ?>


hmm, ma ktos pomysł co tu mogło się posuć, wczesniej działało ok, czy na stonie banku mogli cos zmienic?
vokiel
Prawo Clarke'a stwierdza, że każda dostatecznie zaawansowana technika jest nieodróżnialna od magii.

Jednak, tak na prawdę, nie jesteśmy magikami, i przydałoby się pokazać jak pobierasz te kursy walut, lub chociaż co masz w zmiennych $matches_t, $matches_o
patryk9200
a z jakiego banku korzystasz?? może pobierać dane z NBP? bo jak tak to dam Tobie mój skrypt który pobiera dane z przeparsowanego pliku xml z strony banku;)
gosienkami
ze strony nbp
patryk9200
ok oto mój kod:
  1. <?php
  2. /**************************************************
  3.  *                   Kurs walut                   *
  4.  **************************************************/
  5. function LogError($errno, $errstr, $errfile, $errline) {
  6.    echo '<html><head><TITLE>Wystąpił błąd!</title><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=utf-8"></head>
  7.    <h3>Wystąpił błąd</h3> <font color="red">'; $waga = 0;
  8.    switch ($errno) {
  9. case E_WARNING: $waga = ' E_WARNING '; echo(' <b>Waga błędu</b> E_WARNING</b>'); break;
  10. case E_NOTICE: $waga = ' E_NOTICE '; echo(' <b>Waga błędu</b> E_NOTICE</b>'); break;
  11. case E_USER_ERROR: $waga = ' E_USER_ERROR '; echo(' <b>Waga błędu</b> E_USER_ERROR</b>'); break;
  12. case E_USER_WARNING: $waga = ' E_USER_WARNING '; echo(' <b>Waga błędu</b> E_USER_WARNING</b>'); break;
  13. case E_USER_NOTICE: $waga = ' E_USER_NOTICE '; echo(' <b>Waga błędu</b> E_USER_NOTICE</b>'); break;
  14. } echo '-> </font><br>';
  15. $errstr = str_replace( array( 'Undefined variable', 'Err' ), array( 'Niezdefiniowana zmienna', 'Error' ), $errstr );
  16. echo (' <b>Komunikat o błędzie: </b>'.$errstr.'</b><br>');
  17. echo (' <b>Plik z błędem: </b>'.$errfile.'</b><br>');
  18. echo (' <b>Wiersz z błędem: </b>'.$errline.'</b>');
  19.    $dopisz = "
  20.  
  21.    //################# ERROR ###################
  22.    Data wystąpienia błędu: ".date("d-m-Y")."
  23.    Godzina: ".date("H:i:s")."
  24.    Typ błędu: ".$waga."
  25.    Komunikat błędu: ".$errstr."
  26.    Plik w którym wystąpił błąd: ".$errfile."
  27.    Linia w której wystąpił błąd: ".$errline;
  28. $file = fopen('./error/LOG_'.date("H:i:s").'_'.date("d-m-Y").'.error', "a"); flock($file, 2); fwrite($file, $dopisz); flock($file, 3);
  29. fclose($file);
  30. }
  31. set_error_handler('LogError');
  32. function ErrorReport ($plik, $akcja, $errortype, $errorline)
  33. {
  34.    $dopisz = "  Data wystąpienia błędu: ".date("d-m-Y")."
  35.    Godzina: ".date("H:i:s")."
  36.    Typ błędu: ".$errortype."
  37.    Plik w którym wystąpił błąd: ".$plik."
  38.    Linia w której wystąpił błąd: ".$errorline;
  39.    $file = fopen('./error/'.date("H:i:s").'_'.date("d-m-Y").'.error', "a");
  40.    flock($file, 2);
  41.    fwrite($file, $dopisz);
  42.    flock($file, 3);
  43.    fclose($file);
  44.    eval ($akcja);
  45. }
  46.  
  47. $info = NULL;
  48. $link = NULL;
  49. // Początek pobierania linku do kursu walut w formacie XML...
  50. $connect = fsockopen('www.nbp.pl', 80, $errno, $errstr, 10);
  51. if (!$connect)
  52.    die(ErrorReport ('waluty.php', 'exit;', $errstr.' ('.$errno.')', '23'));
  53. else
  54. {
  55.    fwrite($connect, 'GET /kursy/kursya.html HTTP/1.1'."r\n".'Host: www.nbp.pl'."r\n".'Connection: close'."r\nr\n")
  56.    or die(ErrorReport ('waluty.php', 'exit;','Błąd przy wysyłaniu żądania:'.$errstr, '27'));
  57. }
  58. while(!feof($connect)) {
  59.    $link .= fread($connect, 4096);
  60. }
  61. fclose($connect);
  62.  
  63. $link = strstr($link, 'xml/');
  64. $link = '/kursy/'.substr($link, 0, strpos($link, '"'));
  65. // Koniec. Link w zmiennej $link.
  66.  
  67. // Pobieranie arkusza XML
  68. $connect = fsockopen('www.nbp.pl', 80, $errno, $errstr, 10);
  69. if (!$connect)
  70.    die(ErrorReport ('waluty.php', 'exit;', $errstr.' ('.$errno.')', '41'));
  71. else
  72. {
  73.    fwrite($connect, 'GET '.$link.' HTTP/1.1'."r\n".'Host: www.nbp.pl'."r\n".'Connection: close'."r\nr\n")
  74.    or die(ErrorReport ('waluty.php', 'exit;','Błąd przy wysyłaniu żądania:'.$errstr, '45'));
  75. }
  76. while (!feof ($connect)) {
  77.    $info .= fgets($connect, 4096);
  78. }
  79. $info = explode('
  80.  
  81. ', $info, 2);
  82.  
  83. $info = str_replace(array('  ' ,"r", "\n"), array('', '', ''), $info[1]);
  84.  
  85. $p = xml_parser_create();
  86. xml_parse_into_struct($p, $info, $vals, $index);
  87. xml_parser_free($p);
  88.  
  89. foreach($index['NAZWA_WALUTY'] as $value) {
  90.    $waluta[$vals[$value+2]['value']]['name'] = $vals[$value]['value'];
  91.    $waluta[$vals[$value+2]['value']]['ratio'] = $vals[$value+1]['value'];
  92.    $waluta[$vals[$value+2]['value']]['kurs'] = $vals[$value+3]['value'];
  93. }
  94. //echo $waluta['USD']['name'].' <b>(USD)</b>: <b>'.$waluta['USD']['kurs'].'</b>
  95. //<br> '.$waluta['EUR']['name'].' <B>(EUR)</B>: <B>'.$waluta['EUR']['kurs'].'</B>';
  96. $db['host'] = '****';
  97. $db['user'] = '****';
  98. $db['pass'] = '****';
  99. $db['baza'] = '****';
  100.  
  101. $link = mysql_connect($db['host'], $db['user'], $db['pass'])
  102.    or die (ErrorReport ('waluty.php', 'exit;','Nie można połączyć się z bazą danych!', '73'));
  103. mysql_select_db ($db['baza']) or die (ErrorReport ('waluty.php', 'exit;','Nie można wybrać bazy danych!', '74'));
  104. $query="UPDATE waluty SET EUR='".$waluta['EUR']['kurs']."' , USD='".$waluta['USD']['kurs']."' WHERE id='1'";
  105. mysql_query($query);
  106. if (!$query)
  107. {
  108. ErrorReport ('waluty.php', 'exit;','Zapytanie zakończone niepowodzeniem!', '82');
  109. }
  110.  
  111. ?>


tu masz skrypt który pobiera akurat kurs Euro i Dolarów ale po maluśkich modyfikacjach masz i inne waluty winksmiley.jpg
Dodatkowo masz system raportowania błędow wbudowany winksmiley.jpg może się przydać. Ja naprzykład wywołuję to codziennie z crona i aktualizuje mi to dane w bazie winksmiley.jpg
Pozdrawiam. Jak nie wiesz co jak działa to pisz;)

jak pomogłem to daj "pomógł" jeśli możesz winksmiley.jpg

jak pomogłem to daj "pomógł" jeśli możesz winksmiley.jpg
gosienkami
scrypt bezpośrednio pobierający kurs ze strony nbp ale nię wyświetla kursu
  1. <? $aktualny_kurs = nazwa_aktualnego_kursu();
  2. $tresc         = file_get_contents($aktualny_kurs);
  3.  
  4. $xml = new SimpleXMLElement($tresc);
  5. foreach ($xml->pozycja as $pozycja) {
  6.        echo '1 '.$pozycja->kod_waluty.' = ';
  7.        echo $pozycja->kurs_sredni." PLN\n";
  8. }
  9.  
  10. function nazwa_aktualnego_kursu() {
  11.  $tresc   = file_get_contents('http://www.nbp.pl/home.aspx?f=/kursy/kursyc.html');
  12. $wzorzec = '/xml/[dw]+.xml/';
  13.  $sukces  = preg_match($wzorzec, $tresc, $pasujace);
  14.  
  15.  if (empty($pasujace))
  16.    exit('Blad: Nie znaleziono tabeli kursow.');
  17.  
  18.  return 'http://nbp.pl/Kursy/'.$pasujace[0];
  19. }
  20. ?>
Wicepsik
A powiedz mi. Czy w typ pliku XML jest pozycja kurs_sredni? Bo ja widzę tylko kurs_kupna oraz kurs_sprzedazy.
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.