Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Полная версия новости


Автор: DragonLord 23.6.2007, 09:53
Скрипт новостной ленты. Новоть состоит из заголовка описания и полной версии новости. Я вывожу заголовок, дату с описанием, но как сделать полную версию новости. Чтоб пользователь нажав на ссылку прочитать полную новость попал на основной текст. Тут я даже приблизительный алгоритм немогу придумать.

Автор: teroni 23.6.2007, 13:30
А в чем собственно проблема? Там, где анонсы новостей ставишь ссылки вида 
Код

<a href="news.php?id=123">подробнее</a>
а на странице news.php показываешь новость с номером == $_GET['id'].

Автор: DragonLord 23.6.2007, 14:36
Цитата

А в чем собственно проблема?

Проблема в том, что программирование не всем дано от природы. Туго до меня доходит. Разбираюсь по крупицам.

Код
<a href="news.php?id=123">подробнее</a>

Тут не совсем пойму, почему id=123. Ведь ссылка должна генериться автоматически на каждую новость.

Цитата

а на странице news.php показываешь новость с номером == $_GET['id'].


Извиняюсь за свой тупизм, но куда это прикручивать нужно?

И еще. У меня заголовок в своем поле в базе, описание новости в своем, полная новость в своем. Как скрипт поймет откуда полную новость брать? Тут я наверно сделал глупость. Получается лучше на главную нужно выводить поле с полной новостью, только обрезать его на определенном моменте. Но с другой стороны посмотреть не ту же мамбо. Там есть отдельное поле для краткого описани, для полного и даже лоя титла и ключевых слов.

Автор: mclight 23.6.2007, 15:20
для этого при добавлении статьи в базу ей надо присвоить уникальное числа( ID ) ......в ссылку прикручиваешь этот самый id.
на стр. news.php $_GET['id'] надо приструнить туда откуда будет делаться запрос к базе

Автор: Kefir 23.6.2007, 15:26
Примитивно:
Код

if(isset($_GET['id'])) {
  echo News::printNews($_GET['id']);
} else {
  foreach($news_ids_from_database as $id) {
    echo '<a href="news.php?id='.$id.'">подробнее</a>';
  }
}




 smile 
Цитата(DragonLord @  23.6.2007,  14:36 Найти цитируемый пост)
программирование не всем дано от природы

Программирование никому не дано от природы. Просто некоторые читают больше чем другие.

Автор: Ravanger 26.6.2007, 19:12
Цитата

И еще. У меня заголовок в своем поле в базе, описание новости в своем, полная новость в своем. Как скрипт поймет откуда полную новость брать? Тут я наверно сделал глупость. Получается лучше на главную нужно выводить поле с полной новостью, только обрезать его на определенном моменте. Но с другой стороны посмотреть не ту же мамбо. Там есть отдельное поле для краткого описани, для полного и даже лоя титла и ключевых слов.


чтоб сделать анонс из готовой новости, реж ее допустим до n-ой точки
Код

$n=0;
$x=0;
while ($n<=3)
      {
    if (strpos($news_text,'.') != false)
      {
        $x = strpos($news_text,'.', $x)+1;
                        /* или же $x = strpos($news_text,'.', $x);
                                         $х++;*/
                         
      }
       $n++;
       }
$anons = substr($news_text,0,$x);


примерно так, а ссылку на раскрытую новость можно сделать из самого анонса, или по ссылке "подробнее" по своему усмотрению

Автор: Golda 27.6.2007, 07:38
Ну, это не самое удачное решение. А если потребуется описание из нестандартного количества предложений? Или в описании используется сокращение, ограниченное точкой? Можно, конечно, придумать какой-нибудь разделитель, типа #####################, который вряд ли встретится в тексте сам по себе. Но на самом деле, решение, при котором описание хранится в отдельном поле, гораздо гибче: поиск, в котором используется описание, организовать легче, да и работать выборки будут быстрее. Если отвлечься от частностей, хранение описания в одном поле с текстом нарушает принцип атомарности данных в RDBMS. 

А проблем с сопоставлением новости описанию возникать недолжно. Поля разные, но запись-то одна. Идентифицируйте ее по ID, и выбирайте поле, соответствующее ситуации

Автор: Ravanger 27.6.2007, 09:37
Golda

совершенно с тобой согласен, просто дал человеку ответ на его предположение, а реализация это уже его личное предпочтение

Автор: Gold Dragon 27.6.2007, 10:47
да всё правильно. Не нужно изобретать велосипед. Три поля: название статьи, краткая новость, полная новость (без краткой)

Автор: mclight 27.6.2007, 13:43
+ id .....обязательно........
минимум, для индексации

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)