0

現在、即席のページネーション システムに次のスニペットを使用しています。残念ながら、私はちょっとした障害に遭遇しました。変数$result->info['pages']はリモート API によって返され、使用可能なページ数です。変数$result->info['page']は現在表示されているページです。リンクは適切な場所に期待どおりに表示されますが、ページが常に 1 であるかのように機能します (「1」リンクは常にプレーンテキストとして表示され、それ以外は常にリンクとして表示されます)。ただし、 をエコーする$result->info['page']と、正しいページ番号が表示され、表示される情報も正しいです。私が間違っているかもしれないことについての考え?

<?php if ($result->info['pages'] > '1') {
    if ($result->info['page'] != '1') {
        echo '<a onClick="location.replace(\'?page=' . --$result->info['page'] . '\');">Prev</a> ';
    } else {
        echo 'Prev ';
    }
    for ($i = 1; $i <= $result->info['pages']; $i++) {
        if ($i == $result->info['page']) {
            echo $i . ' ';
        } else {
            echo '<a onClick="location.replace(\'?page=' . $i .'\');">' . $i . '</a> ';
        }
    }
    if ($result->info['page'] != $result->info['pages']) {
        echo '<a onClick="location.replace(\'?page=' . ++$result->info['page'] . '\');">Next</a>';
    } else {
        echo 'Next';
    }
} ?>
4

1 に答える 1

1

を変更する必要はありません--$result->info['page']。置き換えるだけで($result->info['page'] - 1)すべてがうまくいきます

http://ideone.com/WiGh4

<?php

$result = new stdClass();
$result->info = array(
    'pages' => 2,
    'page' => 2
);

if ($result->info['pages'] > '1') {
    if ($result->info['page'] != '1') {
        echo '<a onClick="location.replace(\'?page=' . ($result->info['page'] - 1) . '\');">Prev</a> ';
    } else {
        echo 'Prev ';
    }
    for ($i = 1; $i <= $result->info['pages']; $i++) {
        if ($i == $result->info['page']) {
            echo $i . ' ';
        } else {
            echo '<a onClick="location.replace(\'?page=' . $i .'\');">' . $i . '</a> ';
        }
    }
    if ($result->info['page'] != $result->info['pages']) {
        echo '<a onClick="location.replace(\'?page=' . ($result->info['page'] + 1) . '\');">Next</a>';
    } else {
        echo 'Next';
    }
}

?>
于 2012-05-31T20:55:45.873 に答える