LoginSignup
21
20

More than 5 years have passed since last update.

PDOでページャー作成(自分用メモ)

Last updated at Posted at 2014-07-01

データベースの登録は省きます。
まずはPDOで接続する。

base.php
<?php
$dsn="mysql:dbname=dbname;host=localhost;charset=UTF8";
$user="root";
$pass="root"
try{
  $pdo=new PDO($dsn,$user,$password);
}catch(Exception $e){
  echo 'error' .$e->getMesseage;
  die();
}
?>

次にペーシャーの初期設定

page.php
<?php
if(preg_match('/^[1-9][0-9]*$/',$_GET['page'])){
  $page=(int)$_GET['page'];
}else{
  $page=1;
}
//変数の設定
//表示するコンテンツの数
$content=5;
//初期値
$set=$content*($page-1);
//SQL文の発行
$sql="SELECT count(*) FROM temp006";
$stmt=$pdo->query($sql);
$max=$stmt->fetchColumn();
//最大ページ数
$maxPage=ceil($max/$content);
?>

次に

index.php
<?php
//base.phpとpage.phpの読み込み
require 'base/base.php';
require 'page/page.php';
//データベースからの表示
$sql="SELECT * FROM temp006 LIMIT ".$set.",".$content;
$stmt=$pdo->query($sql);
$post=$stmt->fetchAll();
//viewの読み込み
require 'view/index_view.php';
?>

最後にViewの表示

index_view.php
<?php
<div class="page">
  //$pageが1より大きい場合
  <?php if($page>1) :?>
    //1ページ前に
    <a href="?page=<?php echo $page-1; ?>"><<</a>
  <?php endif; ?>
  //$i=1でページャーの最初のページ番号
  //$iを最大ページになるまで足していく
  <?php for($i=1;$i<=$maxPage;$i++) :?>
    <?php if($page==$i) :?>
      //$pageと$iの値が同じならstrongで現在のページ番号を強調する
      <strong><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></strong>
    <?php else :?>
      <a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a>
    <?php endif;?>
  <?php endfor; ?>
<<<<<<< HEAD
  //$pageが$maxPageより小さい場合
  <?php if($page<$maxPage) :?>
    //1ページ次に
    <a href="?page=<?php echo $page+1; ?>">>></a>
  <?php endif; ?>
?>
21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20