Cum afisam preturi in bitcoin ?

Friday, 29 July, Year 3 d.Tr. | Author: Mircea Popescu

Pentru persoanele interesate (de exemplu pentru ca detin un magazin online, sau mai in general pentru ca ofera ceva la vinzare pe Internet), iata o bucatica de cod care va ingaduie sa oferiti preturi in BTC :

// $pret se considera a contine pretul in $.

$db_name = '';
$db_user = '';
$db_pass = '';

$nconnection = mysql_connect("localhost:3306", $db_user, $db_pass );
mysql_select_db($db_name, $nconnection);

$query = 'SELECT val, time FROM btcusd ORDER BY time DESC LIMIT 0,1';
$record=mysql_query($query);

$row = mysql_fetch_array($record, MYSQL_NUM);
$dbtime = $row[1];

$timestamp = time();

if ($dbtime + 900 < $timestamp) {

$bitcoin_json = file_get_contents('http://bitcoincharts.com/t/weighted_prices.json');
$bitcoin = json_decode($bitcoin_json,1);
$btcusd = $bitcoin["USD"];
$curs = $btcusd["24h"];

// update quotes in db

$query = 'INSERT INTO btcusd(val, time) VALUES ('.$curs.', '.$timestamp.')';
$record=mysql_query($query);

} else $curs = $row[0];

echo "Pret in BTC:",number_format($pret/$curs,2);

Codul presupune ca valoarea in dolari se gaseste in $pret, precum si ca exista o baza de date in Mysql la care se poate conecta (completati numele bazei de date, al agentului si parola in primele trei rinduri, intre ghilimele), in care baza de date exista o tabela denumita btcusd cu minim doua cimpuri, din care unul, val, de tip real si celalalt, time, de tip bigint.

Cum functioneaza ? Daca exista un pret obtinut in ultimele 15 minute in baza de date, il foloseste. Daca nu exista, se conecteaza la bitcoincharts.com de unde obtine pretul curent, il introduce in baza de date si-l foloseste pentru a calcula pretul in BTC. Puteti ajusta numarul de zecimale afisate (in principiu nimic nu va impiedica sa folositi chiar 8) modificind al doilea paramentru al functiei number_format. De asemenea puteti ajusta si modul in care e calculat cursul de schimb (in exemplul dat se foloseste cursul mediu pentru ultimele 24 de ore, dar puteti folosi cursul mediu din ultimele 7 zile inlocuind $curs = $btcusd["24h"]; cu $curs = $btcusd["7d"]; si respectiv cursul mediu din ultimele 30 de zile, $curs = $btcusd["30d"];).

Puteti evita cererile catre baza de date daca sunteti dispusi sa cereti json-ul la fiecare incarcare a paginii, dar cred ca-i o idee proasta, dat fiind ca asa o implementare va adauga in medie cam o secunda la timpul de incarcare al oricarei pagini.

Succes!

Category: Trilenciclopedia
Comments feed : RSS 2.0. Leave your own comment below, or send a trackback.

7 Responses

  1. Daca tot te pasioneaza atat de mult chestia asta si vrei sa fii un pioner in implementarea ei in romania, pune si tu de un ghid/site complet de informare a ceea ce inseamna bitcoins.
    E interesant de gasit metode alternative, mai ales cand cuceresti turna care nu vrea sa fie mainstream.

  2. Mircea Popescu`s avatar
    2
    Mircea Popescu 
    Friday, 29 July 2011

    Mei, da' daca te uiti in partea dreapta vezi asa, in ordine istorica :

    http://trilema.com/2011/din-ciudateniile-viitorului/
    http://trilema.com/2011/ce-este-bitcoin/
    http://trilema.com/2011/bitcoin-ce-este-un-miner-si-alte-consideratii/
    http://trilema.com/2011/cu-ce-m-am-ocupat/

    Nu ie bine ?

  3. E un inceput, dar incomplet. E mult de explicat sa ca ajungi sa si implementezi.
    In fine. Nu cred ca o sa faci tu ceva explicit, vreodata. Dasta avem net sa mai navigham si prin alte meleaguri.

  4. Mircea Popescu`s avatar
    4
    Mircea Popescu 
    Friday, 29 July 2011

    Nimic nu poate inlocui studiul individual.

    Chestiile serioase nici nu-si propun.

  5. citind articolul tau, mai ca-mi vine sa scot tubul de KY si sa fac un studiu individual de tot pie-u

  6. Mircea Popescu`s avatar
    6
    Mircea Popescu 
    Monday, 1 August 2011

    Pai baga mare, zic.

  1. [...] Cum afisam preturi in bitcoin ? [...]

Add your cents! »
    If this is your first comment, it will wait to be approved. This usually takes a few hours. Subsequent comments are not delayed.