2016-05-15 6 views
1

テーブルvidとレコードがあります。デフォルトでは、最初の5つのレコードがページに表示されます。ユーザーがボタンをクリックすると、jqueryはphpスクリプトを実行し、次の5行を取得し、前のレコードをページおよびspに置き換える答えを返すajaxを実行します。問題は、オフセットがテーブルに残っているレコードよりも大きくなった場合です。 15のレコードがあるとします。まず、クエリが最初の5つのレコードを取りますLIMITとOFFSET - オフセットが行数より大きい場合、またはクエリが5よりも少ないレコードを返す場合は、最初から開始します。

$start = $_POST['start_forward']; 
    $query = "SELECT * FROM vid ORDER BY datev DESC LIMIT $start,5" 

    ($_POST['start_forward'] 

だから、次回ユーザーがボタン$開始をクリックする0

から始まる5ずつ増分隠し入力フィールドは現在5.次に、次回10ですそれが15になると、15レコードしかないので、何も表示されません。だから私は常に少なくとも5レコードが表示されることを確認する必要があります。それ以下の場合は、列の始めから不足しているレコードを取得したい。だから、この場合 - $ start os 15とすると、再び0になりたいので、もう一度レコードを取り出すことができます。それは無限ループのようにすべきです。レコードの総数が18の場合は、$ startが15のときに、残りの2つのレコードが不足しているレコードを最初の列から取得します。したがって、それをidで計算すると。最終アンカー記録のIDは16,17,18,1,2でなければなりません。最後の2は最初から再調整されるべきです。

私は情報を検索し、私が見つけたです:

$query = "SELECT FOUND_ROWS();"; 
$result = mysqli_query($conn, $query); 

私はそれがテーブル内の行のtehの合計nimberをカウントしますが、私は私の場合、それを使用する方法のまわりで私の頭をラップカント知っています。どんな助け?

私はここのjqueryコードは単なる普通のajaxスクリプトであるため、tahtは$ start_forward変数をPHPスクリプトに送ります。

Thanx事前に。

答えて

0

オフセットが総数(num_rows)よりも高い場合、PHPで比較できます。それが高い場合は、結果が負(リカーシブ関数)にならない限り、総数を単に差し引くだけです。

1

あなたが今持っているクエリを使用して、データベースから行を取得した後、あなたが持つたとえば、行の数を数えることができる:$countが十分に高くない場合、

$count = $result->num_rows; 

そして、(5未満) 、あなたは異なるLIMITで、この時間は、クエリを繰り返してできます

$query = "SELECT * FROM vid ORDER BY datev DESC LIMIT " . (5 - $count); 

はまたあなたのAJAX応答でこの量(5 - $count)を送信することを確認します。

関連する問題