|
|
|
| Помогите сделать ссылки навигации, выборку делаю так:
$num = 1;
$page = intval($_GET['page']);
$count_sql = mysql_query("SELECT * FROM `content`");
$count = mysql_num_rows($count_sql);
$total = intval(($count-1) / $num) + 1;
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$SQL_c = mysql_query("SELECT content.id AS id, content.title AS title, content_catid.id AS cat_id, content_catid.title AS catid
FROM content, content_catid WHERE content_catid.id = content.catid LIMIT $start, $num");
while($r = mysql_fetch_assoc($SQL_c))
{
......
}
|
Надо чтобы выводило по 5 ссылок на страницы, не могу правиль условие цикла назначить:
if($page != 1 || empty($page)) { echo '<li><a href="?page=1">Первая</a></li>'; }
for($i = ????; $i < ????; $i++)
{
echo '<li><a href="?page='.$i.'">'.$i.'</a></li>';
}
if($total != $page) { echo '<li><a href="?page='.$total.'">Последняя</a></li>'; }
|
| |
|
|
|
|
|
|
|
для: brys
(11.09.2009 в 14:05)
| | попробуйте оформить ссылки не в цикле, а каждую индивидуально.
<?php
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>
<a href= ./page?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a>
<a href= ./page?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>
|
| |
|
|
|
|
|
|
|
для: Рома
(11.09.2009 в 14:09)
| | Да как раз хотелось узнать другое решение, в виде цикла. В вашем решение получается так: если надо выводить 10 ссылок то каждую отдельно прописать надо, не проще просто цифру ввести сколько надо выводить ссылок. | |
|
|
|
|
|
|
|
для: brys
(11.09.2009 в 14:13)
| | а каким именно страницам Вы хотите давать ссылки?
предыдущей , следующей - понятно. А еще три какие?
Желание убрать повторяющийся код само по себе более чем оправдано. | |
|
|
|
|
|
|
|
для: Trianon
(11.09.2009 в 14:18)
| | допустим я нахожусь на 8 странице и вид должен быть +-2, вот пример:
6|7|8|9|10 | |
|
|
|
|
|
|
|
для: brys
(11.09.2009 в 14:20)
| |
for($i = max(1, $page-2), $end = min($total, $page+2);
$i < $end;
$i++)
|
| |
|
|
|
|
|
|
|
для: Trianon
(11.09.2009 в 14:30)
| | Вот добавил чтобы последния страница тоже выводилась
Спасибо, то что надо | |
|
|
|
|
|
|
|
для: brys
(11.09.2009 в 14:31)
| | ага. опечатался.
Нужно было просто во второй строке указать <= | |
|
|
|