前回記事で作成したグリッドレイアウトのページにWeb SQL Databaseを組み込んで、お気に入り、クリック数順に画像を並べ替えて表示してみようと思います。
今回はそのページの作成についてです。
目次
こちらについては以下の記事を参照ください。
こちらについては以下の記事を参照ください。
グリッドレイアウトで一枚のページに画像をまとめて表示することで一覧性を高めるまでは良かったのですが、表示順が常に一定であるため画像の点数が多くなったときに閲覧したい画像をスクロールして探さなければならなくなってしまいます。
どうせなら良く見る画像はページを表示したときに最も目に留まる位置にあると便利です。
加えて、画像を追加するたびにhtmlコードに修正を加えなければならない点も少々煩わしく思います。コードを書き込む必要がなくブラウザのページで画像の追加もできると良いです。
これらの目的を適えるため画像の情報をデータベース化してWebページにアクセスしたときにデータベースから情報を読み出しページに表示させるシステムをつくることにしました。
作成するページは画像一覧を表示するページ「picslist.html」、画像を追加するページ「picinsert.html」の2枚としました。それぞれのページにリンクを貼ってページ間を行き来します。
画像一覧ページのレイアウトです。ページ内画像下部のselectタブを変更するとonchangeイベントでスクリプト実行します。selectタブはお気に入り評価数0~5段階に加えて「表示しない」項目を選択可能とし、「表示しない」を選択すると画像一覧ページから該当画像を非表示にします。
お気に入り評価数やクリック数での画像並び替え変更が適用されるのはページ更新時とします。
また、画像クリック時にクリック数をカウントして画像表示の並べ替えに使います。
画像追加ページのレイアウトです。textareaタグ内に拡張子を含む画像ファイル名を入力して「追加」ボタンを押します。ボタンを押した時にスクリプト実行して画像情報をWeb SQL Databaseのデータベースに格納します。textareaタグ内に入力する画像ファイル名は改行して入力することで、複数画像の登録を可能にします。
ここで格納するデータは画像ファイル名のみで画像そのものはローカルPCの指定ディレクトリ内に保存されているファイルを使用します。
画像そのものはローカルファイルに保存してあるものを用います。データベース化するのは画像ファイル名のみです。
データベース「picsdb」にテーブル「picslist」を作成します。以下は「picslist」テーブルの構造です。
フィールド名 | 型、属性など | 用途 |
---|---|---|
uid | varchar(20) not null primary key | 各々の画像を区別するためのユニークキー |
filename | text not null | 画像ファイル名 |
favorite | int default(0) | お気に入り数 ※追加した画像を先頭に配置しておきたい場合は初期値を「10」などに設定する |
clickcnt | int default(0) | クリック数 |
delflg | int default(0) | 画像をページに表示する(=0)、表示しない(=1) |
デモページのディレクトリ構成は、グリッドレイアウトのWebページを作成した時と同様のディレクトリ構成としました。
作成したデモページ一式はこちらよりダウンロード(zip形式74kb)できます。初期状態ではデータベースに何も保存されていませんので画像一覧ページを開くと真っ白な画面が表示されます。
とりあえずのサンプル画像としてこちらのページからサンプル画像をダウンロードするなどして、「pics」ディレクトリに保存したのち画像追加ページより画像を追加します。面倒な方は次にデモページのキャプチャ画像を貼りましたのでそちらを確認頂ければと思います。
サンプル画像を使用して画像を追加したのち、画像一覧ページに戻ると下のような画面が表示されます。
このキャプチャではお気に入り数の多い画像が上位に表示されています。
Web SQL Databaseの応用として、グリッドレイアウトで配置された画像に画像評価システムを組み込んだページ作成をしてみました。
今回システムを組み込むことによってローカルPC内の画像群の整理整頓ならびによく閲覧する画像の見つけやすさ向上の手助けになるのではと思います。『画像収集したあと放ったらかしになっていて同じ画像をまた保存している』なんてことも少なくなるかもしれません。