Currency Converter

Menster 0 Tallied Votes 269 Views Share

Hi there peoples,
This is a currency converter, built with a combination of javascript and php, which uses an XML feed from http://www.ecb.int/ to get up to date exchange rates. I know the xml handling is not very elegant, but it is functional :) Additions/comments/corrections welcome

<?php
  $real_currency_names = array();
  $real_currency_names['EUR'] = "Euro";
  $real_currency_names['USD'] = "US Dollar";
  $real_currency_names['JPY'] = "Japanese Yen";
  $real_currency_names['BGN'] = "Bulgarian Leva"; 
  $real_currency_names['CZK'] = "Czech Koruny";
  $real_currency_names['DKK'] = "Denmark Kroner";
  $real_currency_names['EEK'] = "Estonia Krooni";
  $real_currency_names['GBP'] = "British Pound";
  $real_currency_names['HUF'] = "Hungary, Forint";
  $real_currency_names['LTL'] = "Lithuania, Litai";
  $real_currency_names['LVL'] = "Latvia, Lati";
  $real_currency_names['PLN'] = "Poland, Zlotych";
  $real_currency_names['RON'] = "Romania, New Lei";
  $real_currency_names['SEK'] = "Sweden, Kronor";
  $real_currency_names['CHF'] = "Switzerland, Francs";
  $real_currency_names['NOK'] = "Norway, Krone";
  $real_currency_names['HRK'] = "Croatia, Kuna";
  $real_currency_names['RUB'] = "Russia, Rubles";
  $real_currency_names['TRY'] = "Turkey, New Lira";
  $real_currency_names['AUD'] = "Australia, Dollars";
  $real_currency_names['BRL'] = "Brazil, Brazil Real";
  $real_currency_names['CAD'] = "Canada, Dollars";
  $real_currency_names['CNY'] = "China, Yuan Renminbi";
  $real_currency_names['HKD'] = "Hong Kong, Dollars";
  $real_currency_names['IDR'] = "Indonesia, Rupiahs";
  $real_currency_names['INR'] = "India, Rupees";
  $real_currency_names['KRW'] = "Korea (South), Won";
  $real_currency_names['MXN'] = "Mexico, Pesos";
  $real_currency_names['MYR'] = "Malaysia, Ringgits";
  $real_currency_names['NZD'] = "New Zealand, Dollars";
  $real_currency_names['PHP'] = "Philippines, Pesos";
  $real_currency_names['SGD'] = "Singapore, Dollars";
  $real_currency_names['THB'] = "Thailand, Baht";
  $real_currency_names['ZAR'] = "South Africa, Rand";

  $xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');
 
  $xmlString = $xml->asXML();
  $pos = stripos($xmlString,"<cube currency=");
  $xmlString = substr($xmlString,$pos);
  $pos2 = stripos($xmlString,"</cube>");
  $xmlString = substr($xmlString,0,$pos2);
  $arr = explode("<Cube ",$xmlString);
  
  $js_init = 'currencies["EUR"]=parseFloat(1);';
  $options = '<option value="EUR">EUR</option>';
  foreach ($arr as $value)
  {
      if (!empty($value))
      {
          $currency = substr($value,strlen('currency="'),3);    
          $curr_value = substr($value,intval(strlen('currency="')+ 11));
          $curr_value = floatval($curr_value);                         
          $js_init.= "currencies[\"$currency\"]=parseFloat($curr_value);";
          $options.= "<option value=\"$currency\">".$real_currency_names[$currency]."</option>";
      } else {
          //Do nothing
      }
  }
?>
<script type="text/javascript" language="javascript">
var currencies = new Array();
<? echo $js_init; ?>

function convert()
{
    var amount = parseFloat(document.getElementById('from').value);                                                                     
    var currFrom = document.getElementById('currencyFrom').options[document.getElementById('currencyFrom').options.selectedIndex].value;
    //Get From amount in Euros
    var amount_in_euros = parseFloat(amount/currencies[currFrom]);               
    var currTo = document.getElementById('currencyTo').options[document.getElementById('currencyTo').options.selectedIndex].value;
    //Convert to new currency
    var final_amount = parseFloat(amount_in_euros) * parseFloat(currencies[currTo]);
    document.getElementById('result').value = final_amount;
}
</script>
<table>
<tr>
    <td width="50%">Convert <input type="text" id="from" />
    <select name="currencyFrom" >
    <? echo $options; ?>
    </select>
    </td>
    <td width="50%">
    To <select name="currencyTo" >
        <? echo $options; ?>
        </select>
        <input type="text" id="result" />
    </td>
</tr>
<tr>
    <td colspan="2"><div align="center"><input type="button" value="Convert" onclick="convert()" /></div></td>
</tr>
</table>
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.