0

これをどのようにページ付けしますか?データは以下の「getInstance」クエリによって呼び出され、動的テーブルにリストされている「ページ」と呼ばれる多数のレコードが表示されます。

クエリごとに 10 個の「ページ」のみを表示し、ページ番号を付けたいと思います

     <table width="100%" border="0" cellpadding="0" cellspacing="0" class="std">

        <?php   


        $counter = 1;
        $userID = PageDB::getInstance()->get_user_id_by_name($_SESSION['user']);
        $result = PageDB::getInstance()->get_pages_by_campaign_id($campaignID);
        $i=0;
            while ($row = mysqli_fetch_array($result)):
             $style = "";
                if($i%2==0)
{
    $style = ' style="background-color: #EFEFEF"';
}
echo "<tr".$style.">";
            echo "<td>&nbsp;</td>";
            echo "<td></td>";


            //The loop is left open
            ?>
            <td>
            <form style="display:none;"></form>
            <div id="Pagination" class="pagination"> </div>
    <div id="Searchresult"> </div>
                <form name="editPage" action="editPage.php" method="GET">
                    <input type="hidden" name="pageID" value="<?php echo $pageID = $row['pid']; ?>" />
                    <input type="submit" name="editPage"  value="<?php echo "Page "  . $counter; ?>" style="background:none;border:none; cursor:pointer"/>
                </form>

            </td>
            <td>
                <form name="deletePage" action="deletePage.php" method="POST">
                    <input type="hidden" name="pageID" value="<?php echo $pageID = $row['pid']?>"/>
                    <input type="submit" name="deletePage" value="Delete" onclick = "javascript: return confirm('Delete Page <?php echo $counter ?> ?');"/>
                </form>
            </td>              
            <?php
            $pageID = $row['pid'];  
            $counter++;
            $i++;

            echo "</tr>\n";
        endwhile;
        mysqli_free_result($result);
        ?>
    </table>

クエリは、DB から関連するページを呼び出すために、ユーザー ID を呼び出す次の 2 つのパブリック関数を参照します。

 public function get_user_id_by_name($name) {
    $name = $this->real_escape_string($name);
    $user = $this->query("SELECT id FROM users WHERE name = '" . $name . "'");

    if ($user->num_rows > 0){
        $row = $user->fetch_row();
        return $row[0];
    } else
        return null;
}

public function get_pages_by_campaign_id($campaignID) {
    $campaignID = $this->real_escape_string($campaignID);
    return $this->query("SELECT pid , campaignid FROM pages , campaigns WHERE campaignid = campaigns.id");
}

誰でも解決策を見ることができますか?ありがとうございました!

4

1 に答える 1

0

MySQL では LIMIT クエリを使用できます。

SELECT pid , campaignid 
FROM pages , campaigns 
WHERE campaignid = campaigns.id
LIMIT first_record_number, how_many_records

PEAR Pagerは、現在のページ番号などを取得するのに役立ちます。

 $pager_options = array(
    'mode'       => 'Sliding',
    'perPage'    => 10,
    'delta'      => 2,
    'totalItems' => $total_count,
 );

 $pager = Pager::factory($pager_options);

 list($from, $to) = $pager->getOffsetByPageId();
 //TODO: get and display data from database
 //first_record_number = $from-1
 //how_many_records = 10

 //show the links
 echo $pager->links;

私のアドバイスは、仮想化ライブラリを使用してデータベースと通信することです。アドビ。方法があります:

$rs = $conn->SelectLimit("SELECT pid , campaignid 
FROM pages , campaigns 
WHERE campaignid = campaigns.id", how_many_records,first_record_number);
$arr1 = $rs->GetArray();

また、入力データのフィルタリング、配列としてのすべての結果の取得、その他多くの便利なことも実行できます。

于 2012-05-17T08:14:42.833 に答える