Есть таблица "news", в которой два поля: "id" и "text". При запросе: Код (Text): $query = "select * from news"; $result = mysql_query($query); $num_results = mysql_num_rows ($result); for ($i=0; $i <$num_results; $i++) { $row = mysql_fetch_array ($result); echo $row['text'] = substr($row['text'], 0, 100). "... <a href=\"#\">Читать далее.</a>; } выводятся все записи из поля "text". Моя задача состоит в том, чтобы присвоить результат выполнения этого цикла одной переменной, допустим $output. И, естественно, без вывода оператором "echo" в цикле. Выводится будет именно переменная "output". Например, результат выполнения цикла: тра ля ля, тра ля ля, тра ля ля, тра ля ля, ... Читать далее бла бла бла, бла бла бла, бла бла бла, б ... Читать далее А мне надо, весь результат цикла не выводить, а присвоить переменной $output, а затем уже вывести. Вот так: Код (Text): $output = 'тра ля ля, тра ля ля, тра ля ля, тра ля ля, ... <a href="#">Читать далее</a><br> бла бла бла, бла бла бла, бла бла бла, б ... <a href="#">Читать далее</a><br>'; echo $output; Т.е. Код (Text): $output = for ($i=0; $i <$num_results; $i++) { $row = mysql_fetch_array ($result); echo $row['text'] = substr($row['text'], 0, 100). "... <a href=\"#\">Читать далее.</a>; }; И еще один вопрос: Можно ли в самом запросе MYSQL при выборе всех строк из поля "text" из каждой строки выбирать только первые допустим 100 символов или до первой точки в этой строке?
PHP: <? $output="Text"; $output.="<br>Text 2"; print $output; $output=array(); $output[]="text1"; $output[]="text2"; print implode("<br>",$output); ?>
Видимо ты так и не понял моего вопроса . Тогда объясню еще раз подробнее. Структура сайта: index.php, template.tpl, config.php и engine.php. Содержание template.tpl: HTML: <html> <head> <title>{TITLE}</title> </head> <body> {OUTPUT} </body> </html> Содержание index.php: PHP: <? require "engine.php"; require "config.php"; $tpl->get_tpl('template.tpl'); $tpl->set_value('TITLE', $title); $tpl->set_value('OUTPUT', $output); $tpl->tpl_parse(); echo $tpl->html; ?> Содержание config.php: PHP: <? if ($page) $query = "select * from $page"; $result = mysql_query($query); $row = mysql_fetch_array ($result); $title = $row['title']; $output = $row['text']; ?> В файле engine.php производится замена {TITLE} и {OUTPUT} соответствующими переменными $title и $output. База данных содержит таблицы price, contact, news. В таблицах price и contact всего одна строка с полями id и text. Соответственно, если $page=price то переменная $output получает строку из таблицы price из поля text, что видно из файла config.php. Но.. В таблице news не одна строка, там их может быть хоть 1000. Выводить по одной нужной строке из таблицы news проще простого: PHP: <? if ($page) $query = "select * from $page WHERE id=$id"; $result = mysql_query($query); $row = mysql_fetch_array ($result); $title = $row['title']; $output = $row['text']; ?> Передавая в запросе не только значение переменной $page, но и значение переменной $id. А вот как вывести все строки из таблицы news и передать их в переменную $output? Вот в чем вся суть вопроса!
Уже ближе )) Чтобы вытаскивать только из поля text я подправил код: PHP: while( $row = mysql_fetch_array ($result)) { $output[]=$row['text']; } print_r($output); Но.. Мне нужен конечный результат в виде: $output = Вот так не получается: PHP: $output = print_r($output); Выдает ошибку: Fatal error: [] operator not supported for strings in (номер строки) Вот эта строка: $output[]=$row['text']; Если изменить: PHP: while( $row = mysql_fetch_array ($result)) { $massiv[]=$row['text']; } $output = print_r($massiv); То в нужном месте, т.е. там, где стоит {OUTPUT} выводится: 1 А весь маcсив выводится сверху )) Т.е. срабатывает print_r прямо в config.php выглядит он так: Мне же надо получить в переменную $output уже отформатированный текст, без "Array ( [0] =>" и, желательно, в таком виде: PHP: $output = 'тра ля ля, т... <a href="#">Читать далее</a><hr /> бла бла бла... <a href="#">Читать далее</a><hr /> трям трям, т... <a href="#">Читать далее</a><hr />';
while( $row = mysql_fetch_array ($result)) { $output.=$row['text']; } ili implode("",$output) esli massiv tam estb vse funkcii http://php.ru/manual
Супер! Теперь то, что надо! Огромнейший респектище! )) Можно последнюю подсказочку? При таком коде: PHP: while( $row = mysql_fetch_array ($result)) { $massiv[]=$row['text']; } $output = implode("<hr />",$massiv); Я получаю такой вывод: Как бы еще в каждую строку засунуть ссылочку с id этой строки? Выглядеть должно вот так: А.. чуть не забыл.. Каждую строку надо урезать до определенного количества символов, допустим до 100.
Да.. Ты прав.. Чего то я даже перестал думать на радостях )) Все работает, как часы! Огромнейшее спасибо! С меня пиво ))