проблема увеличения нумерации страниц - PullRequest
0 голосов
/ 05 февраля 2009

У меня есть следующий код, который является основой для нумерации страниц в более крупном приложении. Тем не менее, это не работает, так как, хотя я должен получить значение pg из URL-адреса, pg никогда не идет выше 2. По какой-то причине next = pg + 1; кажется, всегда видеть pg как 1, независимо от того, что передается по URL. Это аналогичная проблема с прошлым. Я предполагаю, что переопределяю значение, полученное из GET, но я не уверен, где.

Кажется, проблема в том, как я работаю с $ max и пределом, так как вместо 0, 10, -10, 10 проходит. Кроме того, ifcode перед $ max, похоже, не может остановить pg от 0.

<?php
if (isset($_GET["pg"])) {
    $pg = $_GET["pg"];
} else $pg = 1;
$con = mysql_connect("localhost","","");
if(!$con) {
    die('Connection failed because of' .mysql_error());
}
mysql_select_db("ebay",$con);

if ($pg < 1) {
    $pg = 1;
} elseif ($pg > $last) {
    $pg = $last;
}
$table = 'AUCTIONS';
$page_rows = 10;
$max = ' limit ' .($pg - 1) * $page_rows .', ' .$page_rows;
$rows = getRowsByArticleSearch($query, $table, $max);
$rowcount = count($rows);
echo $rowcount;
$last = ceil($rowcount/$page_rows);
$page_rows = 10;
$rowcount = 2;
// Would normally obtain the number of rows returned, but database stuff is snipped for brevity
$last = ceil($rowcount/$page_rows);
if ($pg < 1) {
    $pg = 1;
} elseif ($pg > $last) {
    $pg = $last;
}
$self = htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'utf-8');
echo " <a href='$self?pg=1'> <<-First</a> ";
$previous = $pg-1;
echo " <a href='$self?pg=$previous'> <-Previous</a> ";
echo "---------------------------";
$next = $pg+1;
echo " <a href='$self?pg=$next'>Next -></a> ";
echo " <a href='$self?pg=$last'>Last ->></a> ";

Ответы [ 3 ]

1 голос
/ 05 февраля 2009

Код правильный, но данные неверные.

Когда у вас есть

$page_rows = 10;
$rowcount = 2;

это фактически означает, что у вас есть 2 строки, отображаемые на страницах, каждая из которых будет отображать 10 строк. Это составляет 1 страницу.

Измените его на

$page_rows = 10;
$rowcount = 200;

и вуаля, вы получите свою нумерацию страниц.

1 голос
/ 05 февраля 2009

Вот ваша проблема:

$last = ceil($rowcount/$page_rows);

Это устанавливает $ last на 1, и тогда у вас есть:

if ($pg > $last) {
  $pg = $last;
}

Изменить: Интересно, если вы имели в виду, вместо этого:

$last = ceil($page_rows/$rowcount);

Снова отредактируйте: согласно ответу Кэсси, вам, вероятно, просто нужно установить правильные значения для этих переменных:

$page_rows = 10;
$rowcount = 2;
0 голосов
/ 05 февраля 2009

на основе теперь пересмотренного вопроса:

$rowcount = count($rows);

естественно всегда будет возвращать 10, так как вы ограничиваете результат

... LIMIT 10;

Но это может помочь:

SQL CALC FOUND ROWS Пример:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

Первый запрос будет по-прежнему возвращать ваши статьи, а второй - количество строк, которое имел бы предыдущий выбор, если бы не использовал предложение LIMIT.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...