Постраничная навигация, нужна помощь

12
A
На сайте с 07.08.2009
Offline
17
1155

<?

$result77 = mysql_query("SELECT str FROM options", $db);

$myrow77 = mysql_fetch_array($result77);

$num = $myrow77["str"];

// Извлекаем из URL текущую страницу

@$page = $_GET['page'];

// Определяем общее число сообщений в базе данных

$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");

$temp = mysql_fetch_array($result00);

$posts = $temp[0];

// Находим общее число страниц

$total = (($posts - 1) / $num) + 1;

$total = intval($total);

// Определяем начало сообщений для текущей страницы

$page = intval($page);

// Если значение $page меньше единицы или отрицательно

// переходим на первую страницу

// А если слишком большое, то переходим на последнюю

if(empty($page) or $page < 0) $page = 1;

if($page > $total) $page = $total;

// Вычисляем начиная с какого номера

// следует выводить сообщения

$start = $page * $num - $num;

// Выбираем $num сообщений начиная с номера $start

$result = mysql_query("SELECT id,title,description,date,author,mini_img,view FROM data WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);

?>

<?

// Проверяем нужны ли стрелки назад

if ($page != 1) $pervpage = '<a href=view_cat.php?cat='.$cat.'&page=1>Первая</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';

// Проверяем нужны ли стрелки вперед

if ($page != $total) $nextpage = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_cat.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть

if($page - 5 > 0) $page5left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';

if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';

if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';

if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';

if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';

if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';

if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';

if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';

if($page + 1 <= $total) $page1right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню если страниц больше одной

if ($total > 1)

{

Error_Reporting(E_ALL & ~E_NOTICE);

echo "<div class=\"pstrnav\">";

echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;

echo "</div>";

}

?>

Все это идеально работает у меня для постраничной навигации. НО это постраничная навигация в категориях.

А как на основе этого сделать постраничную навигацию на главной ведь там мы не знаем переменной cat

$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");

Помогите люди добрые. Направьте меня на путь истинный :gm:

Sape фильтр 20-50 ТИЦ за 2.99$ (/ru/forum/517164)
T.R.O.N
На сайте с 18.05.2004
Offline
314
#1

оставить просто SELECT COUNT(*) FROM data без условий

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
frantic
На сайте с 09.02.2009
Offline
27
#2

Avalanche, а можно на этот сайт посмотреть?)

sirota77
На сайте с 08.09.2008
Offline
161
#3

Ну и вопросик....

$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='index'");

для того что на главной нужен какой то идентификатор

A
На сайте с 07.08.2009
Offline
17
#4

пока нет на локал хосте

frantic
На сайте с 09.02.2009
Offline
27
#5
sirota77:
Ну и вопросик....
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='index'");
для того что на главной нужен какой то идентификатор

ну ему наверно нужно вывести просто все товары, или не знаю что там

A
На сайте с 07.08.2009
Offline
17
#6

Еще вопрос а как делается двоеное услоние

$result = mysql_query("SELECT data.id, data.cat, data.title, data.description, data.date, data.author, data.mini_img, data.view, categories.code, categories.name FROM data INNER JOIN categories ON categories.code = data.cat WHERE 1 ORDER BY data.date DESC", $db);

в плане сюда надо добавить

ORDER BY id LIMIT $start, $num

Avalanche добавил 04.03.2010 в 16:11

смысл естестенно на главной мне надо вывести все из всех категорий и сделать постраничную навигацию

frantic
На сайте с 09.02.2009
Offline
27
#7
Avalanche:
Еще вопрос а как делается двоеное услоние
$result = mysql_query("SELECT data.id, data.cat, data.title, data.description, data.date, data.author, data.mini_img, data.view, categories.code, categories.name FROM data INNER JOIN categories ON categories.code = data.cat WHERE 1 ORDER BY data.date DESC", $db);
в плане сюда надо добавить
ORDER BY id LIMIT $start, $num


SELECT *
FROM data
INNER JOIN categories ON categories.code = data.cat
ORDER BY id DESC
LIMIT $start, $num

и не надо еще по дате сортировать. если это дата создания. айдишника хватит.

A
На сайте с 07.08.2009
Offline
17
#8

не получается( нифига

Avalanche добавил 04.03.2010 в 16:32

все спасибо сделал кому интересно выкладываю:

$result77 = mysql_query("SELECT str FROM options", $db);

$myrow77 = mysql_fetch_array($result77);

$num = $myrow77["str"];

// Извлекаем из URL текущую страницу

@$page = $_GET['page'];

// Определяем общее число сообщений в базе данных

$result00 = mysql_query("SELECT COUNT(*) FROM data");

$temp = mysql_fetch_array($result00);

$posts = $temp[0];

// Находим общее число страниц

$total = (($posts - 1) / $num) + 1;

$total = intval($total);

// Определяем начало сообщений для текущей страницы

$page = intval($page);

// Если значение $page меньше единицы или отрицательно

// переходим на первую страницу

// А если слишком большое, то переходим на последнюю

if(empty($page) or $page < 0) $page = 1;

if($page > $total) $page = $total;

// Вычисляем начиная с какого номера

// следует выводить сообщения

$start = $page * $num - $num;

// Выбираем $num сообщений начиная с номера $start

$result = mysql_query("SELECT data.id, data.cat, data.title, data.description, data.date, data.author, data.mini_img, data.view, categories.code, categories.name FROM data INNER JOIN categories ON categories.code = data.cat WHERE 1 ORDER BY data.date DESC LIMIT $start, $num", $db);

// Проверяем нужны ли стрелки назад

if ($page != 1) $pervpage = '<a href=index.php?page=1>Первая</a> | <a href=index.php?page='. ($page - 1) .'>Предыдущая</a> | ';

// Проверяем нужны ли стрелки вперед

if ($page != $total) $nextpage = ' | <a href=index.php?page='. ($page + 1) .'>Следующая</a> | <a href=index.php?page=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть

if($page - 5 > 0) $page5left = ' <a href=index.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';

if($page - 4 > 0) $page4left = ' <a href=index.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';

if($page - 3 > 0) $page3left = ' <a href=index.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';

if($page - 2 > 0) $page2left = ' <a href=index.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';

if($page - 1 > 0) $page1left = '<a href=index.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

if($page + 5 <= $total) $page5right = ' | <a href=index.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>';

if($page + 4 <= $total) $page4right = ' | <a href=index.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>';

if($page + 3 <= $total) $page3right = ' | <a href=index.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>';

if($page + 2 <= $total) $page2right = ' | <a href=index.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';

if($page + 1 <= $total) $page1right = ' | <a href=index.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню если страниц больше одной

if ($total > 1)

{

Error_Reporting(E_ALL & ~E_NOTICE);

echo "<div class=\"pstrnav\">";

echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;

echo "</div>";

}

ewg777
На сайте с 04.06.2007
Offline
225
#9
if($page - 5 > 0) $page5left = ' <a href=index.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=index.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=index.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=index.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=index.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

Что будете делать, если страниц нужно будет выводить не 4, а 13 или 21?

A
На сайте с 07.08.2009
Offline
17
#10

if($page - 5 > 0) $page5left = ' <a href=index.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';

if($page - 4 > 0) $page4left = ' <a href=index.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';

if($page - 3 > 0) $page3left = ' <a href=index.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';

if($page - 2 > 0) $page2left = ' <a href=index.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';

if($page - 1 > 0) $page1left = '<a href=index.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий