こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

php 分割

以前はmysql関数をページングを行ったのですが、今回はpdoにやりたいけど
pdoに書き換えるやり方がわかりません
また前回は前のページ、次のページだったのですが
15件中 1-10件表示 ○ページ表示
と行い
<前 1 2 3 次>みたいにやりたいです

<html>
<head>
<title>一覧画面</title>
</head>
<body>
<br><br>
<blockquote>
一覧画面
<br><br>
<form action = "" method="GET">
<input type="hidden" name="event" value="find">
<input type="text" name="name"style ="font-size:20px;width: 400px; height: 40px">
<input type="submit" value="検索" style ="font-size:20px;width: 100px; height: 40px">
</form>
<br><br>
<?php
if ($_GET) { // データがGETされていたら
$event = isset($_GET['event']) ? $_GET['event'] : ''; // 取得

}
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");
$name=isset($_GET['name'])?$_GET['name']:"";
$perpage=10;
$page=isset($_GET['page'])?($_GET['page']*$perpage):0;
$sql ="select * from tbl_test where 1 ";
$sql.="and (0 ";
$sql.="or `氏名` like concat('%',?,'%') ";
$sql.="or `住所` like concat('%',?,'%') ";
$sql.=") ";
$sql.= " limit {$page},{$perpage}" ;
$stmt = $pdo->prepare( $sql);
$stmt->execute(array($name,$name));
$count = $stmt->rowCount();
if($count>0){
print "<table border=1>" ;
print "<tr>";
print "<th>番号</th>";
print "<th>氏名</th>";
print "<th>住所</th>";
print "<th>操作</th>";
print "</tr>";
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$ID = htmlspecialchars($row['番号']);
$NAME = htmlspecialchars($row['氏名']);
$ADDR = htmlspecialchars($row['住所']);
echo "<tr>
<td>$ID</td>
<td>$NAME</td>
<td>$ADDR</td>
<td><a href='edit.php?番号=$ID'>修正</a>
<a href='delete.php?番号=$ID'>削除</a></td></tr>";
print "</tr>";
};
print "</table>" ;
}else{
print "該当するデータがありません";
}
?>
このソースにどう命令を入れていいのかわからず困っています
サンプルソースや指摘おねがいします

投稿日時 - 2014-05-01 17:02:58

QNo.8576703

すぐに回答ほしいです

質問者が選んだベストアンサー

DSNでcharsetを指定していないとかlikeに対して引き渡す変数が生のままだけどいいんだろうかとかツッコミどころは満載ですが、ひとまず置いといて・・・

select * from テーブル名の部分をselect sql_calc_found_rows * from テーブル名としておけば、select found_rows()というSQL文で全件数が取得出来ます(SQl文にlimitを書いていてもlimitがなかったときの件数)。

最初のSQL実行で得たステートメントとは別のステートメントを使ってfetchします(上書きしたら意味がなくなるので)。それで全件数を得られ、今処理しているページがわかればナビゲーションは出来ると思いますが・・・

投稿日時 - 2014-05-01 18:21:14

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問