|
|
|
| есть код, который хранится в бд, для примера, "Привет. Как дела?". и есть еще одна таблица, где хранятся, для примера, имена.
Как сделать чтобы на экран вывелось "Привет, Саша. Как дела?" ? | |
|
|
|
|
|
|
|
для: P@Sol
(22.08.2005 в 11:06)
| | Чего-то не очень понятно, по какому принципу следует определять место для помещения в строку значения "Саша". | |
|
|
|
|
|
|
|
для: cheops
(22.08.2005 в 13:08)
| | вот в этом и вопрос....можно, например,так "Привет, %name. Как дела?"
или %name%, или #name, я не знаю как правильно... | |
|
|
|
|
|
|
|
для: P@Sol
(22.08.2005 в 13:37)
| | Да можно любой тег ввести, который не встречается в нормальной жизни. А потом просто прогнать через str_replace() | |
|
|
|
|
|
|
|
для: Loki
(22.08.2005 в 16:16)
| | т.е. сначало достаю два запроса, а потом заменяю свой тег на нужное начение...гениально:) | |
|
|
|
|
|
|
|
для: P@Sol
(22.08.2005 в 11:06)
| | а вот еще вопрос...как вставить переменную?
$name = $row['Subdivision_name'];
eval("echo $row['Header']"); //20 строка
|
в $row['Header']:
<html>
<head>
<title>".$name."</title>
</head>
|
делаю так, но ошибка
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in x:\home\localhost\www\myphp\site\index.php on line 20
|
Добавлено
сделал так:
$name = $row['Subdivision_name'];
$text = $row["Header"];
eval("echo '$text';");
|
но все что было написано \"так\" - отображается "так",т.е.
<img src=\"/myphp/site/pic/pic15.gif\"> а выводит путь http://localhost/"/myphp/site/pic/pic15.gif/"
почему? | |
|
|
|
|
|
|
|
для: P@Sol
(22.08.2005 в 17:17)
| | А что если вот так:
eval("echo {$row['Header']}"); //20 строка
|
или вот так:
eval("echo ".$row['Header']); //20 строка
|
| |
|
|
|
|
|
|
|
для: Loki
(22.08.2005 в 17:28)
| | тогда такая ошибка
Parse error: parse error, unexpected '<', expecting ',' or ';' in x:\home\localhost\www\myphp\site\index.php(20) : eval()'d code on line 1
|
//не понимает что перед ним html текст | |
|
|
|
|
|
|
|
для: P@Sol
(22.08.2005 в 17:31)
| | Посмотрите текст перед 20 строкой, а лучше запостите его сюда - наверняка проблема там, либо скобка, либо кавычка, либо точка с запятой пропущены. | |
|
|
|
|
|
|
|
для: cheops
(22.08.2005 в 20:41)
| | Вы ошиблись...ошибка выше говорит, что то то не понимает в функции eval, а туда передается
<html> //1 строка, как раз тут ошибка
<head>
<title>".$name."</title>
</head>
|
в сообщении выше указана 20 и 19 строки
$name = $row['Subdivision_name'];
eval("echo $row['Header']"); //20 строка
|
| |
|
|
|
|
|
|
|
для: P@Sol
(23.08.2005 в 09:17)
| | А да, действительно eval в сообщении об ошибке не заметил. Дело в том, что в двойных кавычках переменные интерпретируются http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=130, поэтому функции eval() по сути передаётся строка "echo ". Для того, чтобы предотвратить интерпретацию, следует либо поместить код в одинарные кавычки, либо экранировать $
<?php
$name = $row['Subdivision_name'];
eval("echo \$row['Header']"); //20 строка
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 12:54)
| | спасибо
но теперь вот, что:
но все что было написано \"так\" - отображается "так",т.е.
<img src=\"/myphp/site/pic/pic15.gif\"> а выводит путь http://localhost/"/myphp/site/pic/pic15.gif/"
почему?
но по стандарту же надо указывать <img src="/myphp/site/pic/pic15.gif"> | |
|
|
|
|
|
|
|
для: P@Sol
(23.08.2005 в 13:30)
| | Чего-то не очень понятно... ну дав всё, что экранируется отображается как есть... | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 14:30)
| | мне теперь тоже ничего не понятно:(
1. $name так и пишется $name, вместо нужного $row['Subdivision_name']
2. как я понял eval() формирует php-код, в php коде внутри строки, чтобы разместить "кавычки" нужно их экранировать...
написав этот код,
$name = $row['Subdivision_name'];
eval("echo $row['Header']");
|
я пытаюсь получить код
$name = $row['Subdivision_name'];
echo "<html><head><title>".$name."</title></head><body><img src=\"pic/pic.gif\"></body></html>"
|
но получаю, что-то другое:(
т.е. должно быть
<html><head><title>Главная</title></head><body><img src="pic/pic.gif"></body></html>
|
а получается
<html><head><title>".$name."</title></head><body>><img src=\"pic/pic.gif\"></body></html>
|
| |
|
|
|
|
|
|
|
для: P@Sol
(23.08.2005 в 15:01)
| | Не понимаю вот этот код
<?php
$name = $row['Subdivision_name'];
eval("echo $row['Header']");
?>
|
Как связаны первая и вторая строка? | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 15:28)
| | $row['Subdivision_name']
из бд:
$row['Header']
в бд хранится следующий код:
<html><head><title>".$name."</title></head><body><img src=\"pic/pic.gif\"></body></html>
|
p.s. вверху же написано:( | |
|
|
|
|
|
|
|
для: P@Sol
(23.08.2005 в 15:45)
| | Нет скорее всего не получится, лучше вводите вместо $name шаблоны %%name%% и заменяйте по ним. Вообще я бы рекомендовал использовать eval в исключительных случаях - так как это здорово усложняет код и приводит к трудноулавливаемым ошибкам. | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 16:07)
| | жалко:(...ладно попробую | |
|
|
|
|
|
|
|
для: P@Sol
(22.08.2005 в 11:06)
| | значит так...в панели администрирования можно создавать поля в таблице, а еще можно в шаблоне вставлять, например, для поля css - %%css%%..а как можно заменить %%css%% на содержимое поля css без правки кода...т.е. нужно написать код, которые будет делать замену %%такой переменной%% на сожержание "такого поля"...прошу подсказки, готовый код пока не нужно... | |
|
|
|
|
|
|
|
для: P@Sol
(24.08.2005 в 15:37)
| | Это можно осуществить при помощи стандартной функции замены str_replace
<?php
$text = str_replace("%%такой переменной%%", "такого поля", $text);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.08.2005 в 19:12)
| | я так и делаю...я не знал
1. как узнать кол-во столбцов //узнал
2. как узнать имя поля //думаю | |
|
|
|
|
|
|
|
для: cheops
(24.08.2005 в 19:12)
| | получилась такая штука:
<?
$sql2 = "Select * from pcontent".$class_id." where Subdivision_id = ".$subdivision_id."
and Checked = 1 order by ".$row["Sort_by"]." limit 0 , 5" ;
$result2 = mysql_query($sql2);
$num2 = mysql_num_rows($result2);
$col2 = mysql_num_fields($result2);
//Узнаем заголовки
$q="show fields from pcontent".$class_id;
$res=mysql_query($q);
while ($name=mysql_fetch_row($res)) $arr_name[]=$name[0];
if ($num2 > 0)
{
for ($k=0; $k < $num2; $k++)
{
$text_c = $row["Record_template"];
$row2 = mysql_fetch_array($result2);
for ($c=4; $c < $col2; $c++)
{
$text_c = str_replace("%%$arr_name[$c]%%",$row2[$arr_name[$c]],$text_c);
}
echo $text_c;
}
}
|
можно ли упростить? | |
|
|
|
|
|
|
|
для: P@Sol
(25.08.2005 в 10:28)
| | Возможно... но у нас нет перед глазами даже таблиц MySQL, поэтому разобраться в логике кода сложновато. | |
|
|
|
|
|
|
|
для: cheops
(25.08.2005 в 11:43)
| |
// эта часть во всех таблицах pcontent1,pcontent2,pcontent3 и т.д.
Message_id int(11) UNSIGNED Нет auto_increment
Subdivision_id int(11) Нет 0
Priority int(11) Нет 0
Checked tinyint(2) Нет 1
// эту часть создает админ через phpmyadmin (счас) или в панели администратора ( в буд.). Столбцов может быть скока угодно
Date_s date Нет 0000-00-00
Name_s varchar(255) Нет
|
$row["Record_template"] достается из другой таблице и содержит примерно следующее
<tr>
<td width=100 rowspan=3 align=center valign=top><img src="/myphp/pic/content/%%Pic_s%%" alt="%%Name_s%%"></td>
<td width=280 valign=top height=13><div class=date>%%Date_s%%</div></td>
</tr>
<tr>
<td width=228 valign=top height=18><div class=namesite><a href=# class=namesite>%%Name_s%%</а></div></td>
</tr>
<tr>
<td width=228 height=13><div class=des>%%Desc_s%%</div></td>
</tr>
<tr><td colspan=2 height=10><img src="/myphp/pic/p.gif"></td></tr>
|
| |
|
|
|
|
автор: P@Sol[не вошел] (16.09.2005 в 18:34) |
|
|
для: P@Sol
(22.08.2005 в 11:06)
| | было все замечательно, по вашему совету, а не использую eval...но вот тут оказывается в бд надо хранить не только html текст, но и php код...но как его теперь ввставлять? | |
|
|
|
|
|
|
|
для: P@Sol[не вошел]
(16.09.2005 в 18:34)
| | Здесь без eval() не обойтись, но вообще вы на скользкой дорожке... самое по себе совместное использование PHP и HTML является плохой практикой программирования, используемой не от хорошей жизни... если вы эту смесь будете его хранить в базе данных - отладка превратится в титаническую задачу, так как с проблемами вы будете сталкиваться в момент формирования страницы и причины возникновения ошибок будут не очевидными, так как код будет сидеть в базе данных и охватить его взором будет непосильной задачей. | |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 19:39)
| | я делаю cms, поэтому при формированию дизайна сайта, иногда приходится использовать условия и циклы...т.е. вы советуете сделать типа %%если t=2 то%% заменять на if (t=2) {}? | |
|
|
|
|
|
|
|
для: P@Sol
(19.09.2005 в 14:22)
| | Да использование шаблонов в этом случае будет надёжнее чем PHP-кода - этим вы снизите вероятность возникновения непредвиденной ошибки на порядок. | |
|
|
|
|
|
|
|
для: cheops
(19.09.2005 в 18:46)
| | начал заниматся этой проблемой и понял что предложенный мною выход не правильный..а как реализуется конструкция if...else? получается надо самомму писать функцию, которая заменит эту кострукцию:( | |
|
|
|
|
|
|
|
для: P@Sol
(14.10.2005 в 14:09)
| | чего-то не очень понятно... | |
|
|
|
|
|
|
|
для: cheops
(14.10.2005 в 14:52)
| | тогда озвучиваю задачу....
информация для сайта хранится в бд....в одной таблице дизайн, в другой контент....так вот надо сделать дизайн таким образом, что если контента нет, то дизайн не выводился...
т.е.:
есть шапка и футер, которые выводятся всегда. Пользователь может добавить текст (обязательно), картинка, подпись к картинке, текст2, картинка2, подпись к картинке2...что надо сделать в шаблоне, чтобы если введено все оно все и выводилось, а если введен только текст - выводился текст, а остальное бы не выводилось...
надо использовать конструкцию, типа, if..else...но так как содержимое из бд не желательно засовывать в eval, нужна альтернатива...какая? | |
|
|
|
|
|
|
|
для: P@Sol
(14.10.2005 в 15:09)
| |
чтобы если введено все оно все и выводилось
|
Хм... всё-равно не очень понятно... задача очень смахивает использование на LEFT JOIN или IF() в MySQL... но нужен пример. Давайте новую тему заведём в разделе MySQL - и там всё обстоятельно разберём: что имеется, что хотелось бы и как это сделать. Просто у меня нет перед глазами ваших таблиц и мне сложно понять что требуется... | |
|
|
|
|