Include в цикле

  • Автор темы Автор темы chmod755
  • Дата начала Дата начала

chmod755

Guest
Include в цикле

Почему include в цикле выполняется только один раз? Ведь он МОЖЕТ вставляться многократно.


PHP:
while($block=mysql_fetch_array($result)) {
echo"<table border=\"0\"  width=\"150\" cellpadding=\"0\" cellspacing=\"1\">
<tr><td colspan=\"2\" class=\"m\">".$block[BLOCK_TITLE]."</td></tr></tr>";
include("blocks/$block[BLOCK_FILE_NAME]");
echo"</td></tr></table><br>";
}
 
да дело не в скобке, я ее добавил уже, я просто скопировал неудачно.
 
Не почему. Он выполняется столько раз - сколько его вызываешь. Ты просто где-то ошибся.
 
Вот весь скрипт:

PHP:
function showblock($align){

$query="select * from blocks where BLOCK_ALIGN='1' AND BLOCK_ACTIVE='1' order by BLOCK_TITLE desc";
$result=mysql_query($query);

while($block=mysql_fetch_array($result)) {
echo"<table border=\"0\"  width=\"150\" cellpadding=\"0\" cellspacing=\"1\">
<tr><td colspan=\"2\" class=\"m\">".$block[BLOCK_TITLE]."</td></tr></tr>";
echo "blocks/$block[BLOCK_FILE_NAME]";
include("blocks/$block[BLOCK_FILE_NAME]");
echo"</td></tr></table><br>";
}

}

запрос выдает 100% 2 результата. Проверка на то что include работает только раз простая:
BLOCK_ACTIVE='1' order by BLOCK_TITLE desc"; - выводится только первый блок

BLOCK_ACTIVE='1' order by BLOCK_TITLE"; - выводится только второй блок

Оба не выводятся, может и выводятся, но я пока этого явления не наблюдал
 
Для тестирования пиши проще.
Чё-говорит?
PHP:
while ($block = mysql_fetch_array($result)) {
  $path = 'blocks/'.$block['BLOCK_FILE_NAME'];
  echo $path.(file_exists($path)) ? '-Есть' : '-Нет такой буквы';
}

p.s. у тебя какой-то HTML кривовытый.
Оба не выводятся, может и выводятся, но я пока этого явления не наблюдал

Ты view source смотрел или в броузере на глаз? ;)
 
да конечно смотрел. Я уже и так и сяк тестил. Вот что выяснил. В цикле реально 2 итерации, это если инклуда нет, А ВОТ ЕСЛИ ЭТОГО ЗАСРАНЦА ВПИХНуТЬ, так токо первый инклуд выполняется, и сразу же из цикла вываливает
 
Если в подключаемых файлах только html и они существуют, то так не бывает.
Иначе:
PHP:
error_reporting(E_ALL);
ini_set('display_errors', '1');

не присваиваешь $result какое-то значение в include?
 
так у тебя там в файле наверное простой текст, а файл после инклуда ведь интерпретируецца

то что внутри файла заключи в echo " ... ";

или я сморозил ? =)
 
Re: Include в цикле

Автор оригинала: chmod755
Почему include в цикле выполняется только один раз?
Во-первых, вопрос не для продвинутых, во-вторых - тут нет телепатов, и никто понятия не имеет, что ты там инклудишь. В-третьих - код:
PHP:
// 1.php
for($i=0;$i<2;$i++)include '2.php';
PHP:
// 2.php
echo $i."<br>\n";
работает вполне ожидаемым образом.
Вывод: читать PHP FAQ: Ничего не работает! Что делать??? и всегда помнить о том, что правильно поставленный вопрос содержит 90% ответа.
 
Инклудится файл вот такого вида

PHP:
<?php


if (eregi("block_menu.php", $_SERVER['PHP_SELF'])) {
    Header("Location: index.php");
    die();
}

$query="select * from simpmenu where active=\"1\" order by pp";
$result=mysql_query($query) or die("Error");

while($menu=mysql_fetch_array($result))
{
echo "<tr align=right><td width=\"10%\">text</td></tr>";
}

?>
 
Автор оригинала: chmod755
Инклудится файл вот такого вида

PHP:
...
$result=mysql_query($query) or die("Error");
...
И стоило до этого кучу сообщений сопли жевать? У тебя, [censored], в этом файле переопределяется $result, из-за чего цикл во внешнем файле и не работает!
 
Спасибо! теперь все заработало.


Что касательно этого говна:
PS: никто не будет отлаживать твой код за тебя - ты должен научиться делать это самостоятельно.
Так вот ЭТО меня больше всего и вымораживает, а зачам вообще форум нужен, чтобы советоваться, просить помочь, помочь кому то. Так если посмотреть, так все темы завязаны на этои, может теперь нельзя ваще темы новые создавать? Блин, кто так делает?
 
Сверху