bituniverse.com Foren-Übersicht bituniverse.com
Entwickler Forum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Wechselkurs mit E.C.B

 
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Code-Schnipsel
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Slava
Administrator


Anmeldedatum: 16.01.2007
Beiträge: 282
Wohnort: Köln

BeitragVerfasst am: Mi 14 Nov, 2007 11:19    Titel: Wechselkurs mit E.C.B Antworten mit Zitat

Zum Umrechnen von Geld Wechselkurs an Hand von aktuelen
European Central Bank Daten.

Php:
  1. <?php
  2. /*Class Ecb
  3. * Zum Umrechnen von Geld  Wechselkurs an Hand von aktuelen
  4. * European Central Bank Daten.
  5. * die Werte werden für eine Stunde gecacht um der Zugriff
  6. * auf E.C.B Daten sparsam zu betreiben.
  7. * @license Free for non-commercial use
  8. * @autor Slava bituniverse.com
  9. * @example See below /sieh unten
  10. **/
  11. class Ecb{
  12.  #Member
  13.  //url from xml-data ECB
  14.  private $currencie_url="http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
  15.  private $cur_array=array();
  16.  private static $cur_descript=array('EUR'=>'Euro','USD'=>'US dollar',
  17.               'JPY'=>'Japanese yen','BGN'=>'Bulgarian lev',
  18.               'CYP'=>'Cyprus pound','CZK'=>'Czech koruna',
  19.               'DKK'=>'Danish krone','EEK'=>'Estonian kroon',
  20.               'GBP'=>'Pound sterling','HUF'=>'Hungarian forint',
  21.               'LTL'=>'Lithuanian litas','LVL'=>'Latvian lats',
  22.               'MTL'=>'Maltese lira','PLN'=>'Polish zloty',
  23.               'RON'=>'New Romanian leu 2','SEK'=>'Swedish krona',
  24.               'SKK'=>'Slovak koruna','CHF'=>'Swiss franc',
  25.               'ISK'=>'Icelandic krona','NOK'=>'Norwegian krone',
  26.               'HRK'=>'Croatian kuna','RUB'=>'Russian rouble',
  27.               'TRY'=>'New Turkish lira 3','AUD'=>'Australian dollar',
  28.               'CAD'=>'Canadian dollar','CNY'=>'Chinese yuan renminbi',
  29.               'HKD'=>'Hong Kong dollar','IDR'=>'Indonesian rupiah',
  30.               'KRW'=>'South Korean won','MYR'=>'Malaysian ringgit',
  31.               'NZD'=>'New Zealand dollar','PHP'=>'Philippine peso',
  32.               'SGD'=>'Singapore dollar','THB'=>'Thai baht',
  33.               'ZAR'=>'South African rand' );
  34.    
  35.  
  36.  protected $cach_file_name= 'currency.txt';//standard in gleichem ordner.
  37.  //chach time
  38.  protected $cach_time=3600;//eine Stunde cachen.
  39.  # /Member------------------------
  40.  
  41.  
  42.  /* Construct, Konstruktor */
  43.   public function __construct()
  44.  {
  45.    $this->cach_file_name=dirname( __FILE__ ).DIRECTORY_SEPARATOR.$this->cach_file_name;
  46.    if(!file_exists($this->cach_file_name) ||
  47.       (file_exists($this->cach_file_name) && (filemtime($this->cach_file_name)+$this->cach_time)<time() ) )
  48.    {
  49.      $this->init_currencie();
  50.    }
  51.    else
  52.    {
  53.     //cach
  54.    $this->cur_array=unserialize(file_get_contents($this->cach_file_name));
  55.      
  56.    }
  57.    $this->cur_array['EUR']=1.0;
  58.  }
  59.  #end construct----------------
  60.  
  61.  #public Methods
  62.  
  63.  /** !!!!!
  64.  * function calculate 'calculate $amount from, to' ,berchnet wechselkurs.
  65.  * @param $amoung: float, Geldbetrag
  66.  * @param $curr: string, Shortcut From , Kürzel für Geld, von dem gewechselt wird.
  67.  * @param $curr_to: string, Shortcut TO, Kürzel für Geld, in das gewechselt wird.
  68.  * $curr and $curr_to use keys from $this->cur_descript
  69.  * @return float
  70.  * @example echo '10 US Dolar='.$instance_of_Ecb->calculate(10,'USD','GBP').' Pound sterling';
  71.  **/
  72.  public function calculate($amount,$curr,$curr_to)
  73.  {
  74.    return $this->getRate($curr_to)*$amount/$this->getRate($curr);
  75.  }#end calculate
  76.  
  77.  /** getDescription
  78.  * @access public, @static
  79.  * @param $val, optional use keys from $this->cur_descript, benutze keys aus $this->cur_descript
  80.  * @return float or mixed, if empty $val array(USD'=>'US dollar',....), else description on key $val.
  81.  * liefert bei eingesetzter $val eine description zu dem passendem Key in $this->cur_descript, oder der
  82.  * ganzer Inhalt von $this->cur_descript, wenn kein parameter übergeben wurde.
  83.  **/
  84.  public static function  getDescription($val=false)
  85.  {
  86.    return $val?(self::$cur_descript[$val]) : (self::$cur_descript);
  87.  }#end getDescription
  88.  
  89.  /**
  90.  * function getRate, rate currencie to EUR
  91.  * @acces public
  92.  * @param $currencie_short: string, GBR or USD ....
  93.  * @return :float
  94.  **/
  95.  public function getRate($currencie_short)
  96.  {
  97.    return isset($this->cur_array[$currencie_short])?$this->cur_array[$currencie_short]:false;
  98.  }#end getRate
  99.  
  100.  /*
  101.  * @return :array , array('USD'=>1.404,.....)
  102.  **/
  103.  public function getCurrencieAll()
  104.  {
  105.    return $this->cur_array;
  106.  }#end getCurrencieAll
  107.  
  108.   #end public Methods---------
  109.   //private Methods
  110.  private function init_currencie()
  111.  {
  112.    preg_match_all("#currency\='(.{3})'\s+rate\='([^']+)'#",file_get_contents($this->currencie_url),$array);
  113.    if(count($array>2))
  114.    {
  115.     $this->cur_array=array_combine($array[1],$array[2]);
  116.   file_put_contents($this->cach_file_name,serialize($this->cur_array));
  117.    }
  118.     else die('Bug in '.__FILE__.' Line:'.__LINE__);
  119.  }
  120.  
  121. }
  122. ############## End Ecb####################
  123.  
  124.  
  125.  
  126.  
  127. //example
  128. //require_once 'class.ecb.php';
  129. //new Instance
  130. $geld=new Ecb;
  131. echo '<html><head><title>test</title></head><body>';
  132. #simple example
  133. echo 'für 10 '.Ecb::getDescription('USD').' bekommen Sie '.
  134.      round($geld->calculate(10,'USD','GBP'),2).' '.Ecb::getDescription('GBP').'<br />';
  135.  
  136.      
  137.  
  138.  
  139. ####formular###
  140. echo '<form method="post">';
  141. //betrag
  142. echo 'Betrag: <input type="text" name="betrag" value="1.0" /><br />';
  143. //selects
  144. $sel='<select name="%s">';
  145. foreach(Ecb::getDescription() as $k=>$v)
  146. {
  147.   $sel.="<option value=\"{$k}\">{$k} : {$v}</option>";
  148. }
  149. $sel.='</select>';
  150. printf('Von:'.$sel.' In:'.$sel,'von','in');
  151. echo '<br /><input type="submit" /></form>';
  152.  
  153. if(isset($_POST['von'],$_POST['in'],$_POST['betrag']) && is_numeric($_POST['betrag']))
  154. {
  155. echo '<h2>für '.$_POST['betrag'].' '.Ecb::getDescription($_POST['von']).' bekommen Sie '.
  156.      round($geld->calculate($_POST['betrag'],$_POST['von'],$_POST['in']),2).' '.
  157.    Ecb::getDescription($_POST['in']).'</h2>';
  158. }
  159.  
  160. ###########
  161.  
  162. #teble with rate
  163. echo '<h2>Aktuele Tabelle</h2><table border="1"><tr><th>Kuerzel</th><th>Name</th><th>Euro rate</th></tr>';
  164. foreach($geld->getCurrencieAll() as $geldk=>$value)
  165. {
  166.   echo "<tr><td>{$geldk}</td><td>".Ecb::getDescription($geldk)."</td><td>{$value}</td></tr>";
  167. }
  168. echo '</table>';   
  169. echo '</body></html>';

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Code-Schnipsel Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB2.de
Powered by WebRing.