Вот код:
<?php
include_once './system/system.php';
include './system/data/config.php';
include_once './system/classes/template.class.php';
$tem = new template;
$login = $tem->login();
$search = $tem->search();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $config['title']; ?></title>
<link href="template/style.css" rel="stylesheet" type="text/css">
<meta name="description" content="<?php echo $config['description']; ?>">
<meta name="keywords" content="<?php echo $config['keyword']; ?>">
<style type="text/css">
<!--
strong.page{
padding-left: 5px;
padding-right: 5px;
border:1px solid #EAEEF8;
background-color: #3366FF;
font-family: arial;
color:white;
font-size: 13px
}
a.page:link,
a.page:hover,
a.page:visited{
font-family: arial;
text-decoration: none;
font-size: 13px;
padding-left: 4px;
padding-right: 4px;
border:1px solid #EAEEF8;
color: #3366FF;
}
-->
</style>
</head>
<body>
<?php
ob_start();
$rating_select = mysql_query("SELECT `rating`,`q_vote` FROM `data` WHERE public='1'");
$mysql = mysql_fetch_array($rating_select);
$r = $mysql["rating"]/$mysql["q_vote"];
$r = intval($r);
############################
# Постраничная навигация #
############################
/*
аргументы:
$countStrings - integer (кол-во строк на одной странице)
$showLinks - integer (кол-во линков навигации)
$nameTable - string (имя таблицы в БД, которая постранично выводится)
*/
function getNavigation($countStrings, $showLinks, $nameTable)
{
#Подсчёт строк в таблице
$queryForCount = mysql_query("SELECT * FROM `".$nameTable."`");
$count_rows = mysql_num_rows($queryForCount);
#Подсчёт кол-ва страниц
$allPages = ceil($count_rows/$countStrings);
#Проверяем на какой странице мы находимся и задаём предел для вывода из БД
global $start;
if(!$_GET['page'] OR $_GET['page'] == 1)
{
$page_num = 1;
$start = 0;
}
else
{
$page_num = (int)$_GET['page'];
$start = ($page_num * $countStrings) - $countStrings;
}
$end = $start + $countStrings;
echo "<p align='center'>";
#Если мы ушли далеко от первой страницы - то выведем для удобства "Gthdfz"
if($page_num > ceil($showLinks/2))
{
echo $firstPage = "<a class='page' href='?page=1'>Первая</a> ";
}
#Проверяем - необходима ли ссылка "Предыдущая"
if($page_num != 1 AND $page_num > 1)
{
$prev = $page_num - 1;
echo $prevPage = "<a class='page' href='?page=".$prev."'>Предыдущая</a> ";
}
#Этот кусок выводит навигацию если общее кол-во страниц и кол-во показываемых ссылок совпадает
if($showLinks >= $allPages)
{
for($i = 1; $i <= $allPages; $i++)
{
if($i == $page_num)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Этот кусок будет строить навигацию когда кол-во страниц превышает кол-во выводимых ссылок
elseif($allPages > $showLinks)
{
#Строит навигацию для первыx SHOWLINKS ссылок
if($page_num <= ceil($showLinks/2))
{
for($i = 1; $i < $showLinks + 1; $i++)
{
if($i == $page_num)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Строит навигацию когда страница между предыдущем условием и следующим (СЕРЕДИНА)
if($page_num - ceil($showLinks/2) > 0 AND $page_num <= $allPages - $showLinks)
{
for($i = $page_num - ceil($showLinks/2 - 1); $i <= $page_num + ($showLinks/2); $i++)
{
if($i == $page_num)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Строит навигацию для последних SHOWLINKS ссылок
if($page_num > $allPages - $showLinks AND $page_num > ceil($showLinks/2))
{
for($i = ($allPages - $showLinks) + 1; $i <= $allPages; $i++)
{
if($i == $page_num)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
}
#Проверяем - необходима ли ссылка "Следующий"
if($page_num != $allPages AND $page_num < $allPages)
{
$next = $page_num + 1;
echo $nextPage = " <a class='page' href='?page=".$next."'>Следущая</a>";
}
#Если мы ещё далеко от последней страницы, то выведем "Последняя"
if($page_num <= $allPages - $showLinks)
{
echo $lastPage = " <a class='page' href='?page=".$allPages."'>Последняя</a>";
}
}
echo "</p>";
########################################
# ВЫЗОВ ФУНКЦИИ (ПОСТРОЕНИЕ НАВИГАЦИИ) #
########################################
#getNavigation($countStrings, $showLinks, $nameTable)
#$countStrings - integer (кол-во строк на одной странице)
#$showLinks - integer (кол-во линков навигации)
#$nameTable - string (имя таблицы в БД, которая постранично выводится)
#При вызове - LIMIT ".$start.", 3"), где 3 - $countStrings
#Пример $query = mysql_query("SELECT * FROM `data` ORDER BY `id` ASC LIMIT ".(int)$start.", 3");
getNavigation(3, 11, "data");
#################
# ВЫВОД ТАБЛИЦЫ #
#################
$query = mysql_query("SELECT * FROM `data` WHERE public='1' ORDER BY `id` DESC LIMIT ".$start.", 3") or die(mysql_error());
$count_rows = mysql_num_rows($query);
if($count_rows > 0)
{
while($string = mysql_fetch_array($query))
{
include './template/news.php';
}
}
$mysql = ob_get_contents();
ob_end_clean();
$page = "<br>$mysql<br>";
include ("template/index.php");
?>
</body>
</html>
Спустя 1 минута, 37 секунд (1.02.2012 - 12:42) Игорь_Vasinsky написал(а):
Цитата |
навигаия навигация CooL |


Спустя 4 часа, 35 минут, 37 секунд (1.02.2012 - 17:18) Shkiper написал(а):
С кем небывает

Спустя 23 минуты, 43 секунды (1.02.2012 - 17:42) Игорь_Vasinsky написал(а):
ты объясни что ты хочешь сделать...
Спустя 14 часов, 43 минуты, 39 секунд (2.02.2012 - 08:25) Shkiper написал(а):
Я хочу вот что сделать! Чтоб у меня отображалась ссылка Первая(но в коде который я дал там ссылка выводиться если я на странице 5,6,7 и более а мне надо как ты сдлелал) и не выводиться ссылка последняя и я хочу чтобы меню выводилось не сверху а с низу!! я понимаю что за меню все делать небудете(врят ли вообще что-то будуете) помогите мне хояты с отображением ссылок....
Спустя 1 день, 35 минут, 33 секунды (3.02.2012 - 09:01) Shkiper написал(а):
Нашел на сайте softtime.ru навигация вполне легкая при установке и мало объемная по содержанию кода(ВсЕм ОсТаЛьНый Не В оБиДу просто этот мне подошел более)
Спустя 1 день, 1 час, 56 минут, 59 секунд (4.02.2012 - 10:58) golovolom написал(а):
Вот моя навигация, можешь сдёрнуть если нужно
pages - сколько всего страниц
prepage - текущая страница-15
postpage - текущая страница+15
tpage - текущая страница
param - строка с дополнительными переменными, передающимися этой страничке методом GET
$_GET['pg'] страничка переданная себе же при листании, если не задана при первом посещении то в 0 устанавливается
если мы близко к краям(например на 3 страничке) это учитывается и лишние элементы не выводятся
только наверное дорабатывать придётся. а мне пофиг, я так пользуюсь) работает и не хочу больше ковыряться))
можешь сделать так
тогда, если в пределах видимости +- 5 страниц от текущей нет последней и первой страницы, они будут показываться
Даже стили дам под неё готовые
pages - сколько всего страниц
prepage - текущая страница-15
postpage - текущая страница+15
tpage - текущая страница
param - строка с дополнительными переменными, передающимися этой страничке методом GET
$_GET['pg'] страничка переданная себе же при листании, если не задана при первом посещении то в 0 устанавливается
// НАВИГАЦИЯ
if ($pages>0)
{
$prepage = $tpage - 15;
$postpage = $tpage + 15;
if ($getvar!="") $param = "&".$getvar."=".$message; else $param="";
if (($prepage<0)&&($tpage>5)) $prepage=0; // если листалка назад уходит за нулевую страницу
if (($postpage>$pages)&&($tpage<$pages-5)) $postpage=$pages; //если указывает за предел количества страниц
echo "<ul class='hnavi'>"; // начало вывода навигации // я делал списком с css свойством для li - display:inline-block
if ($prepage>=0)
{
echo "<li><a href='".$_SERVER['PHP_SELF']."?pg=".($tpage-1).$param."'><</a></li>";
echo "<li><a href='".$_SERVER['PHP_SELF']."?pg=".$prepage.$param."'>".$prepage."</a></li>";
echo "<li><span>...</span></li>";
}
for ($x=$tpage-5; $x<$tpage+6; $x++)
if (($x>=0)&&($x<=$pages))
{
if ($x!=$tpage) echo "<li><a href='".$_SERVER['PHP_SELF']."?pg=".$x.$param."'>".$x."</a></li>";
else echo "<li><span>".$tpage."</span></li>";
}
if ($postpage<=$pages)
{
echo "<li><span>...</span></li>";
echo "<li><a href='".$_SERVER['PHP_SELF']."?pg=".$postpage.$param."'>".$postpage."</a></li>";
echo "<li><a href='".$_SERVER['PHP_SELF']."?pg=".($tpage+1).$param."'>></a></li>";
}
echo "</ul>"; // конец вывода навигации
}
если мы близко к краям(например на 3 страничке) это учитывается и лишние элементы не выводятся
только наверное дорабатывать придётся. а мне пофиг, я так пользуюсь) работает и не хочу больше ковыряться))
можешь сделать так
$prepage = 0; // всегда первая страница
$postpage = $pages; //всегда последняя страница
тогда, если в пределах видимости +- 5 страниц от текущей нет последней и первой страницы, они будут показываться
Даже стили дам под неё готовые
.hnavi
{
margin-top: 30px;
font-size: 11px;
text-align: center;
font-weight:bold;
}
.hnavi li, .hnavi a, .hnavi span
{
width:25px;
height:25px;
}
.hnavi li
{
display: inline-block;
margin:2px;
border: none;
}
.hnavi a, .hnavi span
{
display: table-cell;
vertical-align: middle;
color: #000;
background: #fff;
border: 1px #08a solid;
}
.hnavi span
{
background:none;
}
.hnavi a:hover
{
/*background: #226; */
border: none;
color: #fff;
background:url(../img/design/dbutton.png); /*можно и без картинки, просто другим фоном выделить*/
}
Спустя 17 минут, 54 секунды (4.02.2012 - 11:16) Игорь_Vasinsky написал(а):
мой вариант же гибче) и потом - я сам давно уже на AJAX варианте....
Спустя 2 минуты, 19 секунд (4.02.2012 - 11:18) golovolom написал(а):
Цитата (Игорь_Vasinsky @ 4.02.2012 - 08:16) |
мой вариант же гибче) и потом - я сам давно уже на AJAX варианте.... |
я просто на счёт этого сильно не заморачивался) приклеил что первое на ум пришло, работает - и норм)