前回の続き。トップページを.phpでなく.htmlにした。jQuery.ajaxから、データベースの情報をJSON形式で返すようPHPに要求している。jQuery.ajaxについては以前少しやった。JavaScript部はくくり出して別ファイルにした方がいいだけど。
成果物:index.html
メモ
- jQuery.ajaxでPHP(latest.php)に処理要求を出している
- success:で指定したコールバックの引数にPHPの処理結果(レコードの配列)が入ってる
- jQuery.eachで”latest”のdiv要素にimg要素を追加している。レコードごとに処理を回せて便利。
- PHP部はヘッダのタイプをapplication/jsonにして、データ(配列)をjson_encode()で変換したのを出力している
header('Content-Type: application/json; charset=utf-8'); echo json_encode(get_latest());
ソースコード
index.html
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>スマホキャプチャーギャラリー</title>
</head>
<body>
<a href="index.html">Home</a> | <a href="upload.html">アップロード</a> | <a href="ranking.html">人気順</a> | <a href="latest.html">新着順</a>
<p>トップページ:アップロード画像の一覧表示</p>
<div id="latest"></div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
url: "latest.php",
success: function(json_data) {
$.each(json_data, function(index, data) {
$('#latest').append(
'<a href="item.php?id='+data.id+'"><img src="./images/'+data.filename+'" alt="image" width="160" /></a> '
);
});
}
});
});
</script>
</body>
</html>
latest.php
<?php
function get_latest() {
require_once('config.php');
try {
$dbh = new PDO(DSN, DB_USER, DB_PASS);
} catch(PDOException $e) {
var_dump($e->getMessage());
exit;
}
$sql = "select * from mobile_capture_showcase order by time desc";
$items = array();
foreach ($dbh->query($sql) as $item) {
array_push($items, $item);
}
$dbh = null;
return $items;
}
header('Content-Type: application/json; charset=utf-8');
echo json_encode(get_latest());
?>
参考サイト
- PHPでデータベースから取得したデータを使ってJSONを吐き出してみる | WebDelog
- jQuery.ajax(options) – jQuery 日本語リファレンス
- jQuery.each(object, callback) – jQuery 日本語リファレンス
パーフェクトPHP (PERFECT SERIES 3)
posted with amazlet at 13.01.30
小川 雄大 柄沢 聡太郎 橋口 誠
技術評論社
売り上げランキング: 24,082
技術評論社
売り上げランキング: 24,082
関連エントリー
