旅スタンプが溜まってきたので整理したいな~、どうせなら勉強中のPHPでどうにかならないか?と考えて作成中です。
旅スタンプ
旅スタンプとは駅、空港、SA、観光スポットで押せる記念スタンプです。
(気になる方は過去ブログを参照)
日本特有なのか?海外旅行では旅スタンプはみたことがないですね。
あえて言うならパスポートに押す入国スタンプぐらい。
国内旅行に行ったときスタンプを押していたら、中国人らしき人がスタンプ帳を指さして
「それはどこに売っているんだ?(付近の土産屋を指さして)あそこか?」(身振り手振りから想像)
「ネットショップ・・・インターネット」
「あ~そうなのか(残念)・・・」(想像)
ってなことがありました。
溜まったスタンプを整理したいな~
どうせならPHPで作ってみよう。
まずは一覧を作る
まずは一覧を作ってみます。

こんな感じで。装飾はあとから考えます。
カレンダーを作ったときのソースを参考にしました。
(都道府県名にリンクを貼ってあります)
いくつか写真をのせてみました。

おぉぉ~いい感じ。
もう少し写真は大きくてもいいかな。
アプリ構造
一覧から都道府県名にリンクを貼って登録画面に移行。
スタンプ画像や日付、メモを入力して登録。
一都道府県に対して画像は3枚まで登録可能にする。
3枚のうち1枚を一覧で使う画像に指定できるようにする。
ソースコード
一覧のソースコードです。
//userのstamp情報を検索
$sql = "SELECT * FROM mainstampdata WHERE userid=:userid";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':userid', $userid);
$stmt -> execute();
$userstamprow = $stmt -> fetchall(PDO::FETCH_ASSOC );
foreach($userstamprow as $userstamp){
$userstampname = basename($userstamp['stampimage']);
$userstampnamecode = substr($userstampname, -8, 3);
$stamp[strtoupper($userstampnamecode)] = $userstampname;
}
データベースに接続してmainstampdataからuseridでデータを抽出
↓
画像の保存場所からファイル名を取り出して変数userstampnameへ格納
ファイル名から都道府県コードを取り出して変数userstampnamecodeへ格納
コードを大文字にしてstamp[]へセットする
都道府県コードは自作で作成
北海道の場合はHKD、和歌山の場合はWKYなど。
このコードをファイル名に使います。
//todohukenmasterからデータを取り出す
$sql = "SELECT * FROM todohukenmaster";
$stmt = $pdo->prepare($sql);
$stmt -> execute();
//取得したデータを配列に
while ($row = $stmt -> fetchall(PDO::FETCH_ASSOC )) {
foreach ($row as $result) {
if(isset($stamp[$result['todohukencode']])){
$filename = '<img class="stamparea" src="/uploads/'.$stamp[$result['todohukencode']].'"/ height="300px">';
}else{
$filename = '';
}
$todohukendata[] = '<div class="col-md-2 col-sm-4 col-xs-6"><div class="todohuken">'.'
<a href="http://localhost/stamp/stamplist.php?code='.$result['todohukencode'].'">'
.$result['todohuken'] .'</a>'
.'</div>'.$filename.'</div>';
//$airportcodeall[] = $result['airportcode'];
}
}
都道府県マスターからデータ取り出し
↓
foreachしながらスタンプのある都道府県の画像をtodohukendata[]にセットします
(ブーストラップを使用)
<div class="row">
<?php
foreach ($todohukendata as $todohuken) {
echo $todohuken;
}
?>
</div>
HTMLでforeachでtodohukendataを取り出して表示します
まとめ
初心者なのでちょっとコードを書くとエラー、エラー。
それでも少しずつできてきました。
まだまだ先は長いけど、頑張るぞ~