22.11.2015, 17:28
|
Профессор
|
|
Регистрация: 03.11.2014
Сообщений: 263
|
|
Becass,
вот меня интересует эта строка p=$(this).find("Value").text(); что такое p?
|
|
22.11.2015, 17:34
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Becass
|
Cкрипт для расчета стоимости заказа для типографии, все расчеты идут в Евро.
|
Да хоть в тугриках, почему для этого нужно постоянно обращаться к ЦБ? Центробанк устанавливает курс валют раз в сутки, а именно по окончанию торгов на Валютной бирже, то есть в течение дня курс не меняется, и ваши запросы к нему, это пустое занятие, как и xml для клиента. Курс нужно получать задачей для планировщика задач cron, раз в сутки и сохранять в своей базе, из которой получать уже готовое. Причем сейчас получить курс можно и более удобным способом - SOAP.
Ну а насчет евро, то по законодательству нашей страны все должно быть в нашей валюте, иное, это нарушение Закона.
|
|
22.11.2015, 17:35
|
Профессор
|
|
Регистрация: 03.11.2014
Сообщений: 263
|
|
Becass,
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>
<div id="tcena">123</div>
<p id="res"></p>
<p id="res2"></p>
<script>
$(document).ready(function () {
$.ajax({
type: "GET",
async : false,
url: "cb.xml",
dataType: "xml",
success: XmlKurs
});
function XmlKurs (xml) {
$(xml).find("Valute").each(function(){
var atr ='R01239';
if(atr =='R01239') {
var price=$(this).find("Value").text().replace(/,/,'.');
console.log(price);
$("#res").append(document.getElementById('tcena').value()*price);
}
});
}
});
var Euro = new function () {
$(document).ready(function () {
$.ajax({
type: "GET",
async : false,
url: "cb.xml",
dataType: "xml",
success: XmlKurs
});
function XmlKurs (xml) {
$(xml).find("Valute").each(function(){
if($(this).attr('ID')=='R01239') {
var price=$(this).find("Value").text().replace(/,/,'.');
$("res2").append(document.getElementById('Euro').value()*price);
}
});
}
});
};
</script>
</body>
</html>
|
|
22.11.2015, 17:40
|
Интересующийся
|
|
Регистрация: 22.11.2015
Сообщений: 19
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Листовки, буклеты, флаеры, плакаты,визитки и др. листовая продукция.</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
</head>
<body>
<div id="tcena">123</div>
<p id="res"></p>
<p id="res2"></p>
<script src="http://code.jquery.com/jquery-latest.js";></script>
<SCRIPT>
$(document).ready(function () {
$.ajax({
type: "GET",
async : false,
url: "cb.xml",
dataType: "xml",
success: XmlKurs
});
function XmlKurs (xml) {
$(xml).find("Valute").each(function(){
var atr ='R01239';
if(atr =='R01239') {
var price=$(this).find("Value").text().replace(/,/,'.');
console.log(price);
$("#res").append(document.getElementById('tcena').value()*price);
}
});
}
});
function calc1() {
var Euro = new function () {
$(document).ready(function () {
$.ajax({
type: "GET",
async : false,
url: "cb.xml",
dataType: "xml",
success: XmlKurs
});
function XmlKurs (xml) {
$(xml).find("Valute").each(function(){
if($(this).attr('ID')=='R01239') {
var price=$(this).find("Value").text().replace(/,/,'.');
$("res2").append(document.getElementById('Euro').value()*price);
}
});
}
});
};
var Li = new Number(list.Li.value);
var Si = new Number(list.Si.value);
var Ti = new Number(list.Ti.value);
var Cf = new Number(list.Cf.value);
var Cb = new Number(list.Cb.value);
var F = new Number(list.F.checked);
var B = new Number(list.B.checked);
var Pf = new Number(list.Pf.checked);
var N = new Number(list.N.checked);
var V = new Number(list.V.checked);
var Lg = new Number(list.Lg.checked);
var Lm = new Number(list.Lm.checked);
if (Li.toString() == "NaN" || Li <= 0) {
alert('Введено неверное значение формата!');
list.Li.focus();
return false;
}
if (Si.toString() == "NaN" || Si <= 0) {
alert('Введено неверное значение формата!');
list.Si.focus();
return false;
}
if ( (Li < 20 || Li > 430) || (Si < 20 || Si > 430) ) {
alert('Формат задается в пределах от 20 до 430!');
return false;
}
if (Ti.toString() == "NaN" || Ti <= 0) {
alert('Введено неверное значение тиража!');
list.Ti.focus();
return false;
}
else {
Nil1 = Math.floor(438/ (Li + 1) );
Nis1 = Math.floor(306/ (Si + 1) );
Ni1 = Nil1 * Nis1;
Nil2 = Math.floor(438/ (Si + 1) );
Nis2 = Math.floor(306/ (Li + 1) );
Ni2 = Nil2*Nis2;
Ni = Math.max(Ni1,Ni2);
Na3 = Ti / Ni;
Rb = list.RbK.value.substring(0, list.RbK.value.indexOf('_'));
K = list.RbK.value.substring(list.RbK.value.indexOf('_')+1);
Phs = Math.floor(0.999+(Na3*Rb/70));
if ( Ni1 > Ni2 ) {
Prz=(6+(Nil1-1)+(Nis1-1))*0.37*Phs;
}
else {
Prz=(6+(Nil2-1)+(Nis2-1))*0.37*Phs;
}
Pbum=(0.6 * Rb * K *( Na3 + 100))/4;
if (!(Cf-Cb) && ((Li<310 && Si<=240) || (Li<=310 && Si<240) || (Si<310 && Li<=240) || (Si<=310 && Li<240))) {
Pl = 1.5*(Cf+Cb);
Ppec = 2*(Cf+Cb)+(Cf+Cb)*(10.0+0.0033*Na3);
}
else {
Pl = 3*(Cf+Cb);
Ppec = 2*(Cf+Cb)+(Cf+Cb)*(20+0.0033*Na3);
}
//alert(Ppec);
Potd = Pl + F*(0.0022*Ti+500) + B * (20 + Na3 * 0.01) + Pf * Na3 * 0.01 + V*(Na3 * 0.05)+N*(30+Ti*0.003) + Lg * Na3 * 0.25 + Lm * Na3 * 0.5 + Prz;
//Общая стоимость тиража
S = (Pbum + Ppec + Potd)*res2;
console.log(Pbum, Ppec, Potd, Euro);
S1 = S / list.Ti.value;
S = S.toString().substring(0,S.toString().indexOf(".")+3);
S1 = S1.toString().substring(0,S1.toString().indexOf(".")+3);
list.result.value = "Общая стоимость тиража = " + S + " руб.\nСтоимость 1 экземпляра = " + S1 + " руб.";
return true;
}
}
function format(dx,dy){
document.list.Si.value = dx;
document.list.Li.value = dy;
}
</SCRIPT>
Эффекта не дало, формула не получает число.
http://joxi.ru/RmzkaQJf6Nzj2O
Последний раз редактировалось Becass, 22.11.2015 в 17:47.
|
|
22.11.2015, 17:47
|
Интересующийся
|
|
Регистрация: 22.11.2015
Сообщений: 19
|
|
Сообщение от laimas
|
Да хоть в тугриках, почему для этого нужно постоянно обращаться к ЦБ? Центробанк устанавливает курс валют раз в сутки, а именно по окончанию торгов на Валютной бирже, то есть в течение дня курс не меняется, и ваши запросы к нему, это пустое занятие, как и xml для клиента. Курс нужно получать задачей для планировщика задач cron, раз в сутки и сохранять в своей базе, из которой получать уже готовое. Причем сейчас получить курс можно и более удобным способом - SOAP.
Ну а насчет евро, то по законодательству нашей страны все должно быть в нашей валюте, иное, это нарушение Закона.
|
Расчет с клиентом идет в рублях. Но закупка бумаги происходит в евро у иностранных поставщиков. И тема совсем не об этом.
Скрипт получения курса стоит на CRON, данные о валюте получает XML файл, а из него уже выводится в JS
|
|
22.11.2015, 17:51
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Becass
|
И тема совсем не об этом
|
Я об этом и пишу - вы занимаетесь, мягко говоря, херней, и вам такую же херню и далее подосовывают. Это должна быть задача для cron на 00:00 час по Москве:
$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl");
$curs = $client->GetCursOnDate(["On_date"=>date('Y-m-d', strtotime('now -1 day'))]);
$rate = new SimpleXMLElement($curs->GetCursOnDateResult->any);
$result = $rate->xpath('ValuteData/ValuteCursOnDate[VchCode="EUR"]');
//сохраняем у себя на сутки, что и возвращаем клиенту при запросах
$eur = (float)$result[0]->Vcurs/(int)$result[0]->Vnom;
И не заставляйте клиент обрабатывает ненужное.
|
|
22.11.2015, 17:57
|
Интересующийся
|
|
Регистрация: 22.11.2015
Сообщений: 19
|
|
Сообщение от laimas
|
Я об этом и пишу - вы занимаетесь, мягко говоря, херней, и вам такую же херню и далее подосовывают. Это должна быть задача для cron на 00:00 час по Москве:
$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl");
$curs = $client->GetCursOnDate(["On_date"=>date('Y-m-d', strtotime('now -1 day'))]);
$rate = new SimpleXMLElement($curs->GetCursOnDateResult->any);
$result = $rate->xpath('ValuteData/ValuteCursOnDate[VchCode="EUR"]');
//сохраняем у себя на сутки, что и возвращаем клиенту при запросах
$eur = (float)$result[0]->Vcurs/(int)$result[0]->Vnom;
И не заставляйте клиент обрабатывает ненужное.
|
У меня есть скрипт php, который получает данные с ЦБ раз в сутки
<?php
$today = date("d/m/Y");
$fp = fopen('cb.xml', 'w');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
'http://www.cbr.ru/scripts/XML_daily.asp?date_req='.$today);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
fclose($fp);
curl_close ($ch);
?>
Данные сохраняются в XML файл. И уже из XML файла мне надо получить число которое будет вставляться в формулу
$(document).ready(function () {
$.ajax({
type: "GET",
async : false,
url: "cb.xml",
dataType: "xml",
success: XmlKurs
});
function XmlKurs (xml) {
$(xml).find("Valute").each(function(){
if($(this).attr('ID')=='R01239') {
d=$(this).find("Value").text();
$("p").append(document.getElementById('Euro').value()*$(this).find("Value"));
}
});
}
});
что бы это число не менять каждый день в ручную
|
|
22.11.2015, 18:02
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Нахрена вам cURL, и нахрена вам XML, который еще вынужден получать клиент и парсить, если нужна всего одна валюта?
Я не понимаю, какой смысл пыхтеть над тем, что совсем не нужно? Ну неужто не видно сразу, что вы вместо того чтобы единожды, пусть и устаревшим способом получая курс, получить нужное, заставляете клиента заниматься этим постоянно?
|
|
22.11.2015, 18:04
|
Интересующийся
|
|
Регистрация: 22.11.2015
Сообщений: 19
|
|
Сообщение от laimas
|
Нахрена вам cURL, и нахрена вам XML, который еще вынужден получать клиент и парсить, если нужна всего одна валюта?
Я не понимаю, какой смысл пыхтеть над тем, что совсем не нужно? Ну неужто не видно сразу, что вы вместо того чтобы единожды, пусть и устаревшим способом получая курс, получить нужное, заставляете клиента заниматься этим постоянно?
|
Я запутался. Можете предложить Ваше решение в виде кода ?
|
|
22.11.2015, 18:07
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А слабо запустить код мной показанный и увидеть что возвращается курс нужной валюты? Используйте полученное значение, какая проблема? Тоже самое (коли и у вас планировщиком раз в сутки получение курса) вы могли бы получить из xml курс евро, а при запросах клиента возвращать его, или же сразу в виде переменной в подключаемый JS поместить, или...
|
|
|
|