Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.12.2011, 18:04
Motorvideo вне форума Посмотреть профиль Отправить личное сообщение для Motorvideo Найти все сообщения от Motorvideo
  № 1  
Ответить с цитированием
Motorvideo

Регистрация: Dec 2011
Сообщений: 6
По умолчанию Не работает информер курсора валют Flash+PHP

Здравствуйте.
У меня есть информер курсов валют, который показывает актуальный курс доллара и евро по данным центробанка и его изменение относительно предыдущих котировок. Я думаю php скрипт не работает. Он не показывает курсы валют, если его запустить отдельно и попросить вывести их в браузер. В приведенном примере этот вывод на экран не описан.

Как информер должен работать:
Файл информера загружает данные о валютных котировках из php файла, лежащего рядом,
который в свою очередь получает данные с сайта Центробанка и преобразует их в строку xml. Внутри файла информера данные отображаются через динамические текстовые поля. Я

Вот код php файла:
PHP код:
<?

// Устанавливаем сегодняшную и вчерашную дату
$date1date("d/m/Y");
$date2date("d/m/Y",time()-86400);

// Запрашиваем список курсов валют за два дня
$cont1 file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date1);
$cont2 file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date2);

// Составляем шаблон для считывания в массив $marches1
$pattern "/<CharCode>(.*?)<\/CharCode>\s*<Nominal>(.*)<\/Nominal>\s*<Name>(.*)<\/Name>\s*<Value>(.*)<\/Value>/im";
 
// Формируем массив по шаблону $pattern
$cnt1 =  preg_match_all($pattern,$cont1,$matches1);

if(
$cnt1 != FALSE)
{

// Записываем сегодняшний курс доллара в переменную $bucks1. Он пятый сверху.       
$bucks1 $matches1[4][4];
echo 
"&bucks1=".$bucks1;
     
// Записываем сегодняшний курс евро в переменную $euro1. Он шестой сверху.   
$euro1 $matches1[4][5];
echo 
"&euro1=".$euro1;



$cnt2 =  preg_match_all($pattern,$cont2,$matches2);

if(
$cnt2 != FALSE)
{

// Записываем вчерашний курс доллара в переменную $bucks2         
$euro2 $matches2[4][5];
echo 
"&euro2=".$euro2;

// Записываем вчерашний курс евро в переменную $euro2     
$bucks2 $matches2[4][4];
echo 
"&bucks2=".$bucks2;



?>
Вот код ActionScript в информере:
Код AS1/AS2:
System.useCodepage = true;
kurs = new LoadVars();
 
kurs.load('valuta.php');
kurs.onLoad = function(ok){
	if(ok){
		setKurs();
	}
}
function setKurs(){
	bucks=kurs.bucks1
	euro=kurs.euro1
	euro_otn=Number(kurs.euro1.substr(0,2)+"."+kurs.euro1.substr(3,4))-Number(kurs.euro2.substr(0,2)+"."+kurs.euro2.substr(3,4));
	bucks_otn=Number(kurs.bucks1.substr(0,2)+"."+kurs.bucks1.substr(3,4))-Number(kurs.bucks2.substr(0,2)+"."+kurs.bucks2.substr(3,4));
 
	if(bucks_otn<0){usd_stat.attachMovie('down','usd',1)}
	if(bucks_otn>0){usd_stat.attachMovie('up','usd',1)}
	if(bucks_otn==0){usd_stat.attachMovie('no','usd',1)}
	if(euro_otn<0){eur_stat.attachMovie('down','eur',1)}
	if(euro_otn>0){eur_stat.attachMovie('up','eur',1)}
	if(euro_otn==0){eur_stat.attachMovie('no','eur',1)}
}
Динамические поля имеют ссылки на переменные:
_root.euro
_root.bucks

Ну понятно в информере есть еще экземпляры символов, которые показывают изменения курса. Они в виде стрелок. Их имена:
usd_stat
eur_stat.

Оба файла лежат на сервере, но информер не работает.
Прошу помочь.

Добавлено через 46 часов 50 минут
Прилагаю другой php скрипт и прежний код AS2. Это не парсер странички Центробанка. Используется спепциальный класс для работы с WEB сервисом Центробанка. Назвали его ExchangeRatesCBRF.
Вот ссылка на страничку разработчиков класса.

Теперь прилагаю php скрипт.
PHP код:
$date1date("Y-m-d");
$date2date("Y-m-d",time()-86400);

$e1 = new ExchangeRatesCBRF($date1);
$e2 = new ExchangeRatesCBRF($date2);
$b1 = new ExchangeRatesCBRF($date1);
$b2 = new ExchangeRatesCBRF($date2);

$euro1 $e1->GetRate('EUR');
$euro2 $e2->GetRate('EUR');
$bucks1 $b1->GetRate('USD');
$bucks2 $b2->GetRate('USD');

echo 
$euro1."<br>";
echo 
$euro2."<br>";
echo 
$bucks1."<br>";
echo 
$bucks2."<br>";


class 
ExchangeRatesCBRF
{
    var 
$rates;
    function 
__construct($date null)
    
// В PHP версии ниже 5 это метод объекта следует переименовать в ExchangeRatesCBRF
    
{
        
$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); 
        if (!isset(
$date)) $date date("Y-m-d"); 
        
$curs $client->GetCursOnDate(array("On_date" => $date));
        
$this->rates = new SimpleXMLElement($curs->GetCursOnDateResult->any);
    }
    
    function 
GetRate ($code)
    {
    
//Этот метод получает в качестве параметра цифровой или буквенный код валюты и возвращает ее курс
        
$code1 = (int)$code;
        if (
$code1!=0
        {
            
$result $this->rates->xpath('ValuteData/ValuteCursOnDate/Vcode[.='.$code.']/parent::*');
        }
        else
        {
            
$result $this->rates->xpath('ValuteData/ValuteCursOnDate/VchCode[.="'.$code.'"]/parent::*');
        }
        if (!
$result)
        {
            return 
false
        }
        else 
        {
            
$vc = (float)$result[0]->Vcurs;
            
$vn = (int)$result[0]->Vnom;
            return (
$vc/$vn);
        }

    }
}

?> 
Вот по прежнему код AS, который должен подхватывать значения переменных $euro1, $bucks1, $euro2, $bucks2 и использовал по своему.
Код AS1/AS2:
System.useCodepage = true;
kurs = new LoadVars();
 
kurs.load('valuta.php');
kurs.onLoad = function(ok){
	if(ok){
		setKurs();
	}
}
function setKurs(){
	bucks=kurs.bucks1
	euro=kurs.euro1
	euro_otn=Number(kurs.euro1.substr(0,2)+"."+kurs.euro1.substr(3,4))-Number(kurs.euro2.substr(0,2)+"."+kurs.euro2.substr(3,4));
	bucks_otn=Number(kurs.bucks1.substr(0,2)+"."+kurs.bucks1.substr(3,4))-Number(kurs.bucks2.substr(0,2)+"."+kurs.bucks2.substr(3,4));
 
	if(bucks_otn<0){usd_stat.attachMovie('down','usd',1)}
	if(bucks_otn>0){usd_stat.attachMovie('up','usd',1)}
	if(bucks_otn==0){usd_stat.attachMovie('no','usd',1)}
	if(euro_otn<0){eur_stat.attachMovie('down','eur',1)}
	if(euro_otn>0){eur_stat.attachMovie('up','eur',1)}
	if(euro_otn==0){eur_stat.attachMovie('no','eur',1)}


Последний раз редактировалось Motorvideo; 06.12.2011 в 11:14.
Создать новую тему Ответ Часовой пояс GMT +4, время: 22:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:42.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.