Jump to content
  • 0

Передача переменной из PHP


SoFuWa
 Share

Question

Вот

var USD =  "<?php echo $bucks; ?>";
var EUR = "<?php echo $euro; ?>";

Переменные $bucks и $euro; существуют, выводятся нормально, JavaSrcipt тоже нормально работает если сделать так к примеру

var USD =  30.9809;
var EUR = 40.5416;

А когда приравниваю к PHP переменной через echo то не работает скрипт. Что не так делаю?

Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

вы прописываете не знакомые среде js команды: <?php...

пхп генерирует документ (не скрипт js). поэтому нужно эти строки захватить из документа, после того как он будет сгенерирован при помощи пхп.

... или передать get методом и захватить из адресной строки

если я правельно понял

Link to comment
Share on other sites

  • 0
Вот

var USD =  "<?php echo $bucks; ?>";
var EUR = "<?php echo $euro; ?>";

Переменные $bucks и $euro; существуют, выводятся нормально, JavaSrcipt тоже нормально работает если сделать так к примеру

var USD =  30.9809;
var EUR = 40.5416;

А когда приравниваю к PHP переменной через echo то не работает скрипт. Что не так делаю?

Ну а покажите код страницы когда вы вот так делаети:

var USD =  "<?php echo $bucks; ?>";
var EUR = "<?php echo $euro; ?>";

ибо сама по себе запись правильная, вы можете ее проверить через alert(EUR);

Link to comment
Share on other sites

  • 0

Где же тут запись-то правильная? Синтаксически-то она правильная, но наверняка потом с этим строковым значением пытаются производить арифметические действия. Что удивительного в том, что не срабатывает как оджидалось?

var USD =  "<?php echo $bucks; ?>";

отнюдь не равнозначно

var USD =  30.9809;

оно равнозначно такому:

var USD =  "30.9809";

Link to comment
Share on other sites

  • 0
Где же тут запись-то правильная? Синтаксически-то она правильная, но наверняка потом с этим строковым значением пытаются производить арифметические действия. Что удивительного в том, что не срабатывает как оджидалось?

А где написано что он пытается производить арифметические действия? оО

И потом ряд арифметические действий можно проделать например вычесть, вот только если попытаться сложить то JS естественно не сложит а допишет в конец строки...

Link to comment
Share on other sites

  • 0
вы прописываете не знакомые среде js команды: <?php...

пхп генерирует документ (не скрипт js). поэтому нужно эти строки захватить из документа, после того как он будет сгенерирован при помощи пхп.

... или передать get методом и захватить из адресной строки

если я правельно понял

:) :) :) :) :)

решение кто нибудь может предложить?

Link to comment
Share on other sites

  • 0

причём тут вообще среда JS это команды PHP, прочитал в одной статье что так можно сделать. А вы что не разу с такой задачей не сталкивались? Oo

Ой я последующие посты не видел почему то когда писал, наверное пока писал они так быстро появились =) Да нужно производить арифмитические действия, а как сделать то?

<?php include 'currency.php'; ?>
<script type="text/javascript">
var USD = <?php echo "$bucks"; ?>;
var EUR = <?php echo "$euro"; ?>;
var koef= 1.03;
function calculate() {

if (document.convert.valuta[0].checked) {kurs = USD;}
if (document.convert.valuta[1].checked) {kurs = EUR;}

if (document.convert.val.value != '') {

res = document.convert.val.value * kurs * koef;

res = res.toString();
dot = res.indexOf(".");
document.convert.result.value = res.substr(0,(dot+3));
}else{
document.convert.result.value = '';
}
}
</script>

дальше идёт форма, все работает, если просто цифры подставить

кажется я понял в чём дело, PHP скрипт возвращает курс валют с запятой, а скрипт работает с точкой, разделяющей целое число и дробь,

Не знаю как исправить теперь =) Просто скрипт скачал PHP который парсит курс валют, сам PHP особо не знаю =)

Link to comment
Share on other sites

  • 0

parseFloat() попробуйте

Мож и распарсит.

З.ы. Вообще в настройках пхп должна указываться локаль.

2 з.ы. У нас как бы принята точка, у буржуев запятая.

Поэтому если сделать точку, то в буржуйских системах будет косяк наверное.

Edited by hf3
Link to comment
Share on other sites

  • 0
parseFloat() попробуйте

Мож и распарсит.

З.ы. Вообще в настройках пхп должна указываться локаль.

2 з.ы. У нас как бы принята точка, у буржуев запятая.

Поэтому если сделать точку, то в буржуйских системах будет косяк наверное.

В каких системах, у меня просто калькулятор валют на сайте.

Вот так просто обрезается до зяпятой, например было 30,94, становится 30 и всё работает, конечно так не подходит =)

var USD =  parseFloat(<?php echo $bucks; ?>);
var EUR = parseFloat(<?php echo $euro; ?>);

Когда делаю вот так, то вообще функция calculate() не запускается, я хотел попробовать alert но функция вообще даже не запускается, а как только убрать эти строки или приравнят цифрам сразу запускается.

var USD =  <?php echo $bucks; ?>;
var EUR = <?php echo $euro; ?>;

Я не понимаю в чём дело, даже если взять в кавычки,

var USD =  "<?php echo $bucks; ?>";

это же должна быть строка типа "30,94" и всё равно функция даже не запускается. Т.е. если поставить алерт в самом начале функции которая запускается по клику на элемент форму, то алерт не срабатывает.

Edited by SoFuWa
Link to comment
Share on other sites

  • 0
В каких системах,

Операционных.

Если не хотите пытаться настроить ПХП, то просто разделяйте целую и дробную часть на сервере и посылайте их по отельности, а на стороне клиента собирайте вновь. Костыль - зато работать будет)

Link to comment
Share on other sites

  • 0

у меня проблема скорее не с идеями, а с реализацией, но всё равно спасибо =)

В PHP скрипте есть строчка

$curs[$i]=str_replace(",",".",$curs[$i]); // ну, просто вместо 31,45 будет 31.45

но только для варианта с БД, а у меня с файлом.

Edited by SoFuWa
Link to comment
Share on other sites

  • 0
SoFuWa, а ведь эта функция работает независимо от того, откуда берутся её аргументы :)

Хотя это тоже костыль, но вполне допустимый.

Я говорил про БД не ктому что эта функция только для БД, а к тому что там так сделано. А куда её пихать для фала в PHP скрипт не представляю.

else
{ // чтение из локального файла
$fd=fopen($table_name,"r");
while (!feof($fd)) {
$line = fgets($fd, 4096);
if (strstr($line,"|")) {
$string=explode("|",$line);
$n=$code[]=$string[0];
$sname[$n]=$string[1];
$fname[$n]=$string[2];
$qty[$n]=$string[3];
$curs[$n]=$string[4];
}
}

		else
{ // запись в файл
$fd=fopen($table_name,"w");
$line=$today."\n";
fputs($fd,$line,strlen($line));
$i=0;
while($i<sizeof($curs)) {
$line=$code[$i]."|".$sname[$i]."|".$fname[$i]."|".$qty[$i]."|".$curs[$i]."\n";
fputs($fd,$line,strlen($line));
$i++;
}
fclose ($fd);
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy