Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] bład wyswietlania walut
gosienkami
post
Post #1





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


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?

Ten post edytował gosienkami 27.07.2009, 19:29:41
Go to the top of the page
+Quote Post
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


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


--------------------
Go to the top of the page
+Quote Post
patryk9200
post
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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;)
Go to the top of the page
+Quote Post
gosienkami
post
Post #4





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


ze strony nbp
Go to the top of the page
+Quote Post
patryk9200
post
Post #5





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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
Go to the top of the page
+Quote Post
gosienkami
post
Post #6





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


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. ?>
Go to the top of the page
+Quote Post
Wicepsik
post
Post #7





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


A powiedz mi. Czy w typ pliku XML jest pozycja kurs_sredni? Bo ja widzę tylko kurs_kupna oraz kurs_sprzedazy.

Ten post edytował Wicepsik 31.07.2009, 15:09:51


--------------------
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 Aktualny czas: 22.08.2025 - 05:47