Не обрабатывается код PHP

12
lospirata
На сайте с 24.12.2010
Offline
103
2697

Здравствуйте.

Есть страница pages.php, в которой организован вывод разделов сайта по id такого вида:

$result = mysql_query('SELECT `id`, `text` FROM `pages` WHERE id='.$id, $db);
$row = mysql_fetch_array($result);
echo $row['text'];

В pages.php с помощью include вставляется колонка с названиями разделов сайта таким образом:

<?php
$result = mysql_query('SELECT `id`, `name` FROM `pages` WHERE `category` = "Раздел"', $db);
while ($row = mysql_fetch_array($result)) {
echo "<li><a href=\"/pages.php?id=$row[id]\" title=\"$row[name]\">$row[name]</a></li>";
}
?>

Все прекрасно работает, разделы выводятся.

Соответственно, есть страница сайта pages.php?id=17 (карта сайта), в нее вставляю тот же самый код, что и в sidebar.php для вывода разделов, но выдает только следующее в браузере:

$row[name]"; } ?>

В чем может быть проблема?

It Can't Rain All the Time Блог вебмастера (https://lospirata.ru/)
W
На сайте с 12.11.2009
Offline
72
#1

Ничего не понятно. Приведи полный код в котором проблема. Тот же что и в sidebar.php это не ответ.

И еще: что за pages.php&id=17 ? Может быть все таки pages.php?id=17 ??

lospirata
На сайте с 24.12.2010
Offline
103
#2
wawilon:
Ничего не понятно. Приведи полный код в котором проблема. Тот же что и в sidebar.php это не ответ.

В pages.php?id=17

<?php
$result = mysql_query('SELECT `id`, `name` FROM `pages` WHERE `category` = "Раздел"', $db);
while ($row = mysql_fetch_array($result)) {
echo "<li><a href=\"/pages.php?id=$row[id]\" title=\"$row[name]\">$row[name]</a></li>";
}
?>
wawilon:
И еще: что за pages.php&id=17 ? Может быть все таки pages.php?id=17 ??

Да, именно pages.php?id=17, ошибся )

gormarket
На сайте с 29.12.2010
Offline
47
#3

Видимо в $row[name] встречаются какие-то спецсимволы, попробуйте так


echo '<li><a href="pages.php?id='.$row['id'].'" title="'.htmlspecialchars($row['name']).'">'.htmlspecialchars($row['name']).'</a></li>';

И обязательно проверьте чтобы блок PHP-кода в файле, который Вы вставляете с помощью include, был заключен в правильные начальный и конечные теги PHP

<?php

...

?>

поскольку при переходе в на обработку этого файла PHP-интерпретатор переключается из PHP режима в HTML режим, и его нужно переводить в режим PHP принудительно.

(был случай когда перед знаком вопроса нечаянно поставил пробел "< ?php" и начались проблемы)

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
lospirata
На сайте с 24.12.2010
Offline
103
#4

Попробовал, выводит следующее в браузере:

'.htmlspecialchars($row['name']).''; } ?>

Постараюсь написать про ситуацию более понятнее. Есть файл pages.php, в котором организован вывод контента из базы данных, который в свою очередь добавляется из админки. Все прекрасно выводится, но php почему-то не обрабатывается на, так называемых, внутренних страницах. Ничего не происходит, если просто написать:

<?php echo "Привет"; ?>

Если открыть исходный код страницы, то видно, что там вписан этот самый код, который должен выдавать результат своей работы, в свою очередь sidebar.php, вставленный с помощью include отлично работает.

Если убрать <?php ?>, то выводит код, как текст, обрабатывая только html строчки.

C
На сайте с 28.01.2010
Offline
70
#5

Ну так у вас содержимое страницы (<?php echo 'привет!';?> как я понял?) выводится кодом:

echo $row['text'];

а что будет если выполнить код

echo "<?php echo 'Привет!';?>";

?

нужно eval использовать.

Это - личная подпись. Здесь обычно ставят ссылки на всякие кривые сайты, надеясь получить "жирный бек".
gormarket
На сайте с 29.12.2010
Offline
47
#6

lospirata, Вы неоднократно описали ЧТО вставляете с помощью include, но не не сообщили КАК.

А ведь include может быть функцией в PHP

include('incl.php');

причем если в режиме HTML, нужно так (иначе выведется как текст только эта строка)

<?php
include('incl.php');
?>

А есть еще SSI-директивы include, например

<!--#include virtual="incl.php" -->

А еще есть тег HTML

<include src="incl.php"></include>

Проверьте для рабочего и проблемного случая, идентичным ли кодом Вы делаете вставку с помощью include, из одного ли каталога файл вставляется (в некоторых случаях разный результат может быть из-за разных настроек в файлах в .htaccess каталогов).

lospirata
На сайте с 24.12.2010
Offline
103
#7
Counselor:
Ну так у вас содержимое страницы (<?php echo 'привет!';?> как я понял?) выводится кодом:

echo $row['text'];

Так точно.

Counselor:
а что будет если выполнить код

echo "<?php echo 'Привет!';?>";

В браузере выводится echo "";

gormarket:
lospirata, Вы неоднократно описали ЧТО вставляете с помощью include, но не не сообщили КАК.

В данном случае include совсем не важен, я им не вставляю код, который не обрабатывается. Вот полный код pages.php:

<?php

include "mysql.php";
include "design/header.php";
include "design/sidebar.php";

$result = mysql_query('SELECT `id`, `text` FROM `pages` WHERE id='.$id, $db);
$row = mysql_fetch_array($result);
echo $row['text'];

include "design/footer.php";
?>

То, что вставлено с помощью include, отлично работает. Вместо строки

echo $row['text'];

подставляются данные из базы, которые можно увидеть, перейдя по id (pages.php?id=2, например), разделы сайта. Вот в этом куске не хочет работать PHP.

C
На сайте с 28.01.2010
Offline
70
#8
lospirata:

То, что вставлено с помощью include, отлично работает. Вместо строки
echo $row['text'];

подставляются данные из базы, которые можно увидеть, перейдя по id (pages.php?id=2, например), разделы сайта. Вот в этом куске не хочет работать PHP.

Так я же вам написал. Echo не будет обрабатывать никакой php код, эхо нужно для простого вывода строк на экран. Для выполнения php кода нужно использовать функцию eval.

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#9
lospirata:
<?php include "mysql.php"; include "design/header.php"; include "design/sidebar.php"; $result = mysql_query('SELECT `id`, `text` FROM `pages` WHERE id='.$id, $db); $row = mysql_fetch_array($result); echo $row['text']; include "design/footer.php"; ?>

Попробуйте выполнить такой код и напишите что выводит:

<?php
error_reporting (E_ALL);
include "mysql.php";
//include "design/header.php";
//include "design/sidebar.php";
$query='SELECT `id`, `text` FROM `pages` WHERE id="19"';
$result = mysql_query($query, $db);
echo mysql_errno($db) . ": ".mysql_error($db)." : ".$query."\n";
$row = mysql_fetch_array($result);
echo $row['text'];

//include "design/footer.php";
?>
lospirata
На сайте с 24.12.2010
Offline
103
#10
Ёхан Палыч:
Попробуйте выполнить такой код и напишите что выводит

То же самое:

$row[name]"; } ?>

В ячейке text хранится html код вместе с php. Вопрос в том, как наиболее эффективно вывести все это из базы с работой php. Может есть какая-то альтернатива функции eval?

Была идея создать разделитель функцией preg_split и после отделять куски php, но в цикле, где присутствует html, получится не совсем удобно.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий