Recent Comments

日記:作業機死亡
 [01/04] perry様
DiCEのプラグイン編集
 [01/02] foreclosures mn様
 [01/02] foreclosures panama city beach florida様
 [01/02] foreclosures panama city beach florida様
鼠解剖
 [01/01] nick_botale様
 [07/17] げんき
 [07/17] s-yama先生様
日本の夏・すだれ
 [01/01] nick_orchil様
RBIO:HDD・CPUの温度監視をして扇風機を自動でON/OFFする。
 [10/07] げんき
 [10/03] とおりすがり様

Profile

 Vine Linux 3.2で自宅サーバ構築・運営するにあたっての覚え書き。トラブルシューティング・思いつきのPHPスクリプト。愛車CB5 VIGORのDIY。やらの紹介。

中の人

なかのひと
Graph 2009.1.6
Year:  Month:  Day

<<< PHP:ob_flush();flush();するときの注意点 <<<  ||  >>> PHP:アンケートでハイスコアを得たエントリ一覧を表示する >>>

PHP:ブログ用の評価フォームを作る

2008年03月23日

簡易アンケート
タイトルは評価フォームとしたけど、コメントを書いたりとかの素敵機能は一切無しの、点数付けるだけのアンケート機能という感じ。
まぁコメントはコメントフォームがあるからね。MovableType標準の。

今回作ったのは、このエントリの下の方にもあるけど、

  1. エントリごとに5段階で評価したボタンをポチっと押したらカウントされて
  2. 各々の投票数を横棒グラフに表示して
  3. 合計ポイントを表示する
というもの。

準備
まず、任意のデータベースに適当なテーブルを作る。俺はアンケートってことでquestionnaireとした。

$ psql
=> CREATE TABLE questionnaire(
id varchar(128) not null,
a int not null,
b int not null,
c int not null,
d int not null,
e int not null
);
これは一つしか作らないのでわざわざスクリプト書いて作る必要も無いから、コンソールから直接コマンドで作っとく。

idには、エントリのURLの「http://blog.genkikko.net/YYYY/MM/****.php」の、「YYYY/MM/****」を「YYYY_MM_****」に変換して入れる。
たとえばこのエントリだと、「2008_03_php_2」になる。
これで、エントリごとにユニークな値を設定することが出来るので、エントリごとの投票を管理できる。

余談:MovableTypeが作ったデータベースを見てて後から気づいたんだが、年月ごとのディレクトリ部分を除いたファイル名****の部分だけでユニークになってるようで、実はこれで管理できるみたい。既に投稿があるから変更するのはめんどいので、少し処理はかさばるけど新しく作るとき以外に改善する予定はなし。

ソース
うちで動いてるのは、こちら。
questionnaire.php
これを、エントリ内にincludeしてやる。
・配列$ratioは、各項目の点数。悪い評価にはマイナス点を。
・$this_scriptはインクルード元のphpファイルの絶対パス。$_SERVER['PHP_SELF']では、エントリそのもののファイル名を取得してしまってややこしいことになるので。
・130行目あたりの「POSTデータがidのみの場合、そのまま転送」のとこは、入力フォームがラジオボタンだったときの名残。今は不要。
・150行目あたりの「//グラフの幅を決める。」というのは、投票数が多くなってきたときにグラフの横幅が大きくなりすぎるのを防ぐ目的。必要になるのかどうか分からない。

ちなみに、これをincludeするとこで検索サイトのロボットのときはincludeしないようにしてるので、googleなど検索サイトのキャッシュにはこれは表示されてない。

<<< PHP:ob_flush();flush();するときの注意点 <<<  ||  >>> PHP:アンケートでハイスコアを得たエントリ一覧を表示する >>>

アンケート

このページの内容はいかがでしたか?
片手間にポチっと送信してやってください。
役に立った 3
おもしろかった 1
ふつー 1
つまらなかった 0
欲しい情報と違った 0
Score:7

トラックバック

このエントリーのトラックバックURL:
http://www.genkikko.net/mt/mt-tb.cgi/76

コメントを投稿