ホームページ > バックエンド開発 > PHPの問題 > データクエリとページめくりに PHP を使用する方法

データクエリとページめくりに PHP を使用する方法

PHPz
リリース: 2023-03-29 14:41:16
オリジナル
1046 人が閲覧しました

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[&#39;pageNum&#39;]) ? intval($_GET[&#39;pageNum&#39;]) : 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[&#39;name&#39;]; ?></h3>
    <p>性别:<?php echo $row[&#39;gender&#39;]; ?></p>
    <p>年龄:<?php echo $row[&#39;age&#39;]; ?></p>
    <p>成绩:<?php echo $row[&#39;score&#39;]; ?></p>
    <img src="<?php echo $row[&#39;picture&#39;]; ?>" 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート