|
Текстовый информер валют на вашем сайте
Иногда возникает необходимость хранить в файле данные о курсе валют для его последующего использование в различных скриптах (например, в валютном калькуляторе). Разумеется, данные о курсе валют должен ежедневно обновляться и в файл должны записываться новые данные.
Курс валют мы будем брать с сайта ЦБР. Данные о валютах хранятся в 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."&date_req2=".$date."&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 будет стоять текущая дата, и данные в этот день больше обновляться не будут (что сэкономит время загрузки страницы).
|