-2

PHPスクリプトがあり、トピックシステムをプログラム
しましたが、10トピックごとに1ページに表示したいのですが、どうすればよいですか?
SQLテーブル:

ID
L_TITLE
L_URL
L_COMMENTS
L_VIEWS
L_STATE

phpコード:

$sql = mysql_query("SELECT * FROM LESSONS WHERE L_STATE='0' ORDER BY ID DESC") or die($sql_error);
if(mysql_num_rows($sql) > 0){
    while($rs = mysql_fetch_assoc($sql)){
        $l_id = $rs['ID'];
        $l_title = $rs['L_TITLE'];
        $l_comments = $rs['L_COMMENTS'];
        $l_views = $rs['L_VIEWS'];
    }
}else{
        $l_id = $no_data;
        $l_title = $no_data;
        $l_comments = $no_data;
        $l_views = $no_data;
}
4

2 に答える 2

1

これは複数の方法で実行できます。

私が見る一般的な方法は、ページがデータベース全体をクエリし、結果を配列に格納することです。変数は、ページごとの結果の数を決定するために使用され、変数はアクティブなページを保持するために使用されます。GETまたはPOSTを使用して、現在のページを管理できます。

例:

100個のアイテムがあり、1ページに10個のアイテムを表示したい場合は、10ページになります。(91個のアイテムがある場合は、10ページも表示されるはずです!)

$sql = mysql_query("SELECT * FROM LESSONS WHERE L_STATE='0' ORDER BY ID DESC") or die($sql_error);

//DETERMINE PAGE SIZE/NUMBERS
$currentPage = $_GET["page"];
$itemPerPage = 10;
$itemTotal = mysql_num_rows($sql);
$lastPage = $itemTotal / $itemPerPage + 1; //+1, because you round up to whole pages
$startItem = $currentPage * $itemsPerPage;

if($itemTotal > 0){
    //PUT DATA IN ARRAYS
    while($rs = mysql_fetch_assoc($sql)){
        $id[] = $rs['ID'];
        $l_title[] = $rs['L_TITLE'];
        $l_comments[] = $rs['L_COMMENTS'];
        $l_views[] = $rs['L_VIEWS'];
    }

    //DETERMINE WHAT PAGE AND ITEMS TO SHOW
    if(0 < $currentPage && $currentPage <= $lastPage){
        for($i=$startItem;$i<=$startItem+$itemsPerPage;$i++){
            //EXIT LOOP IF END OF ITEMS
            if($i > $itemTotal){
                break;
            }
            //DISPLAY DATA
            echo "<table><tr><th>id</th><th>title</th><th>comments</th><th>views</th></tr><tr>";
            echo "<tr><td>" . $id[$i] . "</td><td>" . $l_title[$i] . "</td><td>" . $l_comments[$i] . "</td><td>" . $l_views[$i] . "</td></tr>";
            echo "</table>";
        }
        //DISPLAY PAGE NUMBERS
        echo "<br />";
        echo "<a href='/?page=0'>|&lt;</a>";
        echo "<a href='/?page=" . $currentPage - 1 . "'>&lt;</a>";
        for($i=0;$i<$lastPage;$i++){
            echo "<a href='/?page=" . $i . "'>" . $i . "</a>";
        }
        echo "<a href='/?page=" . $currentPage + 1 . "'>&gt;</a>";
        echo "<a href='/?page=" . $lastPage . "'>&gt;|</a>";
        echo "<br />";
    } else {
        //If invalid page number, send to page 0
        header("Location: /?page=0");
    }
}else{
        $l_id = $no_data;
        $l_title = $no_data;
        $l_comments = $no_data;
        $l_views = $no_data;

}
于 2013-02-01T01:46:24.157 に答える
0

まず、mysql_*関数を使用しないでください。正式に減価償却されていませんが、減価償却される可能性もあります。2番。コードを一瞬見ただけですが、whileループ配列でこれらの変数を作成してみてください。

$l_id[] = $rs['ID'];

次に、foreachループで$l_idを呼び出します

編集:私はmysql_ *関数についても間違っていると思います、それはyareが公式に減価償却されているようです。

于 2013-02-01T01:06:42.623 に答える