This article illustrates the method of implementing currency conversion in PHP. Share to everyone for your reference.
The specific implementation code is as follows:
Copy Code code as follows:
<?php
/*
* File:CurrencyConverter.php
* Author:simon Jarvis
* copyright:2005 Simon Jarvis
* date:10/12/05
* link:http://www.white-hat-web-design.co.uk/articles/php-currency-conversion.php
*
* This are free software; You can redistribute it and/or
* Modify it under the terms of the GNU general public License
* As published by the free Software Foundation; Either version 2
* of the License, or (at your option) any later version.
*
* This are distributed in the hope that it'll be useful,
* but without any WARRANTY; Without even the implied warranty of
* merchantability or FITNESS for A particular purpose. The
* GNU general public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/
Class Currencyconverter {
var $xml _file = "Www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
var $mysql _host, $mysql _user, $mysql _pass, $mysql _db, $mysql _table;
var $exchange _rates = Array ();
Load Currency Rates
function Currencyconverter ($host, $user, $pass, $db, $TB) {
$this->mysql_host = $host;
$this->mysql_user = $user;
$this->mysql_pass = $pass;
$this->mysql_db = $db;
$this->mysql_table = $TB;
$this->checklastupdated ();
$conn = mysql_connect ($this->mysql_host, $this->mysql_user, $this->mysql_pass);
$rs = mysql_select_db ($this->mysql_db, $conn);
$sql = "SELECT * from". $this->mysql_table;
$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]);
}
/* Check to "how long since the" data is last updated * * *
function checklastupdated () {
$conn = mysql_connect ($this->mysql_host, $this->mysql_user, $this->mysql_pass);
$rs = mysql_select_db ($this->mysql_db, $conn);
$sql = "Show TABLE STATUS from". $this->mysql_db. " Like ' ". $this->mysql_table." ' ";
$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, $errno, $ERRSTR, 10);
if ($fp) {
$out = "Get". $currency _file. " Http/1.1rn ";
$out. = "Host:". $currency _domain. " RN ";
$out. = "user-agent:mozilla/5.0 (Windows; U Windows NT 5.1; En-us; rv:1.8) gecko/20051111 Firefox/1.5rn ";
$out. = "Connection:closernrn";
Fwrite ($fp, $out);
while (!feof ($fp)) {
$buffer. = Fgets ($fp, 128);
}
Fclose ($FP);
$pattern = "{<cubes*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->mysql_host, $this->mysql_user, $this->mysql_pass);
$rs = mysql_select_db ($this->mysql_db, $conn);
foreach ($exchange _rate as $currency => $rate) {
if ((Is_numeric ($rate)) && ($rate!= 0)) {
$sql = "SELECT * from". $this->mysql_table. " WHERE currency= ' ". $currency." ' ";
$rs = mysql_query ($sql, $conn) or Die (Mysql_error ());
if (mysql_num_rows ($rs) > 0) {
$sql = "UPDATE". $this->mysql_table. " SET rate= ". $rate." WHERE currency= ' ". $currency." ' ";
} else {
$sql = "INSERT into". $this->mysql_table. " VALUES (' ". $currency." ', ". $rate") ";
}
$rs = mysql_query ($sql, $conn) or Die (Mysql_error ());
}
}
}
}
/* Create The Currency exchange table * *
function CreateTable () {
$conn = mysql_connect ($this->mysql_host, $this->mysql_user, $this->mysql_pass);
$rs = mysql_select_db ($this->mysql_db, $conn);
$sql = "CREATE TABLE". $this->mysql_table. " (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->mysql_table. " VALUES (' EUR ', 1) ";
$rs = mysql_query ($sql, $conn) or Die (Mysql_error ());
$this->downloadexchangerates ();
}
}
?>
The code above is copied to a new file and saved as a currencyconverter.php. When you need to convert the Include class file, called "Conversion" function. You need to enter your own MySQL database variables such as login details. The following example converts £ 2.50 pounds into US dollars (USD).
Copy Code code as follows:
<?php
Include (' currencyconverter.php ');
$x = new Currencyconverter (' Your_host ', ' your_username ', ' your_password ', ' your_database_name ', ' your_table_name ');
echo $x->convert (2.50, ' GBP ', ' USD ');
?>
I hope this article will help you with your PHP program design.