【コピペプログラミング入門】PHPでアンケートを作ってみよう

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

今回はアンケートを作ってみるよ。何とこのシステムがネトランに使われるといううわさもあり! 簡単なプログラムなんだけどそれだけでも有用になってしまうのがPHPのすごいところだよね。ネトランのアンケートのように、どの項目がよかったかを投票するシステムを作ってみるよ!

アンケートを作るに当たって今回は、
「setting.php」
(アンケートの項目の設定と、ログファイルの作成を行うプログラム)
 
「toukou.php」
(アンケートフォームからの投稿を受け取り加算するプログラム)
 
「view.php」
(アンケート結果を表示するプログラム。結果閲覧ユーザーはここへアクセスする)
 
「anketo.php」
(アンケートフォームを表示するプログラム。投稿ユーザーはここへアクセスする)
 
の4つのプログラムを作成するよ。難しいという人は、プログラムの理解よりも取りあえず設置して動かしてみよう。(設置方法は次回の更新で解説します)

まずはアンケートの項目の設定と、ログファイルの作成を行うプログラムsetting.phpを作成するね。設定部分によって、logフォルダの下にログファイルを自動的に作る機構も組み込むよ。

今回作るものはどんなものなの?

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

0710-008-001-thum.png「アンケートを送信する」をクリックすることで投票があった値が加算される仕組みにする。設定を変更するだけで投票項目を簡単に変更できるようにする

0710-008-002-thum.png投票結果を閲覧することも可能になっている。判読性の高いグラフ表示にしてみたぞ

ソースコードを見る前にPHPで重要な「配列」のことを理解しておこう

(1) 配列へ値を入れる方法

$変数名["添え字"]="値";

(2) 配列とは?
 
<?php $hensuu["1"]="aaa";
$hensuu["2"]="bbb";
$i="1"; //($iに1という文字が入っている)
print $hensuu[$i];
print $hensuu[$i+1];
?>
 

上記のプログラムを実行すると、
結果は aaabbb となる
つまり添え字の部分に変数を入れても値を取り出すことができるのだ。

 
$hensuu["aa"]="hoge";
$hensuu[1]=3;
$hensuu["abc"]="cde";
 

という配列のときのイメージ図がこれ↓



ログファイルの作成を行うプログラム「setting.php」を作成する

setting.phpのソース

<?php
//項目の説明を指定
//添え字がアンケート番号
$anketo[0]["explain"] = "アンケートに関する感想をお知らせください";
$anketo[1]["explain"] = "この講座の難易度をお聞かせください";
$anketo[2]["explain"] = "面白かった企画をお選びください";

//選択項目を指定(1~最大値の投票)
//$anketo[0]["explain"]に対応する回答項目
$anketo[0]["Item"][0] = "面白かった";
$anketo[0]["Item"][1] = "普通";
$anketo[0]["Item"][2] = "面白くなかった";

//$anketo[1]["explain"]に対応する回答項目
$anketo[1]["Item"][0] = "難しすぎる";
$anketo[1]["Item"][1] = "普通";
$anketo[1]["Item"][2] = "優しい";

//$anketo[2]["explain"]に対応する回答項目
$anketo[2]["Item"][0] = "コピペプログラミング";
$anketo[2]["Item"][1] = "ネットランナー";


//その項目のログファイルがあるかチェックしなければ作成
foreach($anketo as $key => $value){

 foreach($value["Item"] as $item_number => $item_name){

  //$anketo[0]["Item"][0]のログファイルが log/0_0.log
  //$anketo[1]["Item"][2]のログファイルが log/1_2.log といったファイル名になる。
  $log_file_name = "log/".$key."_".$item_number.".log";

  //ログファイルが存在するかをチェック
  if(!file_exists($log_file_name)){

   //ファイル作成(書き込めるようにパーミッションも設定)
   touch($log_file_name);
   chmod($log_file_name,0666);

   //作成したログファイルに0という文字を書き込み
   $fp = fopen($log_file_name,'w');
   flock($fp, LOCK_EX);
   fwrite($fp, "0");
   flock($fp,LOCK_UN);
   fclose($fp);

  }

 }

}

?>
setting.phpでは主にアンケートの設定およびログファイルの自動生成ができるようになっている


setting.phpにも出てきてるけどforeachってナニ?

<コード>
 $hensuu["aa"]="hoge"; 
 $hensuu[1]=3; 
 $hensuu["abc"]="cde"; 
 
 foreach($hensuu as $key=>$value){
 
print $key."\n";
print $value."\n";
配列の添え字を$keyへ、値を$valueへ取り出し、すべて取り出すまで「{」から「」の間にある命令を繰り返す
繰り返される命令
 
} 変数$keyと$valueの内容を表示せよという命令
 


0710-008-003-thum.png上記のコードを実行すると左の図のような表示になる。foreachというのはタンスの引き出しの上から順番に引き出しに貼ってあるシールの名称と中身の値を順番に取り出しながらループする命令だ。すべて取り出し終わるとループから抜ける

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

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



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


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

2007年10月25日 16:45

« GPSを駆使して目的地へのルートを探る | メイン | 【コピペプログラミング入門】アンケートを設置しよう »

トラックバック

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

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