Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: помогите сделать краткий обзор
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » помогите сделать краткий обзор

Страниц (1): [1]
 

1. tipagraf - 12 Января, 2012 - 14:42:27 - перейти к сообщению
Доброго времени всем.
Огорчение помогите сделать краткий обзор из целого новостного текста который выводится из базы полностью. В общем вот:
Цитата:
$result = mysql_query("SELECT id,date,header,image,content FROM news WHERE approved=1 ORDER BY id LIMIT $start, $num ",$db);


if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@mail.com <br> <strong>Код ошибки:</strong></p>";
exit (mysql_error());
}

if (mysql_num_rows($result) > 0)

{
$myrow = mysql_fetch_array($result);

do
{


printf ("<table align='center' class='post'>

<tr>
<td class='post_title'>
<p class='post_name'><img class='mini' align='left' src='image/%s.jpg' width='120' height='120' ><p class='post_adds'><b>%s</b></p>
<p class='post_adds'>Дата: %s</p>
%s<a href='index_post.php?id=%s'>далее</a></p>
</td>
</tr>

<tr>

</tr>

</table><br><br>",$myrow["image"],$myrow["header"],$myrow["date"],$myrow["content"],$myrow["id"]);


}
-вот эта конструкция выводит новость из базы целиком, а мне надо чтобы новость обрезалась и выводилась в виде краткого обзора. За вывод отвечают поля "content" и метка "%s" они отмечены красным??? Растерялся или ткните в статью где есть подобный пример. Спасибо
2. LIME - 12 Января, 2012 - 15:09:17 - перейти к сообщению
можно в текст новости вставить метку разделяющую короткий вариант
например
CODE (html):
скопировать код в буфер обмена
  1. <p>Новость начинается.Потом граница.<!--text_label-->И тут продолжение новости </p>

в полном варианте метки видно не будет
а в коде отрезать текст начиная от вашей метки
перед printf вставим строку
PHP:
скопировать код в буфер обмена
  1. $myrow["content"]=preg_replace('#<!--text_label-->(.)+$#s','',$myrow["content"]);
3. tipagraf - 12 Января, 2012 - 19:01:41 - перейти к сообщению
Спасибо, что откликнулись, если я правильно понимаю то в сам текст выводимой новости: (поправьте если ошибаюсь)
LIME пишет:
в текст новости вставить метку разделяющую короткий вариант
тогда получается что вставить метку очень накладно потому что все новости парсятся, отдельным парсером в базу мускуль напрямую а оттуда уже идет вывод , на страницу, а переделать парсер чтобы выводил дескрипшен не могу он зазендин автором, вот и думаю каким можно, способом еще обработать массив с контентом чтобы выводить как, краткий обзор. может регулярку кто знает которая может этот массив на лету обработать.
(Добавление)
дело в том что сам, текст новости - уже выводится получается целиком через вот эту метку "%s" смею предположить может как-то можно ловить массив текста новости когда обрабатывается в "$myrow["content"]" и там, Закатив глазки как-то может, можно посчитать и выводить только определенное количество символов какой нибудь регуляркой к примеру, а остальное обрезать.... я извиняюсь за свои возможно дикие варианты, не силен в пхп Улыбка
4. LIME - 12 Января, 2012 - 19:41:49 - перейти к сообщению
http://php.su/functions/?substr
(Добавление)
PHP:
скопировать код в буфер обмена
  1. </table><br><br>",$myrow["image"],$myrow["header"],$myrow["date"],
  2. substr($myrow["content"],0,500/*например 500 символов*/),
  3. $myrow["id"]);
5. alexiy - 12 Января, 2012 - 19:50:03 - перейти к сообщению
а можно попробовать в таблицу добавить еще одно поле в котором будет краткий обзор статьи и ссылку на полную новость, если я правильно понял...
6. tipagraf - 12 Января, 2012 - 20:34:34 - перейти к сообщению
Большое человеческое Благодарю!!! LIME ваша ссылка на статью очень помогла, ну а вариант предложенный вами полностью сработал. Удачи! вам в Новом году! Радость

 

Powered by ExBB FM 1.0 RC1