Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2009, 16:46   #1
POPOV
Форумчанин
 
Аватар для POPOV
 
Регистрация: 26.10.2007
Сообщений: 124
Сообщение Новостная лента, требуется помощь

Вообщем решил, используя небольшой запас знаний, сделать сам простенькую новостною ленту.
В файле nov.txt хранятся краткие заголовки новостей с датой:

Код:
RALA против pака кожи, Novaftem O2 пpотив отеков
(10.07.2009)

Продукция Beauty Cafe
(29.07.2009)
Скрипт, выводящий заголовки новостей (немного прокоментирую):

PHP код:
<?php 
$file
="scripts/news/nov.txt";  
$kolv=2;                       // кол-во новостей отображаемое в форме
$news=file($file);         // создаю массив строк из содержимого файла
krsort($news);          // сортирую массив по убыванию значений индексов
foreach ($news as $str)  // перебираю элементы массива и пишу в $str 
{
if (
$a!=2)
{
if (
$str=="\r\n") { $j++; }  // Когда обнаружена пустая строка, к счётчику новостей прибавляется единица.

/* Если счётчик нов. < общего кол-ва новостей на стр., тогда если в файле обнаружена строка с датой, то выводим её с соответствующим оформлением; иначе вывожу заголовок новости и рядом ссылку "подробнее"  */

if ($j<=$kolv) { if ((strrpos("$str",".")==6)||(strrpos("$str",".")==9)) { echo "<div align='left' class='data'>$str<br><img src='images/null.GIF' alt='' width='50' height='1' vspace='2' /></div>"; } else if ($str!="\r\n") { $i=$j+1; echo "<div align='center'>$str</div><div align='right'><a href='newsfull.php?i=$i' class='newsdetail'>Подробнее</a></div><img src='images/hr.GIF' alt='' width='220' height='1' vspace='10' /><br>"; } }  
if (
$j==$kolv) { $a=2; } 
}
}
echo 
"<br><div align='center'><b><i><a href='newsfull.php' class='pages'><u>Архив новостей</u></a></i></b></div>";
?>
Всё это выглядит так:



Внимание, вопрос... ))) Например я поставлю общее кол-во новостей = 5, тогда у меня таблица, куда вывожу скрипт сильно растянется и сайт поедет.. Как можно уберечься от этого, используя тот же PHP или как-то ещё ? Напрмер, если выводимые новости не помещаются в таблицу, то должно выводиться меньше новостей.
POPOV вне форума Ответить с цитированием
Старый 26.08.2009, 16:50   #2
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

к примеру используйте css-свойства max-height (или его заменители) и overflow:hidden

или вертикальную прокрутку


на серверной стороне можно поставить какое-либо условие на счетчик количества новостей, не больше определенного значения
свободен...
wall66 вне форума Ответить с цитированием
Старый 26.08.2009, 17:06   #3
POPOV
Форумчанин
 
Аватар для POPOV
 
Регистрация: 26.10.2007
Сообщений: 124
По умолчанию

Цитата:
Сообщение от wall66 Посмотреть сообщение
или вертикальную прокрутку
А как её использовать ?, я думал она тока в iframe. )

Цитата:
Сообщение от wall66 Посмотреть сообщение
на серверной стороне можно поставить какое-либо условие на счетчик количества новостей, не больше определенного значения
Ээ, поясните пожалуйста, несовсем понял.. У меня же и так стоит: "if ($J<=$kolv)" - если счётчит меньше или равен общему кол-ву, тогда выводить новость, иначе не выводить.
POPOV вне форума Ответить с цитированием
Старый 26.08.2009, 17:41   #4
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

Цитата:
Сообщение от POPOV Посмотреть сообщение
А как её использовать ?, я думал она тока в iframe. )
нет, она возможна у любого элемента, с помощью overflow:scroll

Цитата:
Сообщение от POPOV Посмотреть сообщение
Ээ, поясните пожалуйста, несовсем понял.. У меня же и так стоит: "if ($J<=$kolv)" - если счётчит меньше или равен общему кол-ву, тогда выводить новость, иначе не выводить.
а что мешает прописать еще одно условие, ограничивающее $kolv ?
свободен...
wall66 вне форума Ответить с цитированием
Старый 26.08.2009, 18:23   #5
POPOV
Форумчанин
 
Аватар для POPOV
 
Регистрация: 26.10.2007
Сообщений: 124
По умолчанию

Цитата:
Сообщение от wall66 Посмотреть сообщение
а что мешает прописать еще одно условие, ограничивающее $kolv ?
Я просто не понимаю, как программа определит, хватает места в таблице для новой новости или нет ? Ведь одна новость может занимать как 1, так и несколько строчек..
Ладно вообщем, пока попробую css и полосу прокрутки
POPOV вне форума Ответить с цитированием
Старый 26.08.2009, 18:31   #6
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

Цитата:
Сообщение от POPOV Посмотреть сообщение
Я просто не понимаю, как программа определит, хватает места в таблице для новой новости или нет ? Ведь одна новость может занимать как 1, так и несколько строчек..
это должен определить разработчик, прикинув все вероятные варианты внешнего вида таблицы и выбрав из них наиболее оптимальный

либо более современное решение: ограничивать количество символов в ленте новостей, постепенно накапливая длину строки каждой новости в переменную и выходя из цикла при достижении лимита
свободен...
wall66 вне форума Ответить с цитированием
Старый 26.08.2009, 19:43   #7
POPOV
Форумчанин
 
Аватар для POPOV
 
Регистрация: 26.10.2007
Сообщений: 124
По умолчанию

wall66. Спасибо за советы, буду чего-нибудь думать..
POPOV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лента графических файлов бел Помощь студентам 1 13.04.2009 10:15
Требуется помощь etrom Помощь студентам 4 19.10.2008 16:36
Требуется помощь) immortalis Помощь студентам 3 12.10.2008 21:48
Требуется помощь ! Garacio_cain Работа с сетью в Delphi 3 06.01.2008 14:53