-2

私は単純な「さらに読み込む」ボタンを作成しようとしています。ここで、ajax リクエストをさらにいくつかのデータベース エントリを読み込むページをさらに読み込みます。私の問題は、selectステートメントを次のように実行できることです。

$result = $db->query("SELECT uid,username,image FROM tbl_multimedia LIMIT 3");

しかし、クリックするたびに、最初の 3 つの結果が表示され、4 番目以降は表示されません。このコードは、どの ID が最後にロードされ、次から開始されるかをカウントまたはチェックしません。私はそれをシンプルに保つように努めています。それを重要にするためにここに追加できるものについての簡単なアイデア. 私はJavaScriptの部分を準備してAJAXで作業しています。ここで立ち往生しています。

私のコードは以下の通りです:

try 
{
    // Query multimedia table
    $result = $db->query("SELECT uid,username,image FROM tbl_multimedia LIMIT 3");

    // Convert the object to a string
    $result->unescape(array(
        'username'      => 'string',
        'image' => 'string',
        'uid' => 'integer'
    ));

    // No users in our app :(
    $result->tossIfNoRows();
    ?>

    <?
    // Magic happens -> Create rows with every name found in the database
    foreach ($result as $row) 
    {
        ?>
        <div class="g_holder">
        <? echo '<a href="profile.php?user_id='.$row['uid'].'" ><img src="img/'.$row['image'].'" width="120" height="120"/></a>'; ?>
        <div class="g_caption">
            <p class="g_txt">
                <? echo $row['username']; ?>
            </p>
        </div>
        </div>
        <?
    }

} 
catch (fNoRowsException $e) 
{
    ?>
    <p>noone cares about using my app!</p>
    <?php
}
4

4 に答える 4

1

必要なのはオフセットです。したがって、クエリは次のようになります。

"SELECT uid,username,image FROM tbl_multimedia LIMIT {$offset},3"

ここで、offsetは、クリックするたびに3ずつ増加する数値です。

したがって、ページを最初にロードするときは0、最初のクリックの後、次のクリック$offset = 3などになります$offset = 6

于 2012-12-09T01:21:30.433 に答える
0

10個のエントリがロードされていて、さらに3個のエントリをロードしたい場合はLIMIT 11,13、10回目以降に3個のエントリを取得してみてください。

于 2012-12-09T01:22:02.330 に答える
0

OFFSETを使用してみてください。MYSQLDocsを参照してください。

$result = $db->query("SELECT uid,username,image FROM tbl_multimedia LIMIT 3 OFFSET {$offset}");
于 2012-12-09T01:23:31.730 に答える
0

"2 つの引数がある場合、最初の引数は返す最初の行のオフセットを指定し、2 番目の引数は返す行の最大数を指定します。最初の行のオフセットは 0 (1 ではありません):"

http://dev.mysql.com/doc/refman/5.5/en/select.html

于 2012-12-09T01:19:22.250 に答える