Иногда возникает необходимость хранить в файле данные о курсе валют для его последующего использование в различных скриптах (например, в валютном калькуляторе). Разумеется, данные о курсе валют должен ежедневно обновляться и в файл должны записываться новые данные.

Курс валют мы будем брать с сайта ЦБР. Данные о валютах хранятся в XML файлах, но мы будем обрабатывать их в виде простых текстовых файлов, что бы пример не показался вам слишком сложным. Прежде всего, необходимо подключить в ваш индексный файл curs.php.

Файл index.php

…
< ?php include('curs.php') ?>
…

Рассмотрим подробнее файл curs.php:

< ?php

function readDatabase($filename) {

$data = implode("",file($filename));

$cur = strip_tags($data);
$cur = str_replace(" ", "", $cur);
$cur = str_replace(",", ".", $cur);
$cur = substr($cur, 11, 7);

return $cur;
}

include("config.php");
$date = date("d/m/Y");

if ($date_cashe != $date) {

$link = "http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=".$date."&#038;date_req2=".$date."&#038;VAL_NM_RQ=";
$cur_dol = readDatabase($link."R01235");
$cur_euro = readDatabase($link."R01239");

if (($cur_dol != '') and ($cur_euro != '')) {

$f = fopen("informer/config.php", "w");
$text = "< ?php

".chr(36)."date_cashe = '".$date."';
".chr(36)."cur_dollar = '".$cur_dol."';
".chr(36)."cur_euro = '".$cur_euro."';

?>";

fwrite($f, $text);
fclose($f);

}

}

?>

Прежде всего, мы открываем файл config.php и смотрим, и считываем из него последнюю дату обновления курса валют:

< ?php

$date_cashe = '27/04/2007';
$cur_dollar = '25.7446';
$cur_euro = '34.9972';

?>

Если текущая дата больше даты обновления курса:

if ($date_cashe != $date)

производим обновления данных о курсе функцией readDatabase.

Обратите внимание, что в качестве параметров мы передаем функции код валюты (R01235, R01239), который вы спокойно можете взять с сайта http://www.cbr.ru.

Далее, мы открываем файл, удаляем из него все теги (strip_tags) и вырезаем значение курса валюты.

В данном примере отображен процесс получения данных по двум валютам: доллару и евро. В случае, если функция вернула не пустые результаты:

if (($cur_dol != '') and ($cur_euro != ''))

осуществляем запись в config.php данных о дате обновления (текущая дата) и курсе валют.
Теперь при следующем заходе пользователей на сайт в течение дня в config.php будет стоять текущая дата, и данные в этот день больше обновляться не будут (что сэкономит время загрузки страницы).



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.