на нее из базы данных выводится информация, как сделать так чтобы все помещалось не на одну страницу а разбивалось на несколько,чтобы внизу кнопочки были < и > соответственно чтобы щелкать странички и 1,2,3 чтобы выбрать номер страницы! Если не трудно подскажите по коду то нужно сделать
Спустя 28 минут, 24 секунды (9.10.2012 - 11:14) Игорь_Vasinsky написал(а):
Спустя 2 часа, 4 минуты, 15 секунд (9.10.2012 - 13:18) Inkvizzz написал(а):
<?php
#Определил константы для подключения к серверу
define("HOST","localhost");
define("USER","root");
define("DB","journals");
#Соединение с сервером,выбор БД
@$link = mysql_connect(HOST,USER) or die (mysql_error());
@$selectDB = mysql_select_db(DB) or die (mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html" charset=UTF-8" />
</head>
<body>
<?php
########################
#Постраничная навигация#
########################
/*
аргументы:
$countStrings - integer (кол-во строк на одной странице)
$showLinks - integer (кол-во линков навигации)
$nameTable - string (имя таблицы в БД, которая постранично выводится)
*/
function getNavigation($countStrings,$showLinks,$sdachaprodukt)
{
#Подсчет строк в таблице
$queryForCount=mysql_query("SELECT*FROM $sdachaprodukt");
#Подсчет кол-ва страниц
$allPages = ceil($count_rows/$countStrings);
#Проверяем на какой странице мы находимся и задаем предел для вывода из БД
global $start;
if(!$_GET['page'] OR $_GET['page'] ==1)
{
$page=1;
$start=0;
}
else
{
$page=(int)$_GET['page'];
$start=($page*$countStrings) - $countStrings;
}
$end=$start+$countStrings;
#Если мы ушли далеко от первой страницы - то выведем для удобства "Первая"
if($page > ceil($showLinks/2))
{
echo $firstPage = "<a class='page' href='?page=1'>Первая</a>";
}
#Проверяем - необходима ли ссылка "Предыдущая"
if($page !=1 AND $page > 1)
{
$prev=$page - 1;
echo $prevPage = "<a class='page' href='?page=".$prev."'>Предыдущая</a>";
}
#Этот кусок выводит навигацию если общее кол-во страниц и кол-во показываемых ссылок совпадает
if($showLinks >= $allPages)
{
for($i=1;$i<=$allPages;$i++)
{
if($i == $page)
{
echo $navigation="<strong class='page'>".$i."'</strong>";
}
else
{
echo $navigation="<a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Этот кусок будет строить навигацию когда кол-во страниц превышает кол-во выводимых ссылок
elseif($allPages > $showLinks)
{
#Строит навигацию для первых SHOWLINKS ссылок
if($page <= ceil($showLinks/2))
{
for($i = 1;$i < $showLinks+1; $i++)
{
if($i == $page)
{
echo $navigation="<strong class='page'>".$i."</strong>";
}
else
{
echo $navigation="<a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Строит навигацию когда страница между предыдушем условие и следующим (СЕРЕДИНА)
if($page - ceil($showLinks/2) > 0 AND $page <= $allPages - $showLinks)
{
for($i = $page - ceil($showLinks/2 - 1); $i <= $page + ($showLinks/2);$i++)
{
if($i == $page)
{
echo $navigation="<strong class='page'>".$i."</strong>";
}
else
{
echo $navigation="<a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Строит навигацию для последних SHOWLINKS ссылок
if($page > $allPages - $showLinks AND $page > ceil($showLinks/2))
{
for($i = ($allPages - $showLinks) + 1; $i <= $allPages; $i++)
{
if($i == $page)
{
echo $navigation="<strong class='page'>".$i."</strong>";
}
else
{
echo $navigation="<a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
}
#Проверяем - необходима ли ссылка "Следующий"
if($page != $allPages AND $page < $allPages)
{
$next = $page + 1;
echo $nextPage = "<a class='page' href='?page=".$next."'>Следующая</a>";
}
#Если мы еще далеко от последней страницы, то выведем "Последняя"
if($page <= $allPages - $showLinks)
{
echo $lastPage= "<a class='page' href='?page=".$allPages."'>Последняя</a>";
}
}
####################################
#ВЫЗОВ ФУНКЦИИ (ПОСТРОЕНИЕ НАВИГАЦИИ)#
###################################
#getNavigation($countStrings,$showLinks,$nameTable);
#countStrings - integer (кол-во строк на одной странице)
#$showLinks - integer (кол-во линков навигации)
#$nameTable - string (имя таблицы в БД, которая постранично выводится)
#При вызове - LIMIT ".$start.",3") , где 3-$countStrings
#Пример $query=mysql_query("SELECT*FROM `sdachaprodukt` ORDER BY `id` ASC LIMIT ".(int)$start.",3");
#getNavigation(3,11,"sdachaprodukt");
###############
#ВЫВОД ТАБЛИЦЫ#
##############
mysql_close($link);
?>
</body>
</html>
Спустя 3 минуты, 59 секунд (9.10.2012 - 13:22) Игорь_Vasinsky написал(а):
Цитата |
charset=UTF-8" /> |
пропустил кавычку
здесь всё верно.
на какцю строчку ругает? покажи эту строку.
Спустя 3 минуты, 15 секунд (9.10.2012 - 13:26) inpost написал(а):
Игорь_Vasinsky
Не пропустил, а лишнюю добавил.
Не пропустил, а лишнюю добавил.
Спустя 2 минуты, 31 секунда (9.10.2012 - 13:28) Игорь_Vasinsky написал(а):
а.. ну.
Спустя 13 минут, 36 секунд (9.10.2012 - 13:42) Inkvizzz написал(а):
Fatal error: Cannot redeclare getnavigation() (previously declared in X:\home\journal.ru\www\pagination.php:30) in X:\home\journal.ru\www\pagination.php on line 147
ВОТ ВСЯ ОШИБКА
ВОТ ВСЯ ОШИБКА
Спустя 5 минут, 32 секунды (9.10.2012 - 13:47) Игорь_Vasinsky написал(а):
это весь код pagination.php ?
Спустя 1 минута, 32 секунды (9.10.2012 - 13:49) Inkvizzz написал(а):
да этой же твой код что ты делал, только я вывод таблицы внизу не делал, и данные подключения к базе соответственно поменял
Спустя 2 минуты, 6 секунд (9.10.2012 - 13:51) Игорь_Vasinsky написал(а):
я же спрашиваю в этом файле только этот код? который ты показал раньше?
Спустя 40 минут, 58 секунд (9.10.2012 - 14:32) Inkvizzz написал(а):
да
Спустя 2 минуты, 42 секунды (9.10.2012 - 14:34) Игорь_Vasinsky написал(а):
может у тя коммент просвечивают?
замени свои мета на
замени свои мета на
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Спустя 2 минуты, 47 секунд (9.10.2012 - 14:37) Inkvizzz написал(а):
заменил,но проблема в том что тут с функцией какая то ошибка я ее кидал выше, как ее то поправить??
Спустя 32 секунды (9.10.2012 - 14:38) Inkvizzz написал(а):
комменты точно нормально с ними все не просвечивают
Спустя 18 часов, 47 минут, 32 секунды (10.10.2012 - 09:25) Inkvizzz написал(а):
<?php
#Определил константы для подключения к серверу
define("HOST", "localhost");
define("USER", "root");
define("DB", "journals");
$table="sdachaprodukt";
#Соединение с сервером, выбор БД
@$link = mysql_connect(HOST, USER) or die (mysql_error());
@$selectDB = mysql_select_db(DB) or die (mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<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
############################
# Постраничная навигация #
############################
/*
аргументы:
$countStrings - integer (кол-во строк на одной странице)
$showLinks - integer (кол-во линков навигации)
$nameTable - string (имя таблицы в БД, которая постранично выводится)
*/
function getNavigation($countStrings, $showLinks, $table)
{
#Подсчёт строк в таблице
$queryForCount = mysql_query("SELECT * FROM `".$table."`");
$count_rows = mysql_num_rows($queryForCount);
#Подсчёт кол-ва страниц
$allPages = ceil($count_rows/$countStrings);
echo $allPages;
#Проверяем на какой странице мы находимся и задаём предел для вывода из БД
global $start;
if(!$_GET['page'] OR $_GET['page'] == 1)
{
$page = 1;
$start = 0;
}
else
{
$page = (int)$_GET['page'];
$start = ($page * $countStrings) - $countStrings;
}
$end = $start + $countStrings;
#Если мы ушли далеко от первой страницы - то выведем для удобства "Gthdfz"
if($page > ceil($showLinks/2))
{
echo $firstPage = "<a class='page' href='?page=1'>Первая</a> ";
}
#Проверяем - необходима ли ссылка "Предыдущая"
if($page != 1 AND $page > 1)
{
$prev = $page - 1;
echo $prevPage = "<a class='page' href='?page=".$prev."'>Предыдущая</a> ";
}
#Этот кусок выводит навигацию если общее кол-во страниц и кол-во показываемых ссылок совпадает
if($showLinks >= $allPages)
{
for($i = 1; $i <= $allPages; $i++)
{
if($i == $page)
{
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 <= ceil($showLinks/2))
{
for($i = 1; $i < $showLinks + 1; $i++)
{
if($i == $page)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Строит навигацию когда страница между предыдущем условием и следующим (СЕРЕДИНА)
if($page - ceil($showLinks/2) > 0 AND $page <= $allPages - $showLinks)
{
for($i = $page - ceil($showLinks/2 - 1); $i <= $page + ($showLinks/2); $i++)
{
if($i == $page)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Строит навигацию для последних SHOWLINKS ссылок
if($page > $allPages - $showLinks AND $page > ceil($showLinks/2))
{
for($i = ($allPages - $showLinks) + 1; $i <= $allPages; $i++)
{
if($i == $page)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
}
#Проверяем - необходима ли ссылка "Следующий"
if($page != $allPages AND $page < $allPages)
{
$next = $page + 1;
echo $nextPage = " <a class='page' href='?page=".$next."'>Следущая</a>";
}
#Если мы ещё далеко от последней страницы, то выведем "Последняя"
if($page <= $allPages - $showLinks)
{
echo $lastPage = " <a class='page' href='?page=".$allPages."'>Последняя</a>";
}
}
########################################
# ВЫЗОВ ФУНКЦИИ (ПОСТРОЕНИЕ НАВИГАЦИИ) #
########################################
#getNavigation($countStrings, $showLinks, $nameTable)
#$countStrings - integer (кол-во строк на одной странице)
#$showLinks - integer (кол-во линков навигации)
#$nameTable - string (имя таблицы в БД, которая постранично выводится)
#При вызове - LIMIT ".$start.", 3"), где 3 - $countStrings
#$query = mysql_query("SELECT * FROM `test` ORDER BY `id` ASC LIMIT ".(int)$start.", 10");
getNavigation(10, 11, "$table");
#################
# ВЫВОД ТАБЛИЦЫ #
#################
mysql_close($link);
?>
</body>
</html>
Но тут проблема мне кажется не в самом коде
подключаю его через include_once,сначала я думаю надо объяснить структуру подключения! На главной странице у меня через iframe вставлена другая php страница которая выводит данные из базы в таблицу,вот на той странице мне нужно чтобы таблицу резало например 10 записей выводит и сразу раз остальное на страницу под номер 2! Подключаю туда pagination и даже в адресную строку переменная не передается
Спустя 4 минуты, 25 секунд (10.10.2012 - 09:30) Игорь_Vasinsky написал(а):
Цитата |
На главной странице у меня через iframe вставлена другая php страница |
ну и используй пагинатор в этой страницу.
тока в URL не попадёт, т.к. iframe в сессии хранить врядли получиться, т.к. iframe
зачем те в iframe выводить?
Спустя 4 минуты, 30 секунд (10.10.2012 - 09:34) Inkvizzz написал(а):
ну у меня на главной слева блок ссылок а справа должна быть другая страница с скриптом в другом блоке,а кроме как фрейма как ее вывести?
P.S. Я и использую пагинатор в эту страницу
P.S. Я и использую пагинатор в эту страницу
Спустя 12 минут, 33 секунды (10.10.2012 - 09:47) Inkvizzz написал(а):
о блин я тупой))) сорри убрал iframe стал передавать переменные но страницу все равно не разбивает все на одну выводит! В чем проблема?
Спустя 10 минут, 33 секунды (10.10.2012 - 09:57) Игорь_Vasinsky написал(а):
ajax
План такой.
твой фрейм мы заменим динамическим <div>
работать будет так:
есть твоя страница - главная (у которой блок слева с ссылками - справа "iframe")
iframe заменяем на div id="dinamic_content"
далее - создай страницу dinamic_content.php
в которой подключи config.php для соединения с БД, функцию пагинатора и всё остальное что те нужно
Потом работает стандартная функция AJAX
теперь - если ранее у тя что то загружалось в iframe - я так понимаю была обычная ссылка с target, то сейчас нужно повесить на эту ссылку - эту функцию
Чтобы клик грузил выборку - первую выборку пагинации (страница 1)
так же нужно повесить эту функцию на все ссылки навигации пагинатора - типа:
Вот к такому виду привести
либо написать regexp и всё пучком заменить в
План такой.
твой фрейм мы заменим динамическим <div>
работать будет так:
есть твоя страница - главная (у которой блок слева с ссылками - справа "iframe")
iframe заменяем на div id="dinamic_content"
далее - создай страницу dinamic_content.php
в которой подключи config.php для соединения с БД, функцию пагинатора и всё остальное что те нужно
Потом работает стандартная функция AJAX
<script type="text/javascript">
function ajaxcl (page) {
var xmlhttp;
if ( window.XMLHttpRequest ) {
// IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// IE6, IE5
xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" );
}
// обрабатываем ответ
xmlhttp.onreadystatechange = function () {
// если запрос к скрипту удачный
if ( xmlhttp.readyState == 4 ) {
document.getElementById("dinamic_content").innerHTML=xmlhttp.responseText;
}
}
// отправляем запрос
//Тут в GET можно передать множество парасетров, например таблица БД из которой выборка - я показываю только номер страниц - page
xmlhttp.open ( "GET", "dinamic_content.php?page="+page+"&rand="+Math.random(), true );
xmlhttp.send ();
}
</script>
теперь - если ранее у тя что то загружалось в iframe - я так понимаю была обычная ссылка с target, то сейчас нужно повесить на эту ссылку - эту функцию
Чтобы клик грузил выборку - первую выборку пагинации (страница 1)
<a onclick="ajaxcl (1); return false" href="....">Click me</a>
так же нужно повесить эту функцию на все ссылки навигации пагинатора - типа:
Вот к такому виду привести
<a onclick="ajaxcl (".$i."); return false" class='page' href='?page=".$i."'>".$i."</a>
либо написать regexp и всё пучком заменить в
getNavigation(10, 11, "$table");
Спустя 1 минута, 52 секунды (10.10.2012 - 09:59) Игорь_Vasinsky написал(а):
Спустя 37 минут, 5 секунд (10.10.2012 - 10:36) Inkvizzz написал(а):
Не,чувак ты не правильно меня понял,я убрал айфрейм и в блок вставил пхп инклуд и файл с подрузкой данных из базы,все ок работает! Пагинатор теперь передает переменные в адресную строку! Но беда в том,что пагинатор не делит страницу то есть нужно вывести 10 элементов а он выводит все на одну страницу,это как решить можно?
Спустя 12 минут, 19 секунд (10.10.2012 - 10:49) Игорь_Vasinsky написал(а):
Внизу листинга функции есть доп. комментарий
#При вызове - LIMIT ".$start.",3") , где 3-$countStrings
#Пример $query=mysql_query("SELECT*FROM `sdachaprodukt` ORDER BY `id` ASC LIMIT ".(int)$start.",3");
Спустя 25 секунд (10.10.2012 - 10:49) Inkvizzz написал(а):
и что с ним делать?
Спустя 3 минуты, 9 секунд (10.10.2012 - 10:52) Игорь_Vasinsky написал(а):
ты когда из бд выборку делаешь - делай её с лимитом
# - кстати - это коммент - он ни как в выводе не отобразиться.
# - кстати - это коммент - он ни как в выводе не отобразиться.
$query=mysql_query("SELECT*FROM `sdachaprodukt` ORDER BY `id` ASC LIMIT ".(int)$start.",3");
if(mysql_num_rows($query))
{
while($row = mysql_fetch_assoc($query)){
//.....
}
}
Спустя 19 минут, 25 секунд (10.10.2012 - 11:12) Игорь_Vasinsky написал(а):
$query=mysql_query("SELECT*FROM `sdachaprodukt` ORDER BY `id` ASC LIMIT ".(int)$start.",3");
if(mysql_num_rows($query))
{
while($row = mysql_fetch_assoc($query)){
//Что такое массив знаешь? индексный или ассоциативный?
//так вот mysql_fetch_assoc - вернёт строку из БД в виде ассоциативного
//массива
//Глянуть на него можно так
//echo '<pre>' . print_r($row,1) . '</pre>';
//Видно, что в качестве ключей массива используются имена полей (столбцов)
echo $row['имя-столбца'];
echo $row['имя-следующего-столбца и т.д.'];
}
}
Цитата |
ORDER BY `id` ASC LIMIT ".(int)$start.",3" |
будет произведена выборка из таблицы БД начиная со строки $start (зависит от $_GET['page']) - размером в 3 строки
$start - на каждой странице пересчитывается - тем самым и полуачется выборка "кусками"
Спустя 32 минуты, 54 секунды (10.10.2012 - 11:45) Игорь_Vasinsky написал(а):
ну, как самочувчтвие?
Спустя 5 минут, 55 секунд (10.10.2012 - 11:50) Inkvizzz написал(а):
так он мне просто выводит значения которые забиты в этих столбцах и все
Спустя 2 минуты, 32 секунды (10.10.2012 - 11:53) Игорь_Vasinsky написал(а):
Цитата |
echo $row['имя-столбца']; echo $row['имя-следующего-столбца и т.д.']; |
так тыоберни в html как те надо.
ну счас то выборка кусками проходит?
Спустя 55 секунд (10.10.2012 - 11:54) Inkvizzz написал(а):
нет выборка не проходит вообще, а через echo $row['data']; он тупо выводит значение из базы и все...
Спустя 1 минута, 50 секунд (10.10.2012 - 11:56) Inkvizzz написал(а):
И вывод с таблицы у меня в другом файле вообще написан вот в него инклудом я и вставляю пагинатор
Спустя 1 минута, 23 секунды (10.10.2012 - 11:57) Игорь_Vasinsky написал(а):
пагинатор перенеси в файл с выборкой
Спустя 13 минут, 36 секунд (10.10.2012 - 12:11) Inkvizzz написал(а):
так он и так туда инклудом вставлен
Спустя 15 минут, 20 секунд (10.10.2012 - 12:26) Inkvizzz написал(а):
<?php
include("connect.php");
$tabl="sdachaprodukt";
//$sql="SELECT*FROM $tabl ORDER BY brigadir";
$query = mysql_query("SELECT * FROM `$tabl` ORDER BY `id` ASC LIMIT ".(int)$start.", 8");
//$result=mysql_query($sql);
//if (!$result) {
//echo "Данные не считаны.Ошибка". mysql_error();
// }
//else {
//echo"Ваши данные успешно считаны";
// }
echo "<table border=1 width=990px>";
echo "<tr><td>Дата</td><td>№ партии</td><td>Марка</td><td>Кол-во</td><td>Примечание</td> <td>Кол-во продукции<br>безупр.кач-ва</td>
<td>Бригадир</td></tr>";
if(mysql_num_rows($query)) {
while ($row=mysql_fetch_assoc($query)){
echo '<tr><td>'.$row['data'].'</td><td>'.$row['nomer'].'</td><td>'.$row['marka'].'</td><td>'.$row['kv'].'</td><td>'.$row['primechanie'].'</td><td>'.$row['kolvoprodukt'].'</td>
<td>'.$row['brigadir'].'</td></tr>';
include_once("pagination.php");
}
}
echo "</table>";
?>
Вот код файла который выводит информацию из базы на экран! Поменял в нем SQL запросы на те что ты говорил, теперь выводит нужное кол-во строк которое задам,но проблема в том что он выводит 8 строк на 1 страницу, нажимаю переход на 2 страницу и там висят все теже строки с 1 страницы!
Спустя 1 минута, 51 секунда (10.10.2012 - 12:28) Игорь_Vasinsky написал(а):
а когда переходишь на 2ю страницу у тя в адресной строке какой url выресовывается?
Спустя 1 минута, 9 секунд (10.10.2012 - 12:29) Inkvizzz написал(а):
ну да ?page=2 вырисовывает вот так но страница не меняется нифига
Спустя 3 минуты, 26 секунд (10.10.2012 - 12:32) Игорь_Vasinsky написал(а):
добавь ещё срочку
перейди по 3м страницам - что эта строка нарисует?
echo "SELECT*FROM `sdachaprodukt` ORDER BY `id` ASC LIMIT ".(int)$start.",3";
перейди по 3м страницам - что эта строка нарисует?
Спустя 1 минута, 41 секунда (10.10.2012 - 12:34) Inkvizzz написал(а):
SELECT*FROM `sdachaprodukt` ORDER BY `id` ASC LIMIT 0,3
вот что эта строка выводит а при переключении на 3 страницу в адресной строке соответственно ?page=3
вот что эта строка выводит а при переключении на 3 страницу в адресной строке соответственно ?page=3
Спустя 4 минуты, 14 секунд (10.10.2012 - 12:38) Игорь_Vasinsky написал(а):
ты как getNavigation() вызываешь? покажи
Спустя 1 минута, 15 секунд (10.10.2012 - 12:40) Inkvizzz написал(а):
<?php
#Определил константы для подключения к серверу
define("HOST", "localhost");
define("USER", "root");
define("DB", "journals");
$table="sdachaprodukt";
#Соединение с сервером, выбор БД
@$link = mysql_connect(HOST, USER) or die (mysql_error());
@$selectDB = mysql_select_db(DB) or die (mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<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
############################
# Постраничная навигация #
############################
/*
аргументы:
$countStrings - integer (кол-во строк на одной странице)
$showLinks - integer (кол-во линков навигации)
$nameTable - string (имя таблицы в БД, которая постранично выводится)
*/
function getNavigation($countStrings, $showLinks, $table)
{
#Подсчёт строк в таблице
$queryForCount = mysql_query("SELECT * FROM `".$table."`");
$count_rows = mysql_num_rows($queryForCount);
#Подсчёт кол-ва страниц
$allPages = ceil($count_rows/$countStrings);
#Проверяем на какой странице мы находимся и задаём предел для вывода из БД
global $start;
if(!$_GET['page'] OR $_GET['page'] == 1)
{
$page = 1;
$start = 0;
}
else
{
$page = (int)$_GET['page'];
$start = ($page * $countStrings) - $countStrings;
}
$end = $start + $countStrings;
#Если мы ушли далеко от первой страницы - то выведем для удобства "Gthdfz"
if($page > ceil($showLinks/2))
{
echo $firstPage = "<a class='page' href='?page=1'>Первая</a> ";
}
#Проверяем - необходима ли ссылка "Предыдущая"
if($page != 1 AND $page > 1)
{
$prev = $page - 1;
echo $prevPage = "<a class='page' href='?page=".$prev."'>Предыдущая</a> ";
}
#Этот кусок выводит навигацию если общее кол-во страниц и кол-во показываемых ссылок совпадает
if($showLinks >= $allPages)
{
for($i = 1; $i <= $allPages; $i++)
{
if($i == $page)
{
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 <= ceil($showLinks/2))
{
for($i = 1; $i < $showLinks + 1; $i++)
{
if($i == $page)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Строит навигацию когда страница между предыдущем условием и следующим (СЕРЕДИНА)
if($page - ceil($showLinks/2) > 0 AND $page <= $allPages - $showLinks)
{
for($i = $page - ceil($showLinks/2 - 1); $i <= $page + ($showLinks/2); $i++)
{
if($i == $page)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
#Строит навигацию для последних SHOWLINKS ссылок
if($page > $allPages - $showLinks AND $page > ceil($showLinks/2))
{
for($i = ($allPages - $showLinks) + 1; $i <= $allPages; $i++)
{
if($i == $page)
{
echo $navigation = " <strong class='page'>".$i."</strong>";
}
else
{
echo $navigation = " <a class='page' href='?page=".$i."'>".$i."</a>";
}
}
}
}
#Проверяем - необходима ли ссылка "Следующий"
if($page != $allPages AND $page < $allPages)
{
$next = $page + 1;
echo $nextPage = " <a class='page' href='?page=".$next."'>Следущая</a>";
}
#Если мы ещё далеко от последней страницы, то выведем "Последняя"
if($page <= $allPages - $showLinks)
{
echo $lastPage = " <a class='page' href='?page=".$allPages."'>Последняя</a>";
}
}
########################################
# ВЫЗОВ ФУНКЦИИ (ПОСТРОЕНИЕ НАВИГАЦИИ) #
########################################
#getNavigation($countStrings, $showLinks, $nameTable)
#$countStrings - integer (кол-во строк на одной странице)
#$showLinks - integer (кол-во линков навигации)
#$nameTable - string (имя таблицы в БД, которая постранично выводится)
#$query = mysql_query("SELECT * FROM `$table` ORDER BY `id` ASC LIMIT ".(int)$start.", 3");
#if(mysql_num_rows($query))
#{
# while($row=mysql_fetch_assoc($query)){
#}
#}
getNavigation(3, 11, "$table");
mysql_close($link);
?>
</body>
</html>
ВОТ полный код пагинатора который щас у меня
Спустя 2 минуты, 39 секунд (10.10.2012 - 12:42) Игорь_Vasinsky написал(а):
сайт на паблике? кинь линк в ЛС
Спустя 3 минуты, 59 секунд (10.10.2012 - 12:46) Inkvizzz написал(а):
Сайт на локальном сервере
Спустя 3 минуты, 48 секунд (10.10.2012 - 12:50) Игорь_Vasinsky написал(а):
а где ты выборку делаешь то?
Цитата |
#$query = mysql_query("SELECT * FROM `$table` ORDER BY `id` ASC LIMIT ".(int)$start.", 3"); |
Спустя 1 минута, 38 секунд (10.10.2012 - 12:52) Inkvizzz написал(а):
ну в файле который выводит данные из базы на экран первый код что я тебе скидывал
Спустя 3 минуты, 9 секунд (10.10.2012 - 12:55) Игорь_Vasinsky написал(а):
Цитата |
$query = mysql_query("SELECT * FROM `$tabl` ORDER BY `id` ASC LIMIT ".(int)$start.", 8"); |
Цитата |
getNavigation(3, 11, "$table"); |
getNavigation(8, 11, $table);
Спустя 6 минут, 53 секунды (10.10.2012 - 13:02) Inkvizzz написал(а):
ничего не поменялось он выводит первые 8 на 1 страницу,а остальные пропадают безследно и при нажатии на 2 страницу он все равно показывает первую! Напиши в личку скайп давай я тебе архив с базой и сайтом скину?