Salutare la toti acesta fiind primul meu post pe forum.
In legatura cu scriptul de aici: https://marplo.net/php-mysql/curs_valutar-s.php poate cineva sa imi arate cum introduc rezultatele intr-o baza de data mysql???
curs valutar in baza de date
-
- Mesaje:2
curs valutar in baza de date
MarPlo
Mesaje:4343
Salut
Acel script nu e conceput sa adauge cursul in baza de date, pentru asta trebuie cateva adaugari in script.
Iti scriu ca idee ce trebuie, daca stii PHP-MySQL te descurci.
Intai trebuie creat un tabel in baza de date, cu 5 coloane: data, dolari, euro, lires, aur.
Apoi, unde e codul acesta:
Sa fie cam asa (vezi comentariile din cod):
Acel script nu e conceput sa adauge cursul in baza de date, pentru asta trebuie cateva adaugari in script.
Iti scriu ca idee ce trebuie, daca stii PHP-MySQL te descurci.
Intai trebuie creat un tabel in baza de date, cu 5 coloane: data, dolari, euro, lires, aur.
Apoi, unde e codul acesta:
Cod: Selectaţi tot
if (count($curs_v)>=1) {
for($i=0; $i<count($curs_v); $i++) $rezult .= '<tr><td><b>'.$curs_v[$i][0].'</b></td><td>'.$curs_v[$i][1].'</td><td>Lei</td></tr>';
}
Cod: Selectaţi tot
if (count($curs_v)>=1) {
for($i=0; $i<count($curs_v); $i++) $rezult .= '<tr><td><b>'.$curs_v[$i][0].'</b></td><td>'.$curs_v[$i][1].'</td><td>Lei</td></tr>';
// Conectare la baza de date
// Se face Select in Tabel, pt. verificare daca a fost deja adaugat cursul azi
// SELECT `data` FROM `nume_tabel` WHERE `data`=data_de_azi LIMIT 1
// Doar daca Select-ul nu returneaza vreun rezultat, se face Insert
// INSERT INTO `nume_tabel` (data, dolari, euro, lires, aur) VALUES (data_de_azi, $curs_v[0][1], $curs_v[1][1], $curs_v[2][1], $curs_v[3][1])
}
barbacot
Mesaje:2
Multumesc pentru ajutor - am reusit acum.
Ideea era asa: cei de la BNR restrictioneaza ip-ul daca accesezi de prea multe ori acel curs valutar. O solutie ar fi sa preiei cursul intr-o baza de date care sa se actualizeze o data pe zi la ora 13. Alta solutie este cum ai facut tu cu fisier cache dar aveam nevoie de integrare in baza de date pentru a pastra un history al cursului si pentru a prelua datele din curs pe care mai apoi prin intermdiul unui javascript sa le folosesc pentru calcularea real time a unor sume in diverse valute.
In legatura cu verificarea eu aveam alta idee pentru a scapa de pericolul de a fi restrctionat ip-ul la BNR: sa pun baza de date sa incarce mereu informatia de curs din fisierul tau "valutarbnr.xml" -era mai simplu pentru mine mai ales ca nu stiam clar cum sa fac verificarea expirarii datei si cautarea unui nou curs in baza de date...
Ultima chestie.
Am gasit pe net un script care ar face acelasi lucru - tirziu ca acum am reusit cu ajutorul tau sa il modific pe acesta dar nu merge..."eroare preluare fisier" - pur didactic ca sa mai invat ceva daca ai timp poti sa imi explici de ce nu merge???
Ideea era asa: cei de la BNR restrictioneaza ip-ul daca accesezi de prea multe ori acel curs valutar. O solutie ar fi sa preiei cursul intr-o baza de date care sa se actualizeze o data pe zi la ora 13. Alta solutie este cum ai facut tu cu fisier cache dar aveam nevoie de integrare in baza de date pentru a pastra un history al cursului si pentru a prelua datele din curs pe care mai apoi prin intermdiul unui javascript sa le folosesc pentru calcularea real time a unor sume in diverse valute.
In legatura cu verificarea eu aveam alta idee pentru a scapa de pericolul de a fi restrctionat ip-ul la BNR: sa pun baza de date sa incarce mereu informatia de curs din fisierul tau "valutarbnr.xml" -era mai simplu pentru mine mai ales ca nu stiam clar cum sa fac verificarea expirarii datei si cautarea unui nou curs in baza de date...
Ultima chestie.
Am gasit pe net un script care ar face acelasi lucru - tirziu ca acum am reusit cu ajutorul tau sa il modific pe acesta dar nu merge..."eroare preluare fisier" - pur didactic ca sa mai invat ceva daca ai timp poti sa imi explici de ce nu merge???
Cod: Selectaţi tot
<?php
//----------------------------------------------------------------------
// CONFIGURARE
//----------------------------------------------------------------------
#-------------------------------------
# DATABASE
#-------------------------------------
define('DATABASE_HOST', 'localhost');
define('DATABASE_USER', 'user');
define('DATABASE_PASSWORD', 'password');
define('DATABASE_NAME', 'database');
#-------------------------------------
define('FISIER_SURSA', 'http://www.bnro.ro/nbrfxrates.xml');
define('EMAIL_ERRORS', 'webmaster@example.tld');
define('SUBIECT_EMAIL_ERRORS', 'Erori preluare curs valutar');
//----------------------------------------------------------------------
// FUNCTII
//----------------------------------------------------------------------
function connect() {
mysql_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD) or die('Eroare la conectarea la baza de date');
mysql_select_db(DATABASE_NAME) or die('Eroare la selectarea bazei de date');
}
function convert_date_format($date) {
$denumire_luni = array(
'ian' => 1,
'feb' => 2,
'mar' => 3,
'apr' => 4,
'mai' => 5,
'iun' => 6,
'iul' => 7,
'aug' => 8,
'sep' => 9,
'oct' => 10,
'nov' => 11,
'dec' => 12,
);
$needle = '/([0-9]{1,2})[\s]+([a-zA-Z]+)[\s\S]+([0-9]{2,4})/i';
preg_match($needle, $date, $matches);
$day = $matches[1];
$month = $denumire_luni[$matches[2]];
$year = $matches[3];
return mktime(0, 0, 0, $month, $day, $year);
}
function preluare_curs() {
// preluare continut fisier intr-un string
$file_content = @file_get_contents(FISIER_SURSA);
// modificarea textului pentru a fi scris unitar,
// cu litere mici (in special tagurile HTML)
$file_content = strtolower($file_content);
// verificare preluare completa fisier curs valutar
if (strpos($file_content, '<html>') and strpos($file_content, '</html>')) {
//--------- aflare data ultimului curs afisat --------------------------//
$needle = '%<tr>[\s]*<th>[\s]*Valuta[\s]*/[\s]*Data</th>[\s\S]*<th>([\s\S]+)</th>[\s]*</tr>%i';
preg_match($needle, $file_content, $matches);
if (empty($matches[1])) {
$result['errors'][] = 'EROARE PRELUARE CURS - imposibilitate prelucrare date - ultima data afisata'."\n";
$result['errors_status'] = 1;
return $result;
}
else {
$data_ultimul_curs_afisat = $matches[1];
$data_ultimul_curs_afisat = convert_date_format($matches[1]);
$result['content'] .= date('d.m.Y', $data_ultimul_curs_afisat)."\n";
// verificare daca a fost afisat cursul valutar pentru ziua de astazi
if (date('d.m.Y', $data_ultimul_curs_afisat) == date('d.m.Y')) {
// extragere curs pentru fiecare valuta
$sql = "SELECT * FROM valuta WHERE valuta_status = 1";
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res)) {
$needle = '%<tr>[\s]*<th><img[^<]*</th><td>'.$row['valuta_simbol'].'</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td[^>]*>([0-9,]*)</td>[\s]*</tr>%i';
preg_match($needle, $file_content, $matches);
if (empty($matches[1])) {
// atentionare fisier corupt sau structura fisier schimbata
$result['errors'][] = 'EROARE PRELUARE CURS VALUTAR - imposibilitate prelucrare date - (verifica structura fisier BNR) '.$row['valuta_simbol']."\n";
$result['errors_status'] = 1;
}
else {
// afisare rezultat preluare
$result['content'] .= $row['valuta_simbol'].' - '.$matches[1]."\n";
// inserare in baza de date a cursului pentru fiecare valuta in parte
// tabelul 'curs' nu permite doua inregistrari cu aceeasi data pentru o valuta
// se modifica separatorul de zecimale din virgula in punct
$sql = "INSERT INTO curs SET
curs_valuta_id = '".$row['valuta_id']."',
curs_data = '".date('Y-m-d', $data_ultimul_curs_afisat)."',
curs_valoare = '".str_replace(',', '.', $matches[1])."',
curs_date_added = NOW()
";
mysql_query($sql);
}
}
}
else {
// cursul pentru ziua de astazi nu a fost inca afisat
exit();
}
}
}
else {
// fisierul nu a putut fi citit
// avertizare webmaster prin email pentru a verifica daca nu cumva a fost schimbat URL-ul fisierului
$result['errors'][] = 'EROARE PRELUARE CURS - fisier inaccesibil (de verificat daca nu s-a schimbat locatia fisierului/URL)'."\n";
$result['errors_status'] = 1;
}
return $result;
}
//-------------------------------------------------------------------
// conectare si selectia bazei de date
@connect();
// interogheaza baza sql pentru a afla daca exista inregistrari cu data de azi,
// respectiv daca a fost sau nu preluat cursul valutar
$sql = "SELECT COUNT(*) FROM curs WHERE curs_data = '".date('Y-m-d')."'";
$res = mysql_query($sql);
$data = mysql_fetch_array($res);
if ($data[0] > 0) {
// in cazul in care exista inregistrari cu data de azi inseamna ca
// datele au fost preluate cu succes
exit();
}
else {
$rezultat_preluare = preluare_curs();
$display .= $rezultat_preluare['content'];
$display .= "\n";
$display .= '---------------------------------------------------------';
$display .= "\n";
if ($rezultat_preluare['errors_status']) {
foreach ($rezultat_preluare['errors'] as $value) {
$display .= $value;
}
// trimite email erori pentru supraveghere schimbari in URL sau in structura fisierului
mail(EMAIL_ERRORS, SUBIECT_EMAIL_ERRORS, $display);
}
echo $display;
}
?>
MarPlo
Mesaje:4343
In codul pe care l-am scris in raspunsul de mai sus, datele care sunt adaugate in baza de date sunt cele preluate din fisierul .txt, deci nu se acceseaza site-ul BNR in acea parte de cod, ci se folosesc datele care mai inainte au fost citite din fisierul cache.
- Despre scriptul pe care l-ai postat, habar nu am, prea mult cod, nu stau de verificarea lui.
- Despre scriptul pe care l-ai postat, habar nu am, prea mult cod, nu stau de verificarea lui.
ggza
Mesaje:1
Domnule Marplo!MarPlo scrie: ↑Dum Iul 15, 2012In codul pe care l-am scris in raspunsul de mai sus, datele care sunt adaugate in baza de date sunt cele preluate din fisierul .txt, deci nu se acceseaza site-ul BNR in acea parte de cod, ci se folosesc datele care mai inainte au fost citite din fisierul cache.
- Despre scriptul pe care l-ai postat, habar nu am, prea mult cod, nu stau de verificarea lui.
Dupa ce stochez cursurile BNR in baza de date cum pot calcula variatia de curs fata de ziua precedenta, si cum pot afisa aceasta variatie?
Multumesc!
Si inca ceva. As vrea sa afisez multiplier-ul din tabelul xml al BNR. Cum introduc multiplier-ul in acest cod? https://marplo.net/php-mysql/curs_valutar
MarPlo
Mesaje:4343
Salut,
Acea aplicatie de curs valutar e un script vechi, facut ca proiect in studiu de invatare php, fara optiuni de modificari,
Ca sa calculeze si sa afiseze variatia de curs valutar sunt necesare prea multe modificari in acel script.
Practic ar fi o noua versiune, refacuta.
Acea aplicatie de curs valutar e un script vechi, facut ca proiect in studiu de invatare php, fara optiuni de modificari,
Ca sa calculeze si sa afiseze variatia de curs valutar sunt necesare prea multe modificari in acel script.
Practic ar fi o noua versiune, refacuta.
MarPlo
Mesaje:4343
O noua aplicatie de curs valutar plus conversii monede e la pagina:
marplo.net/php-mysql/curs_valutar_conversii
- Datele pot fi salvate in baza de date MySQL, foloseste fisiere cache, afiseaza variatia de curs fata de ziua precedenta (cu: indicator ascendent /descendent, valoare numerica si procente).
Pot fi afisate oricate valute din cele care sunt in fisierul xml de la bnr.
- La converseii se poate calcula cu sau fara TVA.
marplo.net/php-mysql/curs_valutar_conversii
- Datele pot fi salvate in baza de date MySQL, foloseste fisiere cache, afiseaza variatia de curs fata de ziua precedenta (cu: indicator ascendent /descendent, valoare numerica si procente).
Pot fi afisate oricate valute din cele care sunt in fisierul xml de la bnr.
- La converseii se poate calcula cu sau fara TVA.
Subiecte similare
- Eroare curs valutar
Scripturi de pe site Primul mesaj
Salutare, folosesc de ceva vreme scriptul pentru curs valutar, care e foarte ok.Ultimul mesaj
Recent la o validare a aparut eroarea
Uncaught SyntaxError:...
Nu e nici o problema.
Din ce am inteles, eroarea apare doar in validare, de la rularea codului care trebuie sa acceseze prin ajax un alt fisier. - Curs valutar cu 4 zecimale
Scripturi de pe site Primul mesaj
Salutare, super acest site, demult cautam asa ceva, nu stiu cum de un am dat pana acum de el. Foarte bun si util, bravo pentru ceea ce faci!Ultimul mesaj
As vrea...
Imi pare bine ca functioneaza corecct.
Varianta veche a cursului e lasata asa fiindca nimeni nu se mai arata interesat de ea.
La versiunea noua,... - Problema curs de Engleza
Sesizari Erori si Greseli Primul mesaj
Buna.Ultimul mesaj
Am descarcat cursul curs_eurocor-engleza_incepatori_1-16.rar si cand vreau sa-l dezarhivez imi da eroarea asta:
An error occures whilw...
Buna,
Poti sa descarci cursul de engleza, nivel intermediar, de la urmatoarele linkuri:
- Lectiile 1-16... - Adaugare orar zilele saptamanii in baza de date
PHP - MySQL - XML Primul mesaj
SalutUltimul mesaj
Am o baza de date cu toate locatiile
location_id | name |address |telephone | open
Si un formular prin care incarc datele in bd....
Treaba cu adaugare json in mysql e simpla, se rezuma la adaugarea unui sir care contine ghilimele duble.
Problema la tine e ca acele ghilimele sunt...