【コピペプログラミング入門】アンケートを設置しよう

0710-009-000.pngプログラムって難しいものだって思ってる人は多いと思うけど、実はプログラミング言語の進化で今は簡単になっているんだー。PHPを使えば簡単にプログラマーになれちゃうぞ。今回は前回の続き、アンケートシステムの制作と設置についての解説だよ!(バーチャル2ちゃんねらー裕子

設定が終ったら次はアンケートの送信部分を作るよ。基本的に送信部分に関しては図(A)のようなHTMLを作ればOK。anketo.phpは、setting.phpから設定を読み込み図(A)のHTMLを作る動きをしているんだ。

また、toukou.phpでは、anketo.phpのフォームから送信されてきた内容を受け取り、それをもとにログファイルの値に1を加算するという動きをしてる。

anketo.phpのソースコードは、スペースの都合上割愛するけど、興味のある人は下からダウンロードして参照してみてね。

アンケートのフォームと送信部分を作る

ネトランアンケートシステム
  
作者:ネトラン編集部

toukou.phpソースコード

<?php

include_once("setting.php");

//設定項目から送られてくる可能性のある項目だけを取得
foreach($anketo as $key => $value){

 $name = "radiobutton_$key";

 //送られてきた項目を取得
 $touhyou = $_POST[$name];

  //文字が送信されていた場合は投票されていると判定
 if(strlen($touhyou)>0 && is_numeric($touhyou)){

  //ログファイル名作成
$log_file_name = "log/".$key."_".$touhyou .".log";

  //ログファイルを開く
  $fp = fopen($log_file_name,'r+');

  //ファイルから投票値読み込み
  $now_touhyou = trim(fread($fp,1024));

  //投票値に1を足す
  $now_touhyou = $now_touhyou + 1;

  //書き込み位置を先頭にする
  rewind($fp);

  flock($fp, LOCK_EX);

//ファイルに1を足した投票値を書き込み
  fwrite($fp, $now_touhyou);

  flock($fp,LOCK_UN);

  fclose($fp);

 }

}


//以下は投票を読み込み
 include_once("view.php");
?>
toukou.phpでは、anketo.phpのフォームから送信されてきた内容を受け取り、それを元にログファイルの値に1を加算するという動きをしている

アンケートフォーム (図(A))

<form action="toukou.php" method="POST">
アンケートに関する感想をお知らせください<br>
<input name="radiobutton_0" type="radio" value="0" checked>面白かった<br>
<input name="radiobutton_0" type="radio" value="1" >普通<br>
<input name="radiobutton_0" type="radio" value="2" >面白くなかった<br>
<br>
(中略)
<input type = "submit" name = "submit" value = "アンケートを送信する">
</form>

0711-017-001-thum.jpg
フォームから送信された値をPHPでは簡単に取得できる。「アンケートを送信する」をクリックすると、actionに指定されている「toukou.php」に値が送信される。すると、「$_POST["radiobutton_0"]」という特殊な変数にvalueで指定されていた0~2の値が入るのだ(ユーザーがチェックしているものに応じて可変)

include_onceとは?

anketo.phpなどで「include_once("setting.php");」といった記述が出てくることがあるけど、これはsetting.phpの内容を「include_once("setting.php");」の位置に丸々コピー&ペーストしたのと一緒。つまり、setting.phpの内容がその記述の箇所で実行されることになるの。同じプログラムをいろんなphpプログラムから呼び出して使う場合に便利だよ。

アンケート結果をグラフで表示

加算の動きまでできれば、後はログファイルを読み込んで表示する部分を作ればいいだけだけだよ。もちろん、ただ数字を表示するだけなら、数値を読み込んでそれを「print」(表示)してやればいい。

だけど、今回は見た目も楽しくするために、棒グラフが出るちょっと凝ったものを作ってみるよー。棒グラフにすると、どれくらいの割合なのかがよく分かるので、見た目的にもちょっぴり楽しい。

アンケートの結果を棒グラフで表示する「view.php」では、ログファイルを読み込み、左上図のようなHTMLを作る動きをしている

ソースコードは誌面の都合上割愛するが、興味のある人はネトラン公式サイトにアップされているので参照してほしい。setting.phpの冒頭の配列を変更するとアンケート項目が変化するので、いろいろ試してみてね。

アンケート結果

<tr><td colspan=2>アンケートに関する感想をお知らせください: 合計<b>18</b>件</td><tr>

<tr><td width="150px">
<img src = "bar.gif" height = "5" width = "77"> 77%</td><td>面白かった: <b>14</b>件</td>
</tr>

<tr><td width="150px">
<img src = "bar.gif" height = "5" width = "5"> 5%</td><td>普通: <b>1</b>件</td>
</tr>

<tr><td width="150px">
<img src = "bar.gif" height = "5" width = "16"> 16%</td><td>面白くなかった: <b>3</b>件</td>
</tr>

0711-017-002-thum.jpg
ソースコードを見てもらえば分かるとおり、もともと高さ5px、幅100pxの「画像の幅」を変更することで、棒グラフを表示しているのだ。そのために必要なのが個々の投票項目の割合の計算だ。割合の計算は「(個々の項目への投票数×100)/総投票数」で行っているぞ

0711-017-003-thum.jpg
ソースコードが出そろった結果、最終的な設置はこのようになる。logフォルダのパーミッションを777に変更しておくことを忘れないようにしておこう

バーチャル2ちゃんねらー裕子
2001年から2ちゃんねるスレ紹介サイトをやってたりします。なんだか今はネット系記事などを書くことが多いですねー。決め台詞は「今日も明日も逝ってよし」。今回は本文を担当。

FinalFighter
2ちゃんねらー裕子の中の人(などいないっ)。ネットライター、イラスト描き、プログラミングなどをこなしている。ロックマン1のTASの世界記録(15:38)所持。今回は技術情報を担当。



……この記事の続きはネットランナー11月号で!
通信販売はこちらから: amazon


はてなブックマーク livedoor クリップ Yahoo!ブックマーク del.icio.us
Google ブックマーク Buzzurl イザ!ブックマーク FC2 ブックマーク

2007年10月26日 17:33

« 【コピペプログラミング入門】PHPでアンケートを作ってみよう | メイン | PC宛に届くメールをケータイで読みこなす! »

トラックバック

このエントリーのトラックバックURL:
http://www.new-akiba.com/mt/mt-tb.fcgi/38858

そのほかの「Low-Rez」新着記事