Jonah Jonah - 1 month ago 17
PHP Question

Multi currency using rates from API

I'm looking for some assistance with some code. I'm trying to put this to bed as it's driving me nuts. The Psuedo code for this would be to


  1. Download the rates from the Yahoo API and declare my base rate to my foreign exchange.

  2. Store an array of currencies to choose from to compare against the base currency.

  3. I then GET the chosen currency and register it in a
    SESSION
    to be used on other pages. (I'm unsure if this is correct?)

  4. I then calculate the Price of my product which is in
    GBP
    to the selected foreign currency.

  5. Output the converted price anywhere on the page.



My script takes GET values from the URL like so:

.com?c=EUR


My code is like so..


  1. First I get the rates from the Yahoo API:

    session_start();

    $from = 'GBP';
    $to = '$c';
    $url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='. $from . $to .'=X';
    $handle = @fopen($url, 'r');

    if ($handle) {
    $result = fgets($handle, 4096);
    fclose($handle);
    }
    $allData = explode(',',$result); /* Get all the contents to an array */
    $PoundValue = $allData[1];

  2. Then I store an array of the currencies.

    $currency_array = array ('USD','EUR','RMB','JPY','AUD','CHF')

  3. Then I get the chosen currency.

    if(isset($_GET['c'])) {
    $c = $_GET['c'];

    if(array($currency_array)) {
    $_SESSION['currency_array'] = $c;
    }
    }

  4. I then calculate the product price.

    $Total = $Price * $currency_array;

    $outprice = number_format($Total, 2, '.', ',');

  5. Then I output on the page

    <?php echo .$outprice; ?>



So is all my coding logically in the right order?

Any help would be greatly appreciated.

Just as a side note. When I type in the URL ending in
.php?c=EUR


I have put a dump in there and my output is

array
0 => string '"GBP$C=X"' (length=9)
1 => string '0.00' (length=4)
2 => string '"N/A"' (length=5)
3 => string '"N/A"

' (length=7)


Why is the
$c
value not being returned as the chosen currency?

Cheers,

Jonah

Answer
$to = '$c';

should probably just be

$to = $c;

or

$to = "$c"; // redundant "make a string of this string" version.

Single quoted strings do not interpolate variable values.

Comments