Mikhael-SM
22.07.2005, 22:30
Люди, помогите разобраться:
Есть страница, из базы на нее воводится по N записей.
Я прикрутил к ней сортировку данных с помощью такой не хитрой функции:
Код:
function convertorderbyin($orderby) {
if ($orderby == "cnameA") $orderby = "cname ASC";
if ($orderby == "cdescA") $orderby = "cdescription ASC";
if ($orderby == "cnameD") $orderby = "cname DESC";
if ($orderby == "cdescD") $orderby = "cdescription DESC";
if ($orderby == "snameA") $orderby = "sname ASC";
if ($orderby == "sdescA") $orderby = "sdescription ASC";
if ($orderby == "snameD") $orderby = "sname DESC";
if ($orderby == "sdescD") $orderby = "sdescription DESC";
if ($orderby == "slocA") $orderby = "slocation ASC";
if ($orderby == "slocD") $orderby = "slocation DESC";
return $orderby;
}
$orderby = convertorderbyin($orderby);
Но появилась проблема, что после перехода по ссылкам на следующую страницу (следующие N записей из базы) значение $orderby не сохраняется, сортировка съезжает!
Что делать, чтобы сортировалось раз и до конца????
запрос из базы такой:
Код:
$sql_pn = "SELECT * FROM ".$prefix."_csservers ORDER BY $orderby LIMIT $offset, $snum";
$offset и $snum собственно порция данных на страницу.
На страницы разбиваю с помощью Page Numbers (привожу код)
global $prefix, $db, $pagenum, $snum, $orderby, $orderin, $module_name;
$snum = 30;
Выборка $num записей из базы и их сортировка
if ($pagenum == "") { $pagenum = 1 ; }
$offset = ($pagenum-1) * $snum ;
$sql_pn = "SELECT * FROM ".$prefix."_csservers ORDER BY $orderby LIMIT $offset, $snum";
$result_pn = $db->sql_query($sql_pn);
.....
Так формирую ссылки
"._SDESCRIPTION." (<a href=\"modules.php?name=$module_name&go=slist&orderby=sdescA\">A</a>\<a href=\"modules.php?name=$module_name&go=slist&orderby=sdescD\">D</a>)
.....
# Fetch ROW
while ($row = $db->sql_fetchrow($result_pn)) {
$sname = $row[sname];
$sdescription = $row[sdescription];
$slocation = $row[slocation];
$order = 'orderby=';
$order = $order . $orderby;
#START Page Numbers
$sql_pn = "SELECT sid FROM ".$prefix."_csservers";
$result_pn = $db->sql_query($sql_pn);
$numservers = $db->sql_numrows($result_pn);
$numpages = ceil($numservers / $snum);
if ($numpages > 1) {
opentable();
echo "<center>" ;
if ($pagenum > 1) {
$prevpage = $pagenum - 1 ;
$leftarrow = "images/left.gif" ;
Ссылки на остальные страницы:
echo "<a href=\"modules.php?name=Games&go=slist&pagenum=$prevpage$order\">";
echo "<img src=\"$leftarrow\" align=\"absmiddle\" border=\"0\" hspace=\"10\"></a>";
}
for ($i=1; $i < $numpages+1; $i++) {
if ($i == $pagenum) {
echo "<b>$i</b>";
}
else {
$pagelink = 10;
if (($i > $pagenum) AND ($i < $pagenum+$pagelink) OR ($i < $pagenum) AND ($i > $pagenum-$pagelink)) {
echo " <a href=\"modules.php?name=Games&go=slist&pagenum=$i$order\">$i</a> ";
}
if (($i == $numpages) AND ($pagenum < $numpages-$pagelink)){
echo "... <a href=\"modules.php?name=Games&go=slist&pagenum=$i$order\">$i</a>";
}
if (($i == 1) AND ($pagenum > 1+$pagelink)){
echo "<a href=\"modules.php?name=Games&go=slist&pagenum=$i$order\">$i</a> ...";
}
}
}
if ($pagenum < $numpages) {
$nextpage = $pagenum + 1 ;
$rightarrow = "images/right.gif" ;
echo "<a href=\"modules.php?name=Games&go=slist&pagenum=$nextpage$order\">";
echo "<img src=\"$rightarrow\" align=\"absmiddle\" border=\"0\" hspace=\"10\"></a>";
}
...
#END Page Numbers
Есть страница, из базы на нее воводится по N записей.
Я прикрутил к ней сортировку данных с помощью такой не хитрой функции:
Код:
function convertorderbyin($orderby) {
if ($orderby == "cnameA") $orderby = "cname ASC";
if ($orderby == "cdescA") $orderby = "cdescription ASC";
if ($orderby == "cnameD") $orderby = "cname DESC";
if ($orderby == "cdescD") $orderby = "cdescription DESC";
if ($orderby == "snameA") $orderby = "sname ASC";
if ($orderby == "sdescA") $orderby = "sdescription ASC";
if ($orderby == "snameD") $orderby = "sname DESC";
if ($orderby == "sdescD") $orderby = "sdescription DESC";
if ($orderby == "slocA") $orderby = "slocation ASC";
if ($orderby == "slocD") $orderby = "slocation DESC";
return $orderby;
}
$orderby = convertorderbyin($orderby);
Но появилась проблема, что после перехода по ссылкам на следующую страницу (следующие N записей из базы) значение $orderby не сохраняется, сортировка съезжает!
Что делать, чтобы сортировалось раз и до конца????
запрос из базы такой:
Код:
$sql_pn = "SELECT * FROM ".$prefix."_csservers ORDER BY $orderby LIMIT $offset, $snum";
$offset и $snum собственно порция данных на страницу.
На страницы разбиваю с помощью Page Numbers (привожу код)
global $prefix, $db, $pagenum, $snum, $orderby, $orderin, $module_name;
$snum = 30;
Выборка $num записей из базы и их сортировка
if ($pagenum == "") { $pagenum = 1 ; }
$offset = ($pagenum-1) * $snum ;
$sql_pn = "SELECT * FROM ".$prefix."_csservers ORDER BY $orderby LIMIT $offset, $snum";
$result_pn = $db->sql_query($sql_pn);
.....
Так формирую ссылки
"._SDESCRIPTION." (<a href=\"modules.php?name=$module_name&go=slist&orderby=sdescA\">A</a>\<a href=\"modules.php?name=$module_name&go=slist&orderby=sdescD\">D</a>)
.....
# Fetch ROW
while ($row = $db->sql_fetchrow($result_pn)) {
$sname = $row[sname];
$sdescription = $row[sdescription];
$slocation = $row[slocation];
$order = 'orderby=';
$order = $order . $orderby;
#START Page Numbers
$sql_pn = "SELECT sid FROM ".$prefix."_csservers";
$result_pn = $db->sql_query($sql_pn);
$numservers = $db->sql_numrows($result_pn);
$numpages = ceil($numservers / $snum);
if ($numpages > 1) {
opentable();
echo "<center>" ;
if ($pagenum > 1) {
$prevpage = $pagenum - 1 ;
$leftarrow = "images/left.gif" ;
Ссылки на остальные страницы:
echo "<a href=\"modules.php?name=Games&go=slist&pagenum=$prevpage$order\">";
echo "<img src=\"$leftarrow\" align=\"absmiddle\" border=\"0\" hspace=\"10\"></a>";
}
for ($i=1; $i < $numpages+1; $i++) {
if ($i == $pagenum) {
echo "<b>$i</b>";
}
else {
$pagelink = 10;
if (($i > $pagenum) AND ($i < $pagenum+$pagelink) OR ($i < $pagenum) AND ($i > $pagenum-$pagelink)) {
echo " <a href=\"modules.php?name=Games&go=slist&pagenum=$i$order\">$i</a> ";
}
if (($i == $numpages) AND ($pagenum < $numpages-$pagelink)){
echo "... <a href=\"modules.php?name=Games&go=slist&pagenum=$i$order\">$i</a>";
}
if (($i == 1) AND ($pagenum > 1+$pagelink)){
echo "<a href=\"modules.php?name=Games&go=slist&pagenum=$i$order\">$i</a> ...";
}
}
}
if ($pagenum < $numpages) {
$nextpage = $pagenum + 1 ;
$rightarrow = "images/right.gif" ;
echo "<a href=\"modules.php?name=Games&go=slist&pagenum=$nextpage$order\">";
echo "<img src=\"$rightarrow\" align=\"absmiddle\" border=\"0\" hspace=\"10\"></a>";
}
...
#END Page Numbers