Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Есть маленькое уточнение - ограничивать новость посимвольно не есть хорошо - возможно отрезание на каком-либо слове, поэтому лучше резать по словам, выводя, скажем, лишь некоторое их количество. Это частая задача и ее может решить такая функция (писалась мной давно и при некоторых малых изменениях работает нормально):
Код: Выделить весь код
$Year = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
function DrawTitleNews()
    {
     global $Year;

     $DBLink = db_connect(DBHost, DBName, DBLogin, DBPassword, true);
     $Query = 'SELECT
                 news.n_id,
                 news.n_cap,
                 news.n_full,
                 news.n_date
               FROM
                 news
               ORDER BY
                 news.n_date DESC
               LIMIT 3';
     //echo nl2br($Query);
     $Result = mysql_query($Query);
     //есть ли новости? Есть? Выводим.
     if (mysql_num_rows($Result) > 0)
       {
        echo '<tr height="14">
                <td align="center">
                  <table width="90%" cellpadding="0" cellspacing="0" border="0">
                    <tr>
                      <td colspan="2">
                        <table width="100%" cellspacing="0" cellpadding="0" border="0">
                          <tr>
                            <td class="newscap">Последние новости</td>
                            <td class="newsdate" nowrap>&nbsp;
                            </td>
                          </tr>
                        </table>
                      </td>
                     </tr>
                    <tr>
                      <td width="30"><img src="/img/1pxtr.gif" width="30" height="1" alt=""></td>
                      <td class="newsbody" width="100%">
                        <table width="100%" cellspacing="0" cellpadding="0" border="0">';
        while ($NewsInfo = mysql_fetch_array($Result, MYSQL_ASSOC))
          {
           //делим дату формата YYYY-mm-dd на составляющие
           $DT = explode('-', $NewsInfo['n_date']);
           //в $NewsBody теперь WordsPerNews слов
           $NewsBody = implode(' ', array_slice(explode(' ', $NewsInfo['n_full']), 0, WordsPerNews));
           //проверяем необходимость вывода новости в укороченном виде
           if (strlen($NewsBody) < strlen($NewsInfo['n_full']))
             {
              $NewsBody .= '<acronym class="redb" title="Это многоточие означает, что новость показана в укороченном виде. 
Ниже каждой такой новости есть ссылка для доступа к 
полному тексту новости.">...</acronym>';
              $FullLnk = '<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="1" alt=""></td></tr>
                          <td align="right" colspan="2"><a class="dblue" href="/news/'.$NewsInfo['n_id'].'"
 target="_blank" title="Перейти к просмотру полного текста новости в новом окне.">
полностью'.ImgBArrowRight.'</a></td>
                          <tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr>';
             }
           else
             $FullLnk = '<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr>';
           echo '<tr height="14">
                <td align="center">
                  <table width="90%" cellpadding="0" cellspacing="0" border="0">
                    <tr>
                      <td colspan="2">
                        <table width="100%" cellspacing="0" cellpadding="0" border="0">
                          <tr>
                            <td class="dnewscap">
                               <h2>'.$NewsInfo['n_cap'].'</h2>
                             </td>
                            <td class="dnewsdate" nowrap>
                               '.($DT[2]+0).' '.$Year[$DT[1]-1].' '.$DT[0].'
                            </td>
                          </tr>
                        </table>
                      </td>
                     </tr>
                    <tr>
                      <td width="30"><img src="/img/1pxtr.gif" width="30" height="1" alt=""></td>
                      <td class="dnewsbody" width="100%"><p class="normal_padl20">'.$NewsBody.'</p></td>
                    </tr>
                    '.$FullLnk.'
                  </table>
                </td>
              </tr>';

          }
        echo '          </table>
                      </td>
                    </tr>
                    <tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="1" alt=""></td></tr>
                    <tr><td colspan="2" align="right"><a class="dblue" href="/news/all">архив'.ImgBArrowRight.'</a></td></tr>
                    <tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr>
                  </table>
                </td>
              </tr>';
       }
    }
У меня новости берутся из БД, но в общем и целом не важно откуда происходят данные... только в коде разобраться надо . Как это выглядит при выводе можно поглядеть тут

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 02:48, 25-09-2004 | #11