Web サイト開発では、データをクエリしてページに表示することが必要になることがよくあります。データの量が非常に大きい場合、クエリの効率とユーザー エクスペリエンスを確保するためにページングが必要になります。この記事では、PHP を使用してデータをクエリし、ページをめくり、各ページに画像を表示する方法を紹介します。
1. データクエリ まず、クエリするデータを取得し、データベースに保存する必要があります。ここでは、名前、性別、年齢、成績などのフィールドを含む単純な学生情報テーブルを例に挙げます。デモンストレーションには MySQL データベースを使用します。
CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `gender` varchar(10) NOT NULL, `age` int(11) NOT NULL, `score` int(11) NOT NULL, `picture` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
次に、いくつかのデータと生徒の写真をテーブルに挿入します。ここでは、student1.jpg やstudent2.jpg などの写真を使用します。
INSERT INTO `students` (`name`, `gender`, `age`, `score`, `picture`) VALUES ('Tom', 'M', 18, 80, 'student1.jpg'); INSERT INTO `students` (`name`, `gender`, `age`, `score`, `picture`) VALUES ('Jerry', 'F', 17, 90, 'student2.jpg'); INSERT INTO `students` (`name`, `gender`, `age`, `score`, `picture`) VALUES ('Mike', 'M', 19, 75, 'student3.jpg'); INSERT INTO `students` (`name`, `gender`, `age`, `score`, `picture`) VALUES ('Mary', 'F', 18, 85, 'student4.jpg'); INSERT INTO `students` (`name`, `gender`, `age`, `score`, `picture`) VALUES ('John', 'M', 20, 70, 'student5.jpg'); INSERT INTO `students` (`name`, `gender`, `age`, `score`, `picture`) VALUES ('Jane', 'F', 19, 95, 'student6.jpg');
2. データのページめくり
次に、PHP でデータのクエリとページングを実行する必要があります。各ページに 5 つのデータを表示すると定義し、総ページ数と現在のページ番号を計算します。コード例は次のとおりです。
<?php // 连接数据库 $conn = mysqli_connect("localhost", "username", "password", "database"); // 每页显示的记录数 $pageSize = 5; // 当前页码 $pageNum = isset($_GET['pageNum']) ? intval($_GET['pageNum']) : 1; // 计算总记录数和总页数 $sql = "SELECT count(*) FROM students"; $result = mysqli_query($conn, $sql); $row = mysqli_fetch_row($result); $totalRecords = $row[0]; $totalPages = ceil($totalRecords / $pageSize); // 计算查询起始位置 $startIndex = ($pageNum - 1) * $pageSize; // 查询数据 $sql = "SELECT * FROM students LIMIT $startIndex, $pageSize"; $result = mysqli_query($conn, $sql); ?>
上記のコードでは、最初にデータベースに接続し、各ページに表示されるレコードの数と現在のページ番号を定義します。次に、レコードの総数と総ページ数を計算し、現在のページ番号に基づいてクエリの開始位置を計算します。最後に、LIMIT キーワードを使用してデータ クエリを実行し、結果を返します。
3. 写真を表示する
次に、各生徒の写真とともにデータを表示する必要があります。ここでは、HTML タグ を使用して画像を表示します。
<?php while ($row = mysqli_fetch_assoc($result)): ?> <div> <h3><?php echo $row['name']; ?></h3> <p>性别:<?php echo $row['gender']; ?></p> <p>年龄:<?php echo $row['age']; ?></p> <p>成绩:<?php echo $row['score']; ?></p> <img src="<?php echo $row['picture']; ?>" width="100"/> </div> <?php endwhile; ?>
上記のコードでは、while ループを使用してクエリ結果を繰り返し処理し、 タグを使用して各生徒の写真を表示します。
img タグの src 属性には正しい画像パスを指定する必要があることに注意してください。 4. ページネーションナビゲーション 最後に、ユーザーがページをめくりやすいように、ページの下部にページング ナビゲーションを表示する必要があります。
コード例は次のとおりです。
<div> <?php if ($pageNum > 1): ?> <a href="?pageNum=<?php echo $pageNum - 1; ?>">上一页</a> <?php endif; ?> <?php for ($i = 1; $i <= $totalPages; $i++): ?> <?php if ($i == $pageNum): ?> <span><?php echo $i; ?></span> <?php else: ?> <a href="?pageNum=<?php echo $i; ?>"><?php echo $i; ?></a> <?php endif; ?> <?php endfor; ?> <?php if ($pageNum < $totalPages): ?> <a href="?pageNum=<?php echo $pageNum + 1; ?>">下一页</a> <?php endif; ?> </div>
上記のコードでは、まず現在のページ番号が 1 より大きいかどうかを判断し、1 より大きい場合は「前のページ」ボタンを表示します。次に、for ループを使用してすべてのページ番号を反復処理し、ナビゲーション リンクを生成します。現在のページ番号がループ変数 $i と等しい場合は、現在のページ番号が表示され、それ以外の場合はリンクが表示されます。
最後に、現在のページ番号が総ページ数より小さいかどうかを判断し、そうであれば「次のページへ」ボタンを表示します。 要約する この記事では、PHP を使用してデータをクエリし、ページをめくり、各ページに画像を表示する方法を紹介します。なお、ページのパフォーマンスを確保するため、画像を表示する際はサムネイルを使用するか、画像サイズを制限することをお勧めします。また、実際の開発では、データのクエリ条件やデータのソートなども考慮する必要があります。
以上がデータクエリとページめくりに PHP を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。