2013-01-02 91 views
0

我正試圖將1磅兌換爲其他貨幣,此刻我將歐元兌換爲其他貨幣。例如1歐元= 0.81400英鎊,我可以通過除以1.228501228501229的匯率除以1歐元兌換歐元。正確的貨幣匯率更新表

我想要所有的貨幣,目前我使用php腳本來獲取匯率。我怎樣才能改變我的Stock_currency表和分GBP所有貨幣和回存儲到Stock_currency表

這裏是我的PHPscript

<?php 
class CurrencyConverter { 

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

    //Load Currency Rates 

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

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

     $this->checkLastUpdated(); 

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

     $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="USD",$to="GBP",$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->sirnur,$this->abc123); 

     $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->sirnur,$this->abc123); 

     $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->sirnur,$this->abc123); 

     $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(); 
    } 

} 

包含文件

<?php 
    include('CurrencyConverter.php'); 
    $x = new CurrencyConverter('localhost','root','root','mohamed','Stock_Currency'); 

// mysql_query("ALTER TABLE Stock_currency add column We_sell varchar (20) ; ") or die(mysql_error()); 
// mysql_query("ALTER TABLE Stock_currency add column We_buy varchar (20) ; ") or die(mysql_error()); 


    ?> 
+0

你正在使用的'mysql_ *'函數已被deprec ated。請使用['mysqli'](http://php.net/manual/en/book.mysqli.php)或['PDO'](http://php.net/manual/en/book.pdo.php )。 –

+0

此外,請參閱此處:** [爲什麼不應該在PHP中使用mysql_ *函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) **。 –

+0

謝謝你非常有用的信息 –

回答

0

SQL查詢做你想做的事情就像這樣:

select c.ccy, c.rate/EuroGBP.rate as GBPExchangeRate 
from Currency c cross join 
    (select rate from Currency c where c.ccy = 'GPB') EuroGBP