помощь по php

12
D
На сайте с 25.07.2006
Offline
92
dfg
1440

Ребята! прошу помощи у Вас!

вообщем создал я файл с формой для заполнения квитанции с раширением html и файл php с уже готовой квитанцией, все работает, но мне нужно чтоб введенная сумма денег переконвертировалась из USD в рубли, как это можно реализовать?

Shema
На сайте с 01.12.2005
Offline
176
#1

Простой вариант:

умножать на 27 (или любую другую константу)

Сложный вариант:

брать значение с http://www.cbr.ru/scripts/XML_daily.asp и написать пару функций для обработки XML

Студия Design Coda (http://www.designcoda.ru/). Личные контакты: +7(903)1367564, skype:andrey.oshemkov, telegram:@oshemkov. WMID: 492025973671 (https://passport.webmoney.ru/asp/certview4.asp?wmid=492025973671), делаем и рекламируем сайты, мобильные приложения, ботов для Telegram.
D
На сайте с 25.07.2006
Offline
92
dfg
#2

теоритически все верно говоришь и я знаю что хочу ( в моменот открытия файла квитанции, нужно чтоб подсасывало курс с сайта ЦБ прибавляло 2% и выводилась готовая сумма к оплате) но как это зделать?

I
На сайте с 11.01.2007
Offline
16
Irh
#3

Может быть при помощи javascript?

AS
На сайте с 10.04.2006
Offline
24
#4

функция получения стоимости валюты

function currency($currency_code)

{
$scripturl = 'http://www.cbr.ru/scripts/XML_dynamic.asp';
$date_1=date('d/m/Y', time()-172800);
$date_2=date('d/m/Y');
$requrl = "{$scripturl}?date_req1={$date_1}&date_req2={$date_2}&VAL_NM_RQ={$currency_code}";
$doc = file($requrl);
$doc = implode($doc, '');
$r = array();
if(preg_match("/<ValCurs.*?>(.*?)<\/ValCurs>/is", $doc, $m))

preg_match_all("/<Record(.*?)>(.*?)<\/Record>/is", $m[1], $r, PREG_SET_ORDER);

$m = array();
$d = array();

for($i=0; $i<count($r); $i++) {
if(preg_match("/Date=\"(\d{2})\.(\d{2})\.(\d{4})\"/is", $r[$i][1],$m)) {
$dv = "{$m[1]}/{$m[2]}/{$m[3]}";
if(preg_match("/<Nominal>(.*?)<\/Nominal>.*?<Value>(.*?)<\/Value>/is", $r[$i][2], $m)) {
$m[2] = preg_replace("/,/",".",$m[2]);
$d[] = array($dv, $m[1], $m[2]);
}
}
}

$last = array_pop($d);
$prev = array_pop($d);
$date = $last[0];
$rate = sprintf("%.2f",$last[2]);

$delta = (($last[2]>$prev[2])?"+":"").sprintf("%.2f",$last[2]-$prev[2]);

$string = "{$rate}\n";
return $string;
}

код USD = R01235

код EUR = R01239

использование


echo currency('R01235');

Java script не нужен, всё просто.

Простая и быстрая регистрация в каталогах. SST: Poster (http://smileseo.ru)
D
На сайте с 25.07.2006
Offline
92
dfg
#5

спасибо! вчера вечером скрипт работал а теперь неработает! пишет что неподдерживает

Указанная кодировка не поддерживается. Ошибка при обработке ресурса ''http://www.cbr.ru/scripts/XML_dynamic.asp''. Строка ...

<?xml version="1.0" encoding="windows-1251" ?>

Николай В.
На сайте с 07.09.2006
Offline
62
#6

AntonSmile, а не проще почитать что-нибудь увлекательное про XML в PHP и не изобретать велосипед? :)

-
На сайте с 07.12.2005
Offline
97
-K-
#7

Кстати file() лучше не использовать для чтения удаленных файлов.

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция "fopen wrappers".
AS
На сайте с 10.04.2006
Offline
24
#8
Николай В.:
AntonSmile, а не проще почитать что-нибудь увлекательное про XML в PHP и не изобретать велосипед? :)

Даже нужно, я просто посчитал что для dfg этого будет достаточно для данного этапа развития его работы.

Скрипт и остальные примеры отсюда:

http://www.cbr.ru/scripts/Root.asp?Prtid=SXML

2dfg Функция отрабатывает корректно, проверил.

D
На сайте с 25.07.2006
Offline
92
dfg
#9

Ребята! спасибо за помощь которую Вы мне оказываете, возможно я чтото делал нетак, но вчера вечером дома на локальном сервере скрипт работал, сегодня на работе он неработает! может настройки сервера может еще что-нибудь....? но всеровно всем агромное спасибо, буду дальше мучиться и Вас мучить :)

-
На сайте с 07.12.2005
Offline
97
-K-
#10

Дело в настройках сервера, см 8 пост

Если хочешь использовать эту функцию, попробуй такой вариант:


function currency($currency_code)
{
$scripturl = 'http://www.cbr.ru/scripts/XML_dynamic.asp';
$date_1=date('d/m/Y', time()-172800);
$date_2=date('d/m/Y');
$requrl = "{$scripturl}?date_req1={$date_1}&date_req2={$date_2}&VAL_NM_RQ={$currency_code}";
$doc = "";
$handle = fopen($scripturl, "r");
while (!feof($handle)) {
$doc .= fread($handle, 8192);
}
fclose($handle);
$r = array();
if(preg_match("/<ValCurs.*?>(.*?)<\/ValCurs>/is", $doc, $m))

preg_match_all("/<Record(.*?)>(.*?)<\/Record>/is", $m[1], $r, PREG_SET_ORDER);

$m = array();
$d = array();

for($i=0; $i<count($r); $i++) {
if(preg_match("/Date=\"(\d{2})\.(\d{2})\.(\d{4})\"/is", $r[$i][1],$m)) {
$dv = "{$m[1]}/{$m[2]}/{$m[3]}";
if(preg_match("/<Nominal>(.*?)<\/Nominal>.*?<Value>(.*?)<\/Value>/is", $r[$i][2], $m)) {
$m[2] = preg_replace("/,/",".",$m[2]);
$d[] = array($dv, $m[1], $m[2]);
}
}
}

$last = array_pop($d);
$prev = array_pop($d);
$date = $last[0];
$rate = sprintf("%.2f",$last[2]);

$delta = (($last[2]>$prev[2])?"+":"").sprintf("%.2f",$last[2]-$prev[2]);

$string = "{$rate}\n";
return $string;
}
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий