Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Использовать переменные в php-скрипте


Автор: Delphist 11.12.2010, 15:31
Есть php-скрипт, который из базы делает выборку, а затем присваивает переменной:
Код

<?php
...
$html = $row["description"];
...
?>
description - поле в БД, типа varchar

Вопрос в том, что в поле description храниться не только текст, но и сами теги html, т.е. к примеру description может выглядеть так:
Для участие заполните <a href="order.php?order=$order">анкету</a>. 

Так вот ссылка отображается правильно, а вот переменной order присваивается не значение переменной $order действующего php-скрипта, а сам $order.
А нужно как если бы мы в самом скрипте написали так:
Код

$html = 'Для участие заполните &nbsp;<a href="order.php?order='.$order.'">Заказать</a>'.


Как в description нужно записать текст, чтобы бралось значение в $order 

Автор: Muerto 11.12.2010, 15:46
Первое что приходит в голову это eval

в эвал ты можешь хранить целиком к примеру 

Код

echo "whats up bro? " . $name;


И затем это хранит в базе как строку, и выводим через eval...

Автор: Delphist 11.12.2010, 16:20
Цитата(Muerto @  11.12.2010,  16:46 Найти цитируемый пост)
eval

eval, на сколько я понимаю это ф-ция и как я понимаю это аналог echo, с возможностью правильно интерпретировать параметры строки.
а мне нужно как-то правильно присвоить переменой $html.

Автор: Muerto 11.12.2010, 16:23
Delphist, а что мешает взять и сохранить в базе и переменную к примеру ? =-) там можно хоть весь скрипт хранить и через eval воспроизводить...

Автор: bars80080 11.12.2010, 19:10
Цитата(Delphist @  11.12.2010,  15:20 Найти цитируемый пост)
eval, на сколько я понимаю это ф-ция и как я понимаю это аналог echo, с возможностью правильно интерпретировать параметры строки.

нет. http://www.php.ru/manual/function.eval.html
eval - это исполнение строки текста, словно это код

то есть в данном случае это работает так:

Код

$order = 5;
$html = eval($row["description"]);
echo $html;




п.с. использование eval крайне не рекомендуется, как собственно и хранить кодовое отображение переменных в тексте, вроде $order. гораздо лучше хранить заменяемый параметр, а текст представлять в виде шаблона:

Код


$html = 'Для участие заполните &nbsp;<a href="order.php?order={ORDER}">Заказать</a>';
$html = str_replace('{ORDER}', $order, $html);

Автор: Shogun 16.12.2010, 00:34
Чтобы переменной order присваивалось значение переменной $order действующего php-скрипта нужно этот код через двойные кавычки выводить а не через одинарные, тогда остальные двойные кавычки из строки придется либо экранировать либо заменить на простые.

Как результат получится:
Код

$html = "Для участие заполните &nbsp;<a href='order.php?order=$order'>Заказать</a>";


но как bars написал, eval це зло, а самый лучший вариант в таком случае хранить заменяемый параметр.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)