Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вставка переменной в формулу (https://javascript.ru/forum/misc/59680-vstavka-peremennojj-v-formulu.html)

Becass 22.11.2015 18:12

Цитата:

Сообщение от laimas (Сообщение 397165)
А слабо запустить код мной показанный и увидеть что возвращается курс нужной валюты? Используйте полученное значение, какая проблема? Тоже самое (коли и у вас планировщиком раз в сутки получение курса) вы могли бы получить из xml курс евро, а при запросах клиента возвращать его, или же сразу в виде переменной в подключаемый JS поместить, или...

Выдает ошибку
Parse error: syntax error, unexpected '[', expecting ')' in Z:\home\calc\www\calc.php on line 3


Цитата:

Сообщение от laimas (Сообщение 397165)
а при запросах клиента возвращать его, или же сразу в виде переменной в подключаемый JS поместить, или...

Как раз эту переменную я и не могу в JS вывести, обозначить ее

laimas 22.11.2015 18:18

Вот на эту строку

$curs = $client->GetCursOnDate(["On_date"=>date('Y-m-d', strtotime('now -1 day'))]);

надо полагать? Причина в том, что у вас древняя версия РНР, а начиная с версии 5.4 массивы можно объявлять так же просто как и в JS, то есть не

array(...), а [...]

Замените квадратные скобки на круглые и объявите массив.

Цитата:

Сообщение от Becass
Как раз эту переменную я и не могу в JS вывести, обозначить ее

Вы ее не выводите, вы ее еще только пытаетесь получить из xml-портянки, которая совсем не нужна. Сервер уже должен возвращать готовый курс требуемой валюты.

Becass 22.11.2015 18:23

Цитата:

Сообщение от laimas (Сообщение 397167)
Вот на эту строку

$curs = $client->GetCursOnDate(["On_date"=>date('Y-m-d', strtotime('now -1 day'))]);

надо полагать? Причина в том, что у вас древняя версия РНР, а начиная с версии 5.4 массивы можно объявлять так же просто как и в JS, то есть не

array(...), а [...]

Замените квадратные скобки на круглые и объявите массив.



Вы ее не выводите, вы ее еще только пытаетесь получить из xml-портянки, которая совсем не нужна. Сервер уже должен возвращать готовый курс требуемой валюты.

На денвере тестирую.
Кароче как я понял проще забить на эту идею. Не совсем догоняю ваших рекомендаций

Becass 22.11.2015 18:33

Проблема еще актуальна, возможно кто то подскажет

laimas 22.11.2015 18:40

Денвер давно пора в помойку выбросить, он умер, есть куда более лучший локальный сервер. Более того, писать и проверять код нужно не Денвером, а под те версии ПО, которые будут использоваться на реальном сервере.

А что не понятного? Могу в виде сказки разъяснить - сказочница Арина Родионовна рассказывает серверу сказку раз в день, на ночь, и сервер знает чем оканчивается сказка. Детишки клиенты же постоянно спрашивают сервер чем сказка заканчивается, но он вместо концовки рассказывает заново всю сказку. Есть в этой сказке логика?

Вот так и у вас с получением валюты - вы заставляете клиентов опрашивающих сервер постоянно, постоянно же заниматься не нужным.

Что касается невозможности получения значения уже на клиенте по запросу, то не вникая в ваш код, надеюсь вы понимаете, что ajax запрос асинхронный, а значит и считать нужно в его контексте. Ну и самый днешово-сердитый способ, это сразу вывод всех переменных так или иначе требуемых клиентом.

Becass 22.11.2015 18:42

Спасибо за ссылочку. Сейчас поставлю, попробую запустить скрипт

Becass 22.11.2015 19:08

laimas,
Вставил код в страницу, вписал в формулу переменную, которая судя по документации ЦБ выдает курс
S = (Pbum + Ppec + Potd)*Vcurs;


Но эффект тот же, т.е не какого. Куда скрипт должен сохранять полученное число то?

laimas 22.11.2015 19:32

Знаете что такое cron? Если установили Open Server, то в нем он есть - в настройках его можно задать любую задачу выполняемую по расписанию, тоже самое делается и на сервере - хостер предлагает такую услугу, планировщик задач.
Ну думайте в конце концов. Вас же не динамика курса валют интересует, а установленный курс причем одной валюты. А кроме этого курса всегда будет то, что необходимо как значения конфигурации, и многое из них выгодно хранить не в файле конфигурации в виде переменных, а в базе, так как они могут изменяться во времени.

Значит планировщик задач получая по расписанию в ночь на следующий день курс валюты за прошедший день записывает его в базу.

Клиент запрашивает, сервер получает курс из базы возвращая его клиенту. Но если запрос клиента асинхронный, то либо расчет в контексте запроса должен быть, либо callback или promise. Если это для вас заоблачно, отдавайте клиенту переменные сразу гарантированно:

<html>
<head>
....
</head>
<body>
.....
<script>
var eur = <?=$eur?>; //$eur полученный из базы курс сохраненный планировщиком задач
</script>
</body>
<html>

Becass 22.11.2015 19:36

laimas,
т.е надо создать базу и в нее посылать курс который получает скрипт который вы написали выше?
Только мне не нужна работа с базой. Мне надо только JS

laimas 22.11.2015 19:39

Что значит сразу создавать базу? А где же у вас храниться основной контент сайта? Надо полагать в базе, если сайт динамический, а значит база уже существует, и нужно только создать таблицу в ней, которая и будет хранить в себе все конфигурационные переменные подверженные изменениям во времени или же изменяемые оперативно. В эту таблицу и должен писать курс валюты планировщик задач.

Если и с этим проблемы, пишите для начала хотя бы в файл, но разберитесь в конце концов с тем что такое курс, как его получать и использовать.


Часовой пояс GMT +3, время: 15:37.