Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничный вывод новостей
 
 автор: skydemon   (03.09.2012 в 19:48)   письмо автору
 
 

Есть код вывода новостей

function index_page()
{
$result_index = mysql_query("SELECT * FROM news ORDER BY id");
$myrow_index = mysql_fetch_array($result_index);
if($myrow_index != "")
{
$sm_read = file("tpl/news.html");
$sm_read = implode("",$sm_read);
do
{
$edd_tamp = $sm_read;
$text = explode("[end]",$myrow_index[text]);

$edd_tamp = str_replace("[_text]",$text[0],$edd_tamp);
$edd_tamp = str_replace("[_title]",$myrow_index[title],$edd_tamp);
$edd_tamp = str_replace("[_id]",$myrow_index[id],$edd_tamp);
$edd_tamp = str_replace("[_author]",$myrow_index[author],$edd_tamp);
$edd_tamp = str_replace("[_date_b]",$myrow_index[date_b],$edd_tamp);

$news .= $edd_tamp;
}
while($myrow_index = mysql_fetch_array($result_index));
}
else $news = "<p align='center'>Нет записей в базе данных</p>";
return $news;
}


как можно сделать так чтобы новости выводились не кучей а постранично

  Ответить  
 
 автор: DJ Paltus   (03.09.2012 в 20:29)   письмо автору
 
   для: skydemon   (03.09.2012 в 19:48)
 

Алгоритм прост:
0 решаем, сколько записей будем выводить на странице
1 находим общее число записей в таблице (select count)
2 делим одно на другое, чтобы получить количество страниц и расставляем ссылки типа ?page=2
3 где-то находим номер нужной страницы (ноль или из GET-массива
4 Формируем запрос на выдачу нескольких новостей в промежутке от номера страницы, помноженного на количество записей на страницу, до номера страницы, помноженного на количество записей на страницу плюс еще одно количество записей на страницу. для этого говорим в запросе "LIMIT x, y", где x - это номер страницы, помноженный на количество записей на страницу, а y - количество записей на страницу.
5 Ну и выводим

  Ответить  
 
 автор: skydemon   (03.09.2012 в 20:36)   письмо автору
 
   для: DJ Paltus   (03.09.2012 в 20:29)
 

Слушай у мя тут ещё 1 вопрос есть как можно последнее число из базы данных вывести тоесть:
у нас в базе есть такая таблица
| id | | news |
и она заполнена так
| id | | news |
1 one
2 second
ну дапустим пример просто как вывести последее число у поля иди тоесть 2

  Ответить  
 
 автор: DJ Paltus   (03.09.2012 в 20:38)   письмо автору
 
   для: skydemon   (03.09.2012 в 20:36)
 

select max(id)

  Ответить  
 
 автор: Valick   (04.09.2012 в 09:07)   письмо автору
 
   для: DJ Paltus   (03.09.2012 в 20:38)
 

неправильный ответ в данном контексте
максимальный id и общее число записей в таблице могут отличаться, например при удалении некоторых строк таблицы.
для постраничной навигации уже давно используют CALC_FOUND_ROWS

  Ответить  
 
 автор: DJ Paltus   (04.09.2012 в 13:36)   письмо автору
 
   для: Valick   (04.09.2012 в 09:07)
 

Задача вывести последнее число из таблицы, про количество записей никто не спрашивает Я предполагаю, что id в данном случае автоинкрементный столбец. Значит, мой ответ верен.
Насчет "давно используют SQL_CALC_FOUND_ROWS"... Гвозди и микроскопы. Пушки и воробьи. Плюс неиспользование индексации и продолжительные холиворы на эту тему.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования