2016-09-24 6 views
0

データベースのレコードに基づいて次のボタンと前のボタンを実行しようとしていますが、どうすればよいのか、どちらが最善の方法でしょうか。 私はそれを行うと考えていた方法 は、テーブルという名前のテーブルにフィールドを持つことになります。 とクエリは次のようになります。次と前のボタンを作成する

SELECT * FROM t1 WHERE step = 1 

をその後、PHPで私はこの

$step = $step + 1 // for the next button 
if($step === 1) { 
    $step = 1; 
} else { 
    $step = $step - 1; 
} 

のようなものを持っているでしょうが、私はレコードを削除するかどうその後、私の立場はと同期してだろう私はレコードを見つけることができるので、数学と私は+または - ステップフィールドで行うことができなくなります。 これは、毎回私が何かを削除すると、後で問題になるかもしれない同期を維持するために、そのフィールドに新しいインクリメントを行う必要があることを意味します。

どうすればよいですか?

+0

実装している**ページング**ですか? –

+0

@RajdeepPaul私は各ページのユーザーにそれらを表示したいと思う一連の質問(調査)を持っています、そして、私はフォームに提出して、データベースから次の質問を得るためにヒットします。前の質問はページネーションに似ていると言えるでしょう。 –

+0

* hmm *。その場合、あなたの質問は少し幅広く(現在のコードが与えられています)、絞り込んでデータベース構造と完全で関連性の高いPHPコードを投稿します。 –

答えて

1

次のようなクエリに行番号を追加することができます。

select @qposn:[email protected]+1 posn, a.* from sometable a, (select @qposn:=0) x 

あなたは、この場合には、このような2行目、特定の行を選択することができます。

select * from (
select @qposn:[email protected]+1 posn, a.* from sometable a, (select @qposn:=0) x 
) x where posn=2 

をしかし、注意してくださいテーブル内のデータが変更された場合は、番号も変更されます。誰かがテーブルの最初のレコードを削除すると、2行目になっていたデータは1行目になり、ページングは​​行をスキップまたは繰り返すことがあります。

テーブルが比較的小さい場合は、テーブルをJavaScript配列にキャッシュし、次に配列をページングすることを検討してください。

+0

あなたの方法は非常に簡単で素敵です:-)ステップを得るための本当に素敵な方法= D –

関連する問題