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.
extragere curs valutar
Moderatori: coditza, Emil, Moderatori
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.
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!
-
SorinN
- PHPRomania Supporter
- Mesaje: 7
- Membru din: Lun Apr 25, 2005 8:39 am
- Localitate: Bistrita
- Contact:
curs BNR
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 = ' -';
if(($val[$i][6] - $val[$i][5]) == 0) $semn = ' ';
$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.' '.substr(abs($val[$i]['var']), 0, 5).' %';
////////// $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>
<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 = ' -';
if(($val[$i][6] - $val[$i][5]) == 0) $semn = ' ';
$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.' '.substr(abs($val[$i]['var']), 0, 5).' %';
////////// $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 ..
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...
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...
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 9 vizitatori
