реализовал по другому, пришлось гуглить усиленно (распарсивание конечно не мое, но подобный метод пригодился)
не хочу крон, хочу чтобы обновлялось по кнопке Доп.Действия
только две просьбы, я запутался в форматах данных и надо чтобы выполнялось только 1 раз, а программа говорит что выполнится для всех записей в таблице.
помогите с форматами при записи в таблицу
в конце кода
переменная $dollar=30.7592 (с точкой!!) - и если проверять isnumeric - выдает true
переменная $eur=40.6544 (с точкой!!) - и если проверять isnumeric - выдает true
а в базу записывается просто 30,0000 и 40,0000 (с запятыми)
дата вообще не записывается
а дату он почему-то записал как 20.12.2020, хотя должно было 20.12.2012
а следующую дату записал как 20.12.2021, а должно было 21.12.2012
запутался
Пожалуйста просветите с форматами - самое важное (и как сделать, чтобы один раз скрипт выполнялся, а не для всех записей? и чтобы предупреждения не было)
//находим максимальную дату
$sqlQuery = "SELECT max(`f1495`) AS maximumdate FROM `".DATA_TABLE."122` WHERE `status`<>'2'";
$result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR);
$row = mysql_fetch_assoc($result);
$dol=$row['maximumdate'];
//получаем сегодняшнюю дату
$todaydate=date("Y-m-d"); // 2001-03-10 (the MySQL DATETIME format)
//Разница дат в UNIX формате деленное на количество секунд в сутках -
$differencedate=(strtotime($todaydate)-strtotime($dol))/3600/24;
//цикл для пересчета даты с последней в базе до текущей
for ($i = 1; $i <= $differencedate ; $i++) {
//Определяем дату в формате, который используется на сайте cbr.ru
$sleddate=date("d.m.Y",(strtotime($dol)+($i*3600*24)));
//Определим код нашей валюты на сайте cbr.ru
//Америконский доллар
$codeusd='R01235';
$codeeur='R01239';
//Выполняем первый пункт, считываем страницу с курсами валют в переменную
$filekurs = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$sleddate);
//Разбираем страницу с помощью регулярок:
preg_match("/\<Valute ID=\"".$codeusd."\".*?\>(.*?)\<\/Valute\>/is", $filekurs, $m);
preg_match("/<Value>(.*?)<\/Value>/is", $m[1], $r);
//Запятую, отделяющую дробную часть заменяем на точку, и у нас в переменной $dollar находится курс доллара.
$dollar = str_replace(",", ".", $r[1]);
//$dollar =$r[1];
//EUR
//Разбираем страницу с помощью регулярок:
preg_match("/\<Valute ID=\"".$codeeur."\".*?\>(.*?)\<\/Valute\>/is", $filekurs, $m);
preg_match("/<Value>(.*?)<\/Value>/is", $m[1], $r);
//Запятую, отделяющую дробную часть заменяем на точку, и у нас в переменной $dollar находится курс доллара.
$eur= str_replace(",", ".", $r[1]);
//$eur=$r[1];
//вот здесь какая-то фигня с форматами
$data['Дата'] = $sleddate;
$data['EUR/USD'] = number_format($eur/$dollar, '/4');
$data['USD/RUR'] = number_format($dollar, 4, ',', ' ');
$data['EUR/RUR'] = number_format($eur, 4, ',', ' ');
insert_query($data,"Курс ЦБ");
}
Сообщение отредактировал UmaCat: 21 Декабрь 2012 - 16:08