简体   繁体   中英

how fetch currency rate and update old rates in mysql database

I tired looking for solutions on how to fetch for currency exchange rate and store it in my database regular using PHP. I have managed to connect to my database but unable to update the rate.

I have Table called Stock_currency

I also have Columns called [Currency] [Spot_Rate] [Sell_Rate] [Amont] [Buy_Rate]

this is a PHP code I am trying to alter to my solution

class CurrencyConverter {


       var $xml_file = "www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
       var $localhost, $root, $root, $mohamed, $stock_currency;
       var $exchange_rates = array();

       //Load Currency Rates

       function CurrencyConverter($host,$user,$pass,$db,$tb) {

          $this->localhost = $host;
          $this->root = $user;
          $this->root = $pass;
          $this->mohamed = $db;
          $this->stock_currency = $tb;

          $this->checkLastUpdated();

          $conn = mysql_connect($this->localhost,$this->root,$this->root);

          $rs = mysql_select_db($this->mohamed,$conn);

          $sql = "SELECT * FROM ".$this->stock_currency;

          $rs =  mysql_query($sql,$conn);

          while($row = mysql_fetch_array($rs)) {

             $this->exchange_rates[$row['currency']] = $row['rate'];
          }

       }

       /* Perform the actual conversion, defaults to £1.00 GBP to USD */
       function convert($amount=1,$from="GBP",$to="USD",$decimals=2) {

          return(number_format(($amount/$this->exchange_rates[$from])*$this->exchange_rates[$to],$decimals));
       }

       /* Check to see how long since the data was last updated */
       function checkLastUpdated() {
          $conn = mysql_connect($this->localhost,$this->root,$this->root);

          $rs = mysql_select_db($this->mohamed,$conn);

          $sql = "SHOW TABLE STATUS FROM ".$this->mohamed." LIKE '".$this->stock_currency."'";

          $rs =  mysql_query($sql,$conn);

          if(mysql_num_rows($rs) == 0 ) {

             $this->createTable();
          } else {
             $row = mysql_fetch_array($rs);
             if(time() > (strtotime($row["Update_time"])+(12*60*60)) ) {

                $this->downloadExchangeRates();
             }
          }
       }

       /* Download xml file, extract exchange rates and store values in database */

       function downloadExchangeRates() {
          $currency_domain = substr($this->xml_file,0,strpos($this->xml_file,"/"));
          $currency_file = substr($this->xml_file,strpos($this->xml_file,"/"));
          $fp = @fsockopen($currency_domain, 80, $errno, $errstr, 10);
          if($fp) {

             $out = "GET ".$currency_file." HTTP/1.1\r\n";
             $out .= "Host: ".$currency_domain."\r\n";
             $out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\r\n";
             $out .= "Connection: Close\r\n\r\n";
             fwrite($fp, $out);
             while (!feof($fp)) {

                $buffer .= fgets($fp, 128);
             }
             fclose($fp);

             $pattern = "{<Cube\s*currency='(\w*)'\s*rate='([\d\.]*)'/>}is";
             preg_match_all($pattern,$buffer,$xml_rates);
             array_shift($xml_rates);

             for($i=0;$i<count($xml_rates[0]);$i++) {

                $exchange_rate[$xml_rates[0][$i]] = $xml_rates[1][$i];
             }

             $conn = mysql_connect($this->localhost,$this->root,$this->root);

             $rs = mysql_select_db($this->mohamed,$conn);

             foreach($exchange_rate as $currency=>$rate) {

                if((is_numeric($rate)) && ($rate != 0)) {

                   $sql = "SELECT * FROM ".$this->stock_currency." WHERE currency='".$currency."'";
                   $rs =  mysql_query($sql,$conn) or die(mysql_error());
                   if(mysql_num_rows($rs) > 0) {

                      $sql = "UPDATE ".$this->stock_currency." SET rate=".$rate." WHERE currency='".$currency."'";
                   } else {

                      $sql = "INSERT INTO ".$this->stock_currency." VALUES('".$currency."',".$rate.")";
                   }

                   $rs =  mysql_query($sql,$conn) or die(mysql_error());
                }

             }
          }
       }

       /* Create the currency exchange table */
       function createTable() {

          $conn = mysql_connect($this->localhost,$this->root,$this->root);

          $rs = mysql_select_db($this->mohamed,$conn);

          $sql = "CREATE TABLE ".$this->stock_currency." ( currency char(3) NOT NULL default '', rate float NOT NULL default '0', PRIMARY KEY(currency) ) ENGINE=MyISAM";

          $rs =  mysql_query($sql,$conn) or die(mysql_error());

          $sql = "INSERT INTO ".$this->stock_currency." VALUES('EUR',1)";

          $rs =  mysql_query($sql,$conn) or die(mysql_error());

          $this->downloadExchangeRates();
       }

    }

    ?> 

I have called the for conversion of 1.00 pound £

<?php
   include('CurrencyConverter');
   $x = new CurrencyConverter('localhost','root','root','mohamed','Stock_Currency');
   echo $x->convert(1.00,'GBP','USD');
?>

this is the error I receive

( ! ) Warning: include(CurrencyConverter) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in C:\wamp\www\Currency.php on line 2
Call Stack
#   Time    Memory  Function    Location
1   0.0005  672752  {main}( )   ..\Currency.php:0

I don not understand this error message also

( ! ) Warning: include() [<a href='function.include'>function.include</a>]: Failed opening 'CurrencyConverter' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\Currency.php on line 2
Call Stack
#   Time    Memory  Function    Location
1   0.0005  672752  {main}( )   ..\Currency.php:0

this tells me there is error in line 3 which I do not understand

( ! ) Fatal error: Class 'CurrencyConverter' not found in C:\wamp\www\Currency.php on line 3
Call Stack
#   Time    Memory  Function    Location
1   0.0005  672752  {main}( )   ..\Currency.php:0

The error messages are pretty straight forward: include('CurrencyConverter'); is failing because there is no file called CurrencyConverter in your C:\\wamp\\www\\ directory. Did you mean CurrencyConverter.php ?

The second error message is also complaining that CurrencyConverter does not exist. This time it is also looking for the file in PHP's extension directory, and it can't find it there.

The third error is complaining about $x = new CurrencyConverter(...) because you never loaded the CurrencyConverter class - which I'm assuming is in the missing file.

These three error messages will be remedied by including the file. Where is the PHP file that has the CurrencyConverter class? You need to put the file name in the include statement, not the class name.

PS - please don't use the mysql_* functions. They are deprecated . Use either mysqli or pdo .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM