Eszköztár
122 Kezdőlap - Webszerkesztés - PHP - Valutaváltó
ujdomainek.hu

Valutaváltó

Pénznemek és árfolyamok

Feladat

Készítsen webes valutaváltó alkalmazást, mely az aktuális középárfolyamokkal dolgozik!

Az aktuális árfolyamokat egy API segítségével szerezheti be, melyet itt ér el:
http://infojegyzet.hu/webszerkesztes/php/valuta/api/v1/arfolyam/
A fenti URL az eredményt JSON (JavaScript Object Notation - JavaScript objektum jelölés) formátumban adja vissza, mely a json_decode() függvénnyel objektummá alakítva az alábbi tartalmat jelenti:
stdClass Object
(
    [success] => 1
    [timestamp] => 1670108315
    [base] => EUR
    [date] => 2022-12-03
    [rates] => stdClass Object
        (
            [AED] => 3.871132
            [AFN] => 93.022891
            [ALL] => 116.961186
            [AMD] => 411.063635
            [ANG] => 1.886422
            [AOA] => 538.540677
            [ARS] => 177.181664
            [AUD] => 1.551243
            [AWG] => 1.886812
            [AZN] => 1.791887
            [BAM] => 1.959399
            [BBD] => 2.10817
            [BDT] => 107.957665
            [BGN] => 1.959399
            [BHD] => 0.396379
            [BIF] => 2165.421537
            [BMD] => 1.054085
            [BND] => 1.4247
            [BOB] => 7.28815
            [BRL] => 5.490334
            [BSD] => 1.054085
            [BTC] => 6.2425884E-5
            [BTN] => 85.8132
            [BWP] => 13.611581
            [BYN] => 2.651642
            [BYR] => 20660.066
            [BZD] => 2.124632
            [CAD] => 1.41999
            [CDF] => 2158.251227
            [CHF] => 0.987578
            [CLF] => 0.033751
            [CLP] => 928.961177
            [CNY] => 7.403552
            [COP] => 5017.854684
            [CRC] => 640.781361
            [CUC] => 1.054085
            [CUP] => 27.933253
            [CVE] => 110.471203
            [CZK] => 24.420398
            [DJF] => 187.575942
            [DKK] => 7.450972
            [DOP] => 57.527863
            [DZD] => 145.874155
            [EGP] => 25.886358
            [ERN] => 15.811275
            [ETB] => 56.296258
            [EUR] => 1
            [FJD] => 2.340003
            [FKP] => 0.857603
            [GBP] => 0.857496
            [GEL] => 2.846822
            [GGP] => 0.857603
            [GHS] => 14.72935
            [GIP] => 0.857603
            [GMD] => 65.571278
            [GNF] => 9070.13445
            [GTQ] => 8.264914
            [GYD] => 220.352158
            [HKD] => 8.210885
            [HNL] => 25.977118
            [HRK] => 7.565054
            [HTG] => 147.693549
            [HUF] => 410.913284
            [IDR] => 16197.946437
            [ILS] => 3.583336
            [IMP] => 0.857603
            [INR] => 85.8132
            [IQD] => 1538.986024
            [IRR] => 44624.357885
            [ISK] => 148.967082
            [JEP] => 0.857603
            [JMD] => 162.186867
            [JOD] => 0.747388
            [JPY] => 141.589445
            [KES] => 129.207563
            [KGS] => 89.0196
            [KHR] => 4331.039658
            [KMF] => 492.865414
            [KPW] => 948.578608
            [KRW] => 1373.486964
            [KWD] => 0.323279
            [KYD] => 0.864297
            [KZT] => 495.80421
            [LAK] => 18222.448914
            [LBP] => 1589.037121
            [LKR] => 388.185367
            [LRD] => 162.443165
            [LSL] => 18.395394
            [LTL] => 3.112439
            [LVL] => 0.637606
            [LYD] => 5.1223
            [MAD] => 11.138965
            [MDL] => 20.468528
            [MGA] => 4596.897582
            [MKD] => 62.078576
            [MMK] => 2213.744623
            [MNT] => 3607.695654
            [MOP] => 8.451634
            [MRO] => 376.308164
            [MUR] => 46.043202
            [MVR] => 16.231207
            [MWK] => 1079.825227
            [MXN] => 20.440132
            [MYR] => 4.628326
            [MZN] => 67.307149
            [NAD] => 18.395394
            [NGN] => 468.046743
            [NIO] => 38.436844
            [NOK] => 10.303102
            [NPR] => 137.36548
            [NZD] => 1.644926
            [OMR] => 0.405831
            [PAB] => 1.054085
            [PEN] => 4.039944
            [PGK] => 3.711564
            [PHP] => 58.79778
            [PKR] => 236.337591
            [PLN] => 4.690377
            [PYG] => 7602.380881
            [QAR] => 3.837264
            [RON] => 4.933073
            [RSD] => 117.553198
            [RUB] => 65.909475
            [RWF] => 1134.758714
            [SAR] => 3.953212
            [SBD] => 8.694174
            [SCR] => 14.538233
            [SDG] => 599.803403
            [SEK] => 10.874099
            [SGD] => 1.4247
            [SHP] => 0.857603
            [SLE] => 19.438341
            [SLL] => 19438.341175
            [SOS] => 598.862655
            [SRD] => 33.270741
            [STD] => 21817.431311
            [SVC] => 9.223634
            [SYP] => 2648.557955
            [SZL] => 18.395394
            [THB] => 36.613679
            [TJS] => 10.634181
            [TMT] => 3.693937
            [TND] => 3.383323
            [TOP] => 2.473319
            [TRY] => 19.653858
            [TTD] => 7.135567
            [TWD] => 32.253167
            [TZS] => 2460.41849
            [UAH] => 38.885738
            [UGX] => 3934.302793
            [USD] => 1.054085
            [UYU] => 41.204331
            [UZS] => 11890.240967
            [VEF] => 1184049.126259
            [VND] => 25786.177411
            [VUV] => 124.257841
            [WST] => 2.841411
            [XAF] => 657.153886
            [XAG] => 0.045524
            [XAU] => 0.000586
            [XCD] => 2.847467
            [XDR] => 0.795969
            [XOF] => 657.153886
            [XPF] => 119.54948
            [YER] => 263.901208
            [ZAR] => 18.476308
            [ZMK] => 9488.033685
            [ZMW] => 18.107127
            [ZWL] => 339.41494
        )

)
	
Ha az objektumot pl. egy $adat nevű változóba írjuk, akkor ebből a forint aktuális árfolyama a következők szerint adódik:
$adat->rates->HUF = 410.913284
Tekintsünk tehát egy rövid programot, mely csakugyan kiolvassa a forint aktuális árfolyamát:
<?
    $f = "http://infojegyzet.hu/webszerkesztes/php/valuta/api/v1/arfolyam/" ;

    $fp   = fopen( $f  , "r"  ) ;
    $json = fread( $fp , 8192 ) ;
    fclose( $fp ) ;

    $adat = json_decode( $json ) ;

    print $adat->rates->HUF ;
?>
Értelemszerűen egyéb valuták forintban számolt árfolyamát matematikai műveletekkel kaphatjuk meg. Pédául:
1 USA dollár = EUR/USD*HUF = 389.83 forint
Ezt felhasználva az Ön által készítendő valutaváltó alkalmazás az alábbi valuták között tudjon átváltást végezni:
HUF, EUR, USD, CHF, GBP, CZK, HRK, PLN, JPY, BTC.
Tervezze meg, és készítse el a programhoz tartozó webes felületet, majd valósítsa meg a párbeszédes felületet működtető programot! Ezen keresztül tegye lehetővé, hogy a felhasználó megadhasson egy összeget tetszőleges devizában, és megjelölhesse, milyen devizára szeretne váltani.

Ingyenes, vagy fizetős?

Bár a különböző devizák árfolyamai napon belül is változnak, a fenti API-t kiszolgáltató eredeti változat - az api.exchangeratesapi.io - értékei ehhez képest csak naponta egyszer frissülnek. Így az is előfordulhat, hogy az aktuális árfolyamok helyett az előző munkanapi adatokat láthatjuk benne. Ennek az az oka, hogy az API-k jelentős része előfizetés esetén érhető el korlátozás nélkül. Az ingyenes változatú API-k pénzügyi területen jellemzően csak késleltetett és korlátozott frissítésű adatokat kínálnak.

Gondolatok a megoldáshoz

A feladat megoldásához első lépésként nyilvánvalóan be kell olvasnunk az API eredményét, mint szöveges fájlt egy PHP változóba. Ezt teszi a fent bemutatott kódrészlet. Ugyanakkor a folytatás, vagyis a valutaváltás és eredménymegjelenítés már történhet szerveroldali, de akár kliensoldali programmal is - már csak azért is, mert nemcsak a PHP, hanem a JavaScript is jól támogatja a JSON adatok feldolgozását.

A PHP nyelv JSON feldolgozó (dekódoló) függvényének leírása az alábbi linken érhető el: míg a JavaScripttel megvalósítható feldolgozásról a következő sorra kattintva olvashatunk: (Természetesen az API által visszaadott tartalom feldolgozható általános célú szövegkezelő függvényekkel is, de mivel a JSON-t mindkét nyelv kiválóan támogatja, a szövegfeldolgozásos módszer nemcsak kevéssé elegáns, hanem jóval munkásabb megvalósítás is lenne.)

További feladatok

1.
Készítsen egy GIF képen grafikont, melyen egyben ábrázolja az euro és az amerikai dollár előző 30 napi árfolyam-mozgását a forinttal szemben!
Ehhez használja ki a fentebb is tárgyalt API azon lehetségét, mely szerint az alábbi példa mintájára korábbi adatok is lekérdezhetőek:
http://infojegyzet.hu/webszerkesztes/php/valuta/api/v1/arfolyam/?date=2022-11-19
2.
Készítsen saját API-t, amely a kapott bemenő adatokból megoldja az átváltást, és eredeményül az átváltott összeget szolgáltatja JSON-ben, például az alábbiak mintájára, ahol 1 bitcoint váltunk forintra.

A lekérdezésként használt URL:
http://localhost/.../api/v1/change/?amount=1&from=BTC&to=HUF
Az eredményként olvasható válasz pedig:
{"date":"2022-12-04","amount":"1","from":"BTC","to":"HUF","result":6582418.3442881}
előző oldal random oldal következő oldal


2022-12-04 00:43:46 Admin Köszönöm, ha Ön lesz az első, aki megírja ide véleményét, észrevételét, kérdését ezzel a lappal kapcsolatban.




Új hozzászólás:
E-mail cím:


Erre a címre küldjük ki a hozzászólás jóvá- hagyásához szükséges linket. Az e-mail címet sehol nem tesszük közzé.

Név:


Ez a név fog megjelenni az Ön hozzászólásai mellett.

Mennyi tizenöt + kettő?
Számjegyekkel írja be!



Ez a robotok beírása elleni védelem miatt szükséges ellenőrzés.


© infojegyzet.hu, 2019. február