Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Постраничный вывод: проблема


Автор: Lloyd 22.2.2004, 16:21
Использовал для постраничного вывода функцию с этого форума
У она меня выгдядит следующим образом:

Код

// функция разбивки сраниц

function pages_list($query, $page = 0, $sortcolumn = "", $sort = "DESC", $ignoreparameters = "", $resultsperpage = 20, $scriptname = "") {

global $start, $HTTP_GLOBAL_VARS;
$tpages = '';
$vars = '';
if (!$scriptname || ($scriptname == "")) $scriptname = $HTTP_GLOBAL_VARS['PHP_SELF'];
if (!$ignoreparameters || ($ignoreparameters == "")) $ignoreparameters = array("page", "sortcolumn", "sort");
if (!$sortcolumn || ($sortcolumn == "")) $sorting = "";
else $sorting = " ORDER BY ".$sortcolumn." ".$sort." ";
$records = $n = mysql_num_rows(mysql_query($query));
foreach ($_REQUEST as $name => $value)
if (!in_array($name,$ignoreparameters)) $vars .= $name."=".$value;
$totalpages = 0;
while ($n > 0) {
$totalpages++;
$n -= $resultsperpage;
}
$n = $records;
$cp = 0;
while ($n > 0) {
if (($cp >= $page-10) && ($cp <= $page+10)) {
if ($cp == $page) $tpages .= "[<b>".($cp+1)."</b>]";
else $tpages .= "<a href=\"http://www.pctower.net/index.php".$scriptname."?".$vars."&page=".$cp."\">".($cp+1)."</a>\n";
$tpages .= " ";
}
$cp++;
$n -= $resultsperpage;
}
$query .= $sorting." LIMIT ".($page*$resultsperpage).",".$resultsperpage;
$pages = "Страницы: \n";
$pages .= $tpages;
$results['pages'] = $pages;
$results['query'] = $query;
$results['vars'] = $vars;
return $results;
}

// выводим результаты

if (!$page) $page = 0;
if (!$sortcolumn || ($sortcolumn == "")) $sortcolumn = "article_date";
if (!$sort || ($sort == "")) $sort = "DESC";
$query = "SELECT * FROM articles WHERE section_id='$section' ";
$results = pages_list($query, $page, $sortcolumn, $sort, array("page", "sortcolumn", "sort", "PHPSESSID"), 10, "");

$result = mysql_query($results['query']);
while ($row = mysql_fetch_array($result)) {

  echo $row['article_title'];
  echo $row['article_author'];
  echo $row['article_date'];
}

// выводим навигацию

echo $results['pages'];


Все хорошо работает, но вот одна проблема: есть простенькая форма, из которой передаются значения в переменную сортировки $sort:

<form method="POST" action="">
сортировать по
<select name="sort">
<option value="DESC" selected>убыванию</option>
<option value="ASC">возврастанию</option>
</select>
</form>

форма работает, сортировка происходит, но если страница разбита на несколько, то при переходе на следующую страницу эти данные теряются и сортировка опять происходит по умолчанию. Как сделать чтобы сортировка сохранялась в рамках одного документа разбитого на страницы?

Спасибо.

Автор: Mal Hack 22.2.2004, 20:48
Передавать через сессии или ГЕТ тип сортировки (данные формы)...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)