私はかなり新しくて、簡単に私に行きます。私はこのテーマに関連したチュートリアルや質問をいくつか見てきました。私は準備したステートメントで作業するページングを得ることができないので、私が間違っていることを理解しようとしています。私のデータベースには現在、10行が返されます。私はしようとすると、番号が変更されるように後で多くの行を挿入するオプションを追加します。 ここにデータベースのクエリとコードがあります。PHP - プリペアドステートメントによるページ設定
//determine how many results are available in database
$sqlPosts = "SELECT
count(post_owner)
FROM post_table";
$stmt = $db -> prepare($sqlPosts);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($totalPosts);
$stmt->fetch();
//determine which page user is currently on
if (!isset($_GET['page']))
$current_Page = 1;
else
$current_Page = $_GET['page'];
// define how many results you want per page
$page = 1;
$rowsPerPage = 5;
//total number of available pages
$total_Pages = ceil($totalPosts/$rowsPerPage);
// determine the sql LIMIT starting number for the results on the displaying page
$start_from = ($page - 1) * $rowsPerPage;
// retrieve selected results from database and display them on page
$sql = "SELECT
body_of_post,
date_time,
post_owner,
title,
id
FROM
post_table
ORDER BY
date_time
DESC LIMIT
?,?";
$stmt = $db->prepare($sql);
$stmt->bind_param('dd', $start_from, $rowsPerPage);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($body_of_post, $date_time, $post_owner, $title, $id);
while ($stmt->fetch()) {
echo '<table border="1">
<tr>
<td bgcolor="#CCCCCC">Title</td>
<td bgcolor="#CCCCCC">Post</td>
<td bgcolor="#CCCCCC">Created by</td>
<td bgcolor="#CCCCCC">Date</td>
</tr>
<br>';
echo
'<tr><th><h2>"' . $title .'"</th>
<th>'. $body_of_post. '</th>
<th>'. $post_owner. '</th>
<th>'. $date_time. '</tr></th></h2>';
}
私の問題はwhileループにあると思いますが、それ以外のコード方法はわかりません。ページングの部分は問題ありません。次のリンクをクリックすると、index.php?page =は更新されますが、データベースの行はそのまま残ります。私は、page = 1は、page = 2が次の5行を表示するよりも、データベースから最初の5行を表示するようにしたいと考えています。
ここにページングの部分があります。
if($current_Page > 1){
$prev_page = $current_Page - 1;
$previous = "<a href=\"index.php?page=$prev_page\">Previous</a>";
}
if ($total_Pages > 1){
for($page = 1; $page <= $total_Pages; $page++){
if ($page == $current_Page){
$page_count = "";
}
else
echo "<a href=\"index.php?page=$page\">Next$rowsPerPage</a>";
}
echo $page_count;
}
「LIMIT」値のパラメータは使用できません。パラメータは、SQLが式を許可する場合にのみ使用でき、 'LIMIT'には式ではなくリテラルが続く必要があります。 – Barmar
@Barmarそれを試してみてください –