diakon
Новичок
Есть скрипт rоторый выбирает курсы валют от ЦБРФ. Если его открывать через браузер данные в БД записываются полность корректно, но я его запускаю по крону и в этот момент при обновлении данных теряются знаки после запятой. Тип поля в бд DECIMAL.
При чем в лог пишется правильное значение например: 29.4905.
Подскажите в чем может быть проблема, а то уже всю голову сломал.
Код самого скрипта:
При чем в лог пишется правильное значение например: 29.4905.
Подскажите в чем может быть проблема, а то уже всю голову сломал.
Код самого скрипта:
PHP:
$string_xml = file_get_contents('http://www.cbr.ru/scripts/XML_daily.asp?date_req='. date('d/m/Y'));
$dom = new MyDomDocument('1.0');
$dom->validateOnParse = true;
if (!$dom->loadXML( $string_xml )){
$logs .= "Не валидный XML документ\n";
} else {
$ob = new OBase( $conf['dbHost'], $conf['dbName'], $conf['dbUser'], $conf['dbPass'], $conf['SitedbName'] );
$ob->Connect();
$arItems = $ob->Select($ob->OBase .'_currency', 'id,cbrId', 'show_automat > 0');
if (!$arItems[0]['id']){
$logs .= "Нет валют для обновления\n";
} else {
foreach( $arItems as $arItem )
{
$itemNode = $dom->getElementById( $arItem['cbrId'] );
if ( !$itemNode ){
$logs .= "Элемент с ID ". $arItem['cbrId'] ." не найден\n";
} else {
$charCode = $itemNode->getElementsByTagName('CharCode')->item(0)->textContent;
$course = trim(iconv('utf-8', 'windows-1251', $itemNode->getElementsByTagName('Value')->item(0)->textContent));
$course = (float) str_replace(',', '.', $course);
if ( $course > 0 && is_float( $course )) {
$fUpdt = $ob->Update($ob->OBase .'_currency', array('course_cbr'), array($course), 'id="'. $arItem['id'] .'"');
if ( $fUpdt ) {
$logs .= $charCode .": ". $course ."\n";
} else {
$logs .= "Не обновился элемент с ID ".$arItem['cbrId'];
}
} else {
$logs .= "Значение курса не найдено ID ".$arItem['cbrId'];
}
}
}
}
}