0

自動インクリメントされた ID フィールドを持つ mysql テーブルがあります。ページへの出力をループするときは、各反復の出力を次のように開始して、URL のアンカーを介して参照できるようにします。

// after query and while loop
<a name="'.$row['id'].'"></a>

私がやりたいのは、$id を取得し、次または前の $id がある場合、リンクを解析する各反復で次/前のスタイルのリンクを作成することです。次のようなものです。

// query then loop
while ($row = mysql_fetch_array($result)) {

// increment $id to create var for NEXT link
$n = intval($row['id']);
$next = $n++;

// decrement $id to create var for PREV link
$p = intval($row['id']);
$prev = $p--;

// output PREV link
if($prev > intval($row['id'])) {
    echo '<a href="page.php#'.$prev.'">Previous</a> | ';
} else {
    echo 'Previous | ';
}

// output NEXT link
if($next < intval($row['id'])) {
    echo '<a href="page.php#'.$next.'">Next</a>'.PHP_EOL;
} else {
    echo 'Next'.PHP_EOL;
}

しかし、上記を使用しても何も返されません。誰かが私を正しい方向に向けることができますか?

前もって感謝します!

4

2 に答える 2

0

どちらかに変更する必要があります -

$next = $n+1;
$prev = $p-1;
// adds/subtracts 1 from $n/$p, but keeps the same value for $n/$p

また

$next = ++$n;
$prev = --$p;
// adds/subtracts 1 from $n/$p, but changes the value for $n/$p to ++/--

http://www.php.net/manual/en/language.operators.increment.phpを参照してください。

あなたがするとき

$next = $n++;
$prev = $p--;

コード行が実行されるまで増加/減少は発生しません

また、比較演算子 (<>) を反転する必要があります。試す -

// increment $id to create var for NEXT link
$n = intval($row['id']);
$next = $n+1;

// decrement $id to create var for PREV link
$p = intval($row['id']);
$prev = $p-1;

// output PREV link
if($prev < $p) {
    echo '<a href="page.php#'.$prev.'">Previous</a> | ';
} else {
    echo 'Previous | ';
}

// output NEXT link
if($next > $n) {
    echo '<a href="page.php#'.$next.'">Next</a>'.PHP_EOL;
} else {
    echo 'Next'.PHP_EOL;
}

注 -
if($prev < intval($row['id']))&if($next > intval($row['id']))は常に TRUE を返します。
チェックする必要があるのは、 if0 < $prev < intval($row['id'])intval($row['id']) < $next < max id

于 2013-03-07T19:58:03.503 に答える
0
    You are using post increment and decrement but you need to pree increment and decimeter
Example
$x=5;
$y=$x++;
echo $y; //Output will be 5

// increment $id to create var for NEXT link
    $n = intval($row['id']);
    $next = ++$n;


    // decrement $id to create var for PREV link
    $p = intval($row['id']);
    $prev = --$p;
于 2013-03-07T19:57:48.937 に答える