前回の続き。詳細ページへのアクセスでアクセスカウンタをアップさせるようにした。この前やったPDOでのデータベース読み取りと同じで、違うのはSQL分くらい。
成果物:index.html -> item.php (トップページの画像クリックで詳細ページに移動)
メモ
- PDOでデータベースを更新する処理
try { $dbh = new PDO(DSN, DB_USER, DB_PASS); } catch(PDOException $e) { var_dump($e->getMessage()); exit; } $id = $_GET['id']; $sql = sprintf("update mobile_capture_showcase set counter=counter+1 where id=%d", $id); $dbh->query($sql); $dbh = null;
ソースコード
item.php
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>スマホキャプチャーギャラリー</title>
</head>
<body>
<a href="index.php">Home</a> | <a href="upload.html">アップロード</a> | <a href="ranking.html">人気順</a> | <a href="latest.html">新着順</a>
<?php
require_once('config.php');
try {
$dbh = new PDO(DSN, DB_USER, DB_PASS);
} catch(PDOException $e) {
var_dump($e->getMessage());
exit;
}
$id = $_GET['id'];
$sql = sprintf("update mobile_capture_showcase set counter=counter+1 where id=%d", $id);
$dbh->query($sql);
$sql = sprintf("select * from mobile_capture_showcase where id=%d", $id);
foreach ($dbh->query($sql) as $item) {
$path = "./images/" . $item['filename'];
echo sprintf(
'<table>
<tr>
<td>
<img src="%s" alt="image" width="320" />
</td>
<td>
<table>
<tr>
<td>名前:%s</td>
</tr>
<tr>
<td>投稿時刻:%s</td>
</tr>
<tr>
<td>OS:%s</td>
</tr>
<tr>
<td>アクセス数:%s</td>
</tr>
<tr>
<td>コメント:%s</td>
</tr>
</table>
</td>
</tr>
</table>',
$path,
$item['name'], $item['time'], $item['os'], $item['counter'],
htmlspecialchars($item['comment'], ENT_QUOTES));
}
$dbh = null;
?>
</body>
</html>
参考サイト
パーフェクトPHP (PERFECT SERIES 3)
posted with amazlet at 13.01.30
小川 雄大 柄沢 聡太郎 橋口 誠
技術評論社
売り上げランキング: 24,082
技術評論社
売り上げランキング: 24,082
関連エントリー
