Přepočet měny podle kurzovního lístku ČNB – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přepočet měny podle kurzovního lístku ČNB – PHP – Fórum – Programujte.comPřepočet měny podle kurzovního lístku ČNB – PHP – Fórum – Programujte.com

 

itlady0
Newbie
28. 4. 2022   #1
-
0
-

Zdravím,

pokouším se vyřešit problém, jak mám přepočítat cenu v CZK na libovolnou jinou podle kurzu ČNB. Našla jsem, že by to šlo přes curl a vhodnou API, bohužel s tím nemám žádné zkušenosti.

Každopádně, jediný odkaz, který jsem našla, a který by měl vracen aktuální kurzy, je tento:

https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/denni_kurz.txt

Myslím ale že bych potřebovala nějaké API, které vrací JSON, a ne TXT jako tento.

Zatím má tento kód:

if(isset($_POST["nprepocitej"])){
        $from = $_POST["nfrom"];
        $to = $_POST["nto"];
        $amount = $_POST["namount"];
        $file = "https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/denni_kurz.txt";         
        $curl = curl_init();
     
        curl_setopt_array($curl, array(
            CURLOPT_URL => $file,
            CURLOPT_RETURNTRANSFER => 1
        ));

        $response = curl_exec($curl);
        
        curl_close($curl);
                
        echo "<pre>";print_r($response);echo"</pre>";
        

Takže přemýšlím, jak převést ten txt do JSON a pak z něj vytahat data. Chtěla bych udělat rozbalovací menu, kde bude seznam všech měn. 

<div class="mx-auto col-md-5 my-5">
            <h6>Převodník měn:</h6>
            <form method="post" class="d-flex">
                <div class="form-group mx-auto" style="width: 5rem;">
                    <input name="nfrom" type="text" class="form-control text-center" value="CZK">
                </div>
                <div class="form-group mx-auto" style="width: 8rem;">
                    <input name="namount" type="number" class="form-control text-center" placeholder="částka">
                </div>
                <div class="form-group mx-auto" style="width: 5rem;">
                    <select name="nto">
                        <option>Převeď</option>
                        <option>USD</option>
                    </select>
                </div>
                
                <!-- <input name="nto" type="text" class="form-control text-center" placeholder="USD"> -->
                <div class="form-group mx-3 px-2">
                    <input name="nprepocitej" type="submit" class="btn btn-warning" value="Přepočítej">
                </div>
            </form>
        </div>
Nahlásit jako SPAM
IP: 212.102.38.–
peter
~ Anonymní uživatel
3981 příspěvků
29. 4. 2022   #2
-
0
-

   

<?php
// php.net/file_get_contents
$url = 'https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/denni_kurz.txt';
$content = file_get_contents($url); // je to jako string
$rows = explode("\n",$content); // rozdelis to na radky, podle znaku "\n"
unset($content);
$header_date = array_shift($rows);
$header = explode("|",array_shift($rows));
$data = array();
foreach($rows as $row)
  {$row = explode("|",$row); $data[$row[3]] = $row;} // rozdelis kazdy radek podle znaku "|" na sloupce a jako klic pouzijes kod meny
unset($rows);
?>

Skolni priklad, 10 min, mozna je tam chyba, je to z hlavy. Pokud nekdo napise, ze neumi php ani vyhledavat v php dokumentaci, tak 1000 kc za kazdou zapocatou hodinu na muj ucet, dik :) Ja tvuj problem vyresil, vyres muj s nedostatkem finaci :) Nebo se na takovy pristup da nahlizet jako nezaplaceni cokolady v obchode :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:1497:90f0:ceb0:2cd3...–
peter
~ Anonymní uživatel
3981 příspěvků
29. 4. 2022   #3
-
0
-

Mimochodem, spravne mas mit kod, ktery ten soubor stahuje max 3x za den z jejich webu na tvuj a parsovat to z tveho webu. Jinak, kazde kliknuti zatezuje jejich system. Coz asi neni uplne ok.A, kdo vi, jaky format vlastne potrebujes. Mozna by ti stacilo stahnout to javascriptem.
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:1497:90f0:ceb0:2cd3...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 22 hostů

Podobná vlákna

Výběr měny — založil Ervin Coep

Přepočet rozměru videa — založil Aigor

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý