extragere curs valutar

PEAR, Smarty, ADOdb, OOP, PHP 5, XML, UML, Şabloane de proiectare, PHP-GTK.

Moderatori: coditza, Emil, Moderatori

arahne
PHPRomania Supporter
Mesaje: 11
Membru din: Joi Dec 16, 2004 11:19 pm
Localitate: Bucuresti
Contact:

Mesajde arahne » Mie Apr 06, 2005 9:58 am

Pentru ca totusi am depasit stadiul in care parsam fisiere si tinem baze de date plain text doar pentru simplul motiv ca ni se pare mai simplu termenul .txt decat .sql

Si pentru ca un webservice SOAP iti intoarce direct variabilele cu valorile de care ai nevoie, fara sa te intereseze prea tare cum face asta.

In cazul listelor pe care le-ai expus, apare totdeauna problema parsingului fisierului respectiv: daca la un moment dat formatul se schimba? Aplicatia mea care a pornit de la premisa ca acolo gasesc un fisier text cu un anumit format va crapa pur si simplu.


Good things always come in small packages.

whooper
Senior Member
Mesaje: 866
Membru din: Mar Apr 05, 2005 9:58 pm
Localitate: Toronto ON

Mesajde whooper » Mie Apr 06, 2005 7:44 pm

Asa cum fisierele respective trebuie parsate, la utilizarea serviciului de care vorbesti trebuie realizata o aplicatie client conform specificatiilor realizate ce cei care au facut aplicatia server.

Exact asa pot face cererile respective direct in URL si nu-mi mai trebuie nici o aplicatie client. Trebuie doar sa spun undeva cum anume sa se faca cererile ..

Pentru o chestie care ofera un tabel cu 17-18 date (care se schimba o data pe zi si stii ce sa astepti in rezultate) nu cred ca trebuie nici macar "Remote procedure calls", ce sa mai vorbim de SOAP. In cazul aplicatiilor cu schimburi intensive de informatie inteleg folosirea unei tehnologii care asigura flexibilitatea necesara.
Join The Forums - Time Well Wasted!

Avatar utilizator
rebelteam
PHPRomania Supporter
Mesaje: 18
Membru din: Mie Mai 11, 2005 6:22 pm
Localitate: Bucuresti
Contact:

Mesajde rebelteam » Mie Mai 11, 2005 6:40 pm


SorinN
PHPRomania Supporter
Mesaje: 7
Membru din: Lun Apr 25, 2005 8:39 am
Localitate: Bistrita
Contact:

curs BNR

Mesajde SorinN » Lun Mai 23, 2005 9:51 pm

Ai aici un cod destul de prietenos usor de customizat (css) si de implementat care extrage cursul de la BNR. Ai si 2 exemple.

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1250">
</head>
<body>
<?php
// Curs Valutar BNR
// -> (denumire, cod international, valoare in lei vechi, valoare in lei noi,
// semn crestere / scadere valoare, variatia fata de ziua precedenta - in procente).
// Autor: Nemes Ioan Sorin - soring9@bistrita.astral.ro -
// Scriptul poate fii utilizat fara permisiunea autorului.

$fila = fopen("http://www.bnro.ro/Ro/Info/curs_ext.asp","rb");
$pagina = '';
while (!feof($fila))
{
$pagina .= fread($fila, 4096);
}
fclose($fila);

$tmp_ = explode('- lei vechi -', $pagina);
$tmp_ = explode('- lei noi -', $tmp_[1]);
$semn = '<TR><TD>';
$val = strip_tags(str_replace(' class="bold"', '', $tmp_[0]), $semn);
$val = str_replace('<TR>', '', explode('</TR>', $val)); array_shift($val); array_pop($val);
for($i=0; $i < count($val); $i++)
{
$val[$i] = str_replace('</TD>', '', explode('<TD>', $val[$i]));
$n[$i] = trim($val[$i][1]);

$val[$i][5] = str_replace(' ', '.', $val[$i][5]);
$val[$i][6] = str_replace(' ', '.', $val[$i][6]);

if(($val[$i][6] - $val[$i][5]) > 0 ) $semn = '+';
if(($val[$i][6] - $val[$i][5]) < 0) $semn = '&nbsp;-';
if(($val[$i][6] - $val[$i][5]) == 0) $semn = '&nbsp;&nbsp;';

$val[$i]['cod'] = $n[$i];
$val[$i]['nume'] = $val[$i][0];
$val[$i]['val'] = $val[$i][6];
$val[$i]['var'] = ($val[$i][5] - $val[$i][6]) / $val[$i][6]*100;

$val[$i]['var'] = $semn.'&nbsp;'.substr(abs($val[$i]['var']), 0, 5).'&nbsp;%';

////////// $val[$i]['l_nou'] = Valoarea in LEI NOI.

$val[$i]['l_nou'] = str_replace('.', '', $val[$i]['val']) / 10000;
if($n[$i]=='100JPY')
{
$n[$i]='JPY'; $val[$i]['nume'] = 'Yen Japonez'; $val[$i]['cod'] = 'JPY'; $val[$i]['val'] = substr($val[$i]['val'] / 100, 0, 5); $val[$i]['l_nou']= substr($val[$i]['l_nou'] / 100, 0, 5);
}
$val[$i]['l_nou'] = substr((str_replace('.', ',', $val[$i]['l_nou'])), 0, 5);
};
/* pentru serverele PHP 4.x urmatorul loop echivaleaza functia array_combine() din PHP 5.x */
for ($k = 0, $nr = array_values($n), $vall = array_values($val), $cnt = sizeOf($nr); $k < $cnt; $k++)
$valuta[$nr[$k]] = $vall[$k]; // $valuta - variabila pentru tabele personalizate.
/* daca exista server PHP 5.x in locul expresiei de mai sus se poate folosi $valuta = array_combine($n, $val);
---------- EXEMPLE :
1. Personalizat - Valutele se pot plasa in orice ordine
- $valuta['USD']['val'] = valoarea valutei pentru ziua in curs.
- $valuta['USD']['cod'] = codul International al valutei.
- $valuta['USD']['nume']= numele valutei.
- $valuta['USD']['var']= variatia valutei fata de ziua precedenta - (diferenta in procente)
*/
echo '<table border="1" cellspacing="0" cellpadding="4">';
echo '<tr bgcolor="#E3E8F2"><td>Denumire Valuta</td><td> Cod Valuta </td><td>Valoare - Lei Vechi</td><td>Valoare - Lei Noi</td><td>Variatia fata de ziua precedenta</td></tr>';
echo '<tr><td>'.$valuta['JPY']['nume'].'</td><td>'.$valuta['JPY']['cod'].'</td><td>'.$valuta['JPY']['val'].'</td><td>'.$valuta['JPY']['l_nou'].'</td><td>'.$valuta['JPY']['var'].'</td></tr>';
echo '<tr><td>'.$valuta['EUR']['nume'].'</td><td>'.$valuta['EUR']['cod'].'</td><td>'.$valuta['EUR']['val'].'</td><td>'.$valuta['EUR']['l_nou'].'</td><td>'.$valuta['EUR']['var'].'</td></tr>';
echo '</table>';
/*
2. Simplu - Toate Valutele afisate in pagina BNR afisate in ordinea din pagina de referinta.
*/
echo '<table border="1" cellspacing="0" cellpadding="4">';
echo '<tr bgcolor="#E3E8F2"><td>Denumire </td><td> COD </td><td>Lei Vechi</td><td>Lei Noi</td><td>Variatia</td></tr>';
for($i=0; $i<count($val); $i++)
{
echo '<tr><td>'.$val[$i]['nume'].'</td><td>'.$val[$i]['cod'].'</td><td>'.$val[$i]['val'].'</td><td>'.$val[$i]['l_nou'].'</td><td>'.$val[$i]['var'].'</td></tr>';
}
echo '</table>';
?>
</body>
</html>
frumosul si chestia ..

jay
PHPRomania Supporter
Mesaje: 11
Membru din: Mar Mai 24, 2005 11:55 pm

Mesajde jay » Mie Mai 25, 2005 1:38 am

am si eu o intrebare... daca stii pagina de unde sa iei cursu nu e mare lucru sa faci un script pentru valutele alea... dar e legal sa folosesc eu pe siteul meu chestia asta? siteul de exemplu este unul prin care fac bani vanzand reclama....

si mai am o intrebare ... de hosting mai mult... cum e mai bine pentru server... sa solicit mereu informatia de la bnr (sau din alta parte) prelucrand-o intr-un script sau sa o scriu in baza de date (1 data pe zi- printr-un cron ma gandesc) si sa prelucrez datele din BD de la mine de pe server...

merci mult si scuze daca intrebarile nu sunt de nivelul avansat...

Avatar utilizator
Tudy
Senior Member
Mesaje: 506
Membru din: Mie Sep 22, 2004 7:00 pm
Localitate: Cluj-Napoca

Mesajde Tudy » Sâm Iun 11, 2005 8:59 am

Imi da si mie cineva, va rog, un scriptulet pentru curs valutar, dar numai cu euro si dolari, si mai simplut decat cel de sus.

Multumesc,

johnny
Senior Member
Mesaje: 904
Membru din: Sâm Iul 31, 2004 12:22 pm
Localitate: Bucuresti
Contact:

Mesajde johnny » Sâm Iun 11, 2005 4:46 pm



Înapoi la “PHP Avansat”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 9 vizitatori