Эта тема на forum.dklab.ru


solomusic: как исправить постраничный вывод?
у меня номерация идет не по порядку, и некоторых номеров вообще нет, ибо удаляется. А выводиться страниц на много больше чем нужно... Вот к примеру есть информации на 5 страницы с постраничным выводом по 20.
Последний номер 299 и 1. Естественно всех 299 строчек нету. А выводит страниц на все 299. Как это исправить??? вот весь код:

ini_set('display_errors',1);
Error_Reporting(E_ALL & ~E_NOTICE);
// Устанавливаем соединение с сервером MySQL
require_once("config.php");

// Элемент постраничной навигация
if(empty($_GET['page'])) $page = 1;
else $page = $_GET['page'];

// Число ссылок в постраничной навигации
$page_link = 3;
// Число позиций на странице
$pnumber = 20;
// Постраничная навигация
$first = ($page - 1)*$pnumber;
// Формируем и выполняем SQL-запросы
$query = "SELECT COUNT(*) FROM dob";
$num = mysql_query($query);
if(!$num) exit("Ошибка при обращении к таблице");
// Ввыводим ссылки на другие страницы
$total = mysql_result($num,0);

// Формируем SQL-запрос на извлечение записей
$query = "SELECT * FROM dob WHERE `type` LIKE 'aa' ORDER BY id desc LIMIT $first, $pnumber ";
$dmn = mysql_query($query);
if(!$dmn) exit("Ошибка при обращении к таблице");
// Если имеется хотя бы одна запись - выводим таблицу
if(mysql_num_rows($dmn) > 0)
{
echo "<TABLE cellspacing='0' cellpadding='0' width='100%' bgcolor='#458ea0' border='0'>
<TBODY>
<TR>
<TD>
<TABLE cellspacing='1' cellpadding='2' width='100%' border='0'>
<TBODY>
<TR>
<TD align='center'><FONT size='2'><B>№</B></FONT></TD>
<TD width='19%' align='center'><FONT color='#ffffff' size='2'><B>район</B></FONT></TD>
<TD width='19%' align='center'><FONT color='#ffffff' size='2'><B>улица</B></FONT></TD>
<TD width='8%' align='center'><FONT color='#ffffff' size='2'><B>этаж</B></FONT></TD>
<TD width='20%' align='center'><FONT color='#ffffff' size='2'><B>метраж/м.кв.</B></FONT></TD>
<TD width='15%' align='center'><FONT color='#ffffff' size='2'><B>цена</B></FONT></TD>
<TD width='17%' align='center'><FONT color='#ffffff' size='2'><B>телефон</B></FONT></TD>
<TD width='40%' align='center'><FONT color='#ffffff' size='2'><B>подробно</B></FONT></TD>
<TD width='20%' align='center'><FONT color='#ffffff' size='2'><B>дата</B></FONT></TD>
</TR>";
while($res=mysql_fetch_array($dmn))
{
echo "<TR bgcolor=#FLEFE5>";
echo "<TD ALIGN=CENTER>".$res['id']."</TD>";
echo "<TD ALIGN=CENTER><B><i>".$res['area']."</i></B></TD>";
echo "<TD ALIGN=CENTER>".$res['street']."</TD>";
echo "<TD ALIGN=CENTER>".$res['floor']."</TD>";
echo "<TD ALIGN=CENTER>".$res['metric']."</TD>";
echo "<TD ALIGN=CENTER>".$res['price']." ".$res['val']."</TD>";
echo "<TD ALIGN=CENTER>".$res['phone']."</TD>";
echo "<TD width='30%' ALIGN='CENTER'><a href='#' onclick='win(\"" . htmlentities($res['detail'], ENT_QUOTES, "cp1251") . "\", \"" . htmlentities($res['street'], ENT_QUOTES, "cp1251") . "\", \"" . htmlentities($res['phone'], ENT_QUOTES, "cp1251") . "\",\"".htmlentities($res['img'], ENT_QUOTES, "cp1251")."\")'>открыть</a></TD> ";
echo "<TD ALIGN=CENTER>".$res['date']."</TD>";
echo "</TR>";
}
echo "<TR>
<TD align='center'></TD>
<TD align='center'></TD>
<TD align='center'></TD>
<TD align='center'></TD>
<TD align='center'></TD>
<TD align='center'></TD>
<TD align='center'></TD>
<TD align='center'></TD>
</TR>
</TBODY>
</TABLE>

</TD>
</TR>
</TBODY>
</TABLE> ";
}
// Постраничная навигация
pager($page, $total, $pnumber, $page_link, "&order=$_GET[order]");

// Функция постраничной навигации
// $page - текущая страница, передаётся через GET-параметр page
// $total - общее число позиций в базе данных
// $pnumber - число позиций на одной странице
// $page_link - число ссылок слева и справа от выбранной страницы
function pager($page, $total, $pnumber, $page_link, $parameters)
{
// Вычисляем число страниц в системе
$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number != 0) $number++;
// Проверяем есть ли ссылки слева
echo "Страницы:";
if($page - $page_link > 1)
{
echo "<a href=$_SERVER[PHP_SELF]?page=1{$parameters}> <nobr>[1-$pnumber]</nobr></a>&nbsp;<em class=currentpage><nobr>&nbsp;...&nbsp;</nobr> </em>&nbsp;";
// Есть
for($i = $page - $page_link; $i<$page; $i++)
{
echo "&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
}
}
else
{
// Нет
for($i = 1; $i<$page; $i++)
{
echo "&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
}
}
// Проверяем есть ли ссылки справа
if($page + $page_link < $number)
{
// Есть
for($i = $page; $i<=$page + $page_link; $i++)
{
if($page == $i)
echo "<em class=currentpage><nobr>&nbsp;[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]&nbsp;</nobr> </em>";
else
echo "&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
}
echo "<em class=currentpage><nobr>&nbsp;...&nbsp;</nobr> </em>&nbsp;<a href=$_SERVER[PHP_SELF]?page=$number{$parameters}> <nobr>[".(($number - 1)*$pnumber + 1)."-$total]</nobr></a>&nbsp;";
}
else
{
// Нет
for($i = $page; $i<=$number; $i++)
{
if($number == $i)
{
if($page == $i)
echo "<em class=currentpage><nobr>&nbsp;[".(($i - 1)*$pnumber + 1)."-$total]&nbsp;</nobr></em>";
else
echo "&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i - 1)*$pnumber + 1)."-$total]</a>&nbsp;";
}
else
{
if($page == $i)
echo "<em class=currentpage><nobr>&nbsp;[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]&nbsp;</nobr> </em>";
else
echo "&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
}
}
}
echo "<br><br>";
}
помогите кто чем может.... ;))
Inoy:
$query = "SELECT COUNT(*) FROM dob";
заменить на
$query = "SELECT COUNT(*) FROM dob WHERE `type` LIKE 'aa'";

Эта тема на forum.dklab.ru