Это происходит из-за того, что все ссылки имеют вид
<a href='../page.php?page=1&key=$key&sort=$sort'>и каждый раз при переходе изменяется переменная key, что в свою очередь изменяет значение переменной sort. (строки 31-49 кода).
Подскажите, как можно организовать нормальную работу программы.
Зараннее спасибо.
Ниже исходный код программы:
<?php
// запрещаем вывод предупреждений
Error_Reporting(E_ALL & ~E_NOTICE);
// Устанавливаем соединение с базой данных
include "connect.php";
// Переменная хранит число сообщений выводимых на станице
$num = 10;
// Извлекаем из URL текущую страницу
$page = mysql_real_escape_string($_GET['page']);
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM book")or die(mysql_error());
$posts = mysql_result($result, 0);
echo '<b class="zagolovok">Всего в библиотеке '.$posts.' кн.</b>';
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
$finish = $posts - $start;
// Выбираем $num сообщений начиная с номера $start
$key_array = array('id','name','avtor');
$sort_array = array('ASC','DESC');
if (isset($_GET['key']))
{
$key=mysql_real_escape_string($_GET['key']);
$sort=mysql_real_escape_string($_GET['sort']);
}
else
{
$key='id';
$sort='DESC';
}
if($sort=='DESC')
{
$sort='ASC';
}
else
{
$sort='DESC';
}
function vid_sort($k){
global $key, $sort;
if($k==$key)
{
if($sort=='ASC')
{
$str = "<img src='sort-az.gif' border=0>";
}
else
{
$str = "<img src='sort-za.gif' border=0>";
}// вместо "up" и "doun" url картинки
}
else
{
$str="";
}
return $str;
}
$result = mysql_query("SELECT * FROM book ORDER BY $key $sort LIMIT $start, $num")or die(mysql_error());
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
echo "<table>";
echo "<tr bgcolor=#CDAC7F>
<td width=5% valign=middle align='center'><b><a class='new22' href=\"page.php?key=id&sort=$sort\"># ".vid_sort("id")."</b></td>
<td width=40% valign=middle align='center'><b><a class='new22' href=\"page.php?key=name&sort=$sort\">Название публикации ".vid_sort("name")."</b></td>
<td width=27% valign=middle align='center'><b><a class='new22' href=\"page.php?key=avtor&sort=$sort\">Автор ".vid_sort("avtor")."</b></td>
<td width=3% valign=middle align='center'><b>Год изд.</b></td>
<td width=15% valign=middle align='center'><b>Дата добавления</b></td>
</tr>";
if ($finish < $num)
{
for($i = 0; $i < $finish; $i++)
{
echo "<tr bgcolor=#FAFAD2>
<td width=7%>".$postrow[$i]['id']."</td>
<td width=47%><a href='info.php?id=".$postrow[$i]['id']."'>".$postrow[$i]['name']."</a></td>
<td width=30%>".$postrow[$i]['avtor']."</td>
<td width=5% align='center'>".$postrow[$i]['god']."</td>
<td width=11%>".$postrow[$i]['data']."</td>
</tr>";
}
}
else
{
for($i = 0; $i < $num; $i++)
{
echo "<tr bgcolor=#FAFAD2>
<td width=7%>".$postrow[$i]['id']."</td>
<td width=47%><a href='info.php?id=".$postrow[$i]['id']."'>".$postrow[$i]['name']."</a></td>
<td width=30%>".$postrow[$i]['avtor']."</td>
<td width=5% align='center'>".$postrow[$i]['god']."</td>
<td width=11%>".$postrow[$i]['data']."</td>
</tr>";
}
}
echo "</table>";
echo '<b class="zagolovok" >Страницы:</b> ';
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = " <a href='../page.php?page=1&key=$key&sort=$sort'><<</a> <a href='../page.php?page=" . ($page - 1) . "&key=$key&sort=$sort'><</a> ";
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = " <a href='../page.php?page=" . ($page + 1) . "&key=$key&sort=$sort'>></a> <a href='../page.php?page=" . $total . "&key=$key&sort=$sort'>>></a> ";
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = "<a href='../page.php?page=" . ($page - 2) . "&key=$key&sort=$sort'>" . ($page - 2) . "</a> | ";
if($page - 1 > 0) $page2left = "<a href='../page.php?page=" . ($page - 1) . "&key=$key&sort=$sort'>" . ($page - 1) . "</a> | ";
if($page + 2 <= $total) $page2right = " | <a href='../page.php?page=" . ($page + 2) . "&key=$key&sort=$sort'>" . ($page + 2) ."</a>";
if($page + 1 <= $total) $page1right = " | <a href='../page.php?page=" . ($page + 1) . "&key=$key&sort=$sort'>" . ($page + 1) ."</a>";
// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>