ポンクソフト

アンケートシステムの作成 - PHPでファイルの読み書き・掲示板

前ページ PHPでファイルの読み書き・掲示板 TOP 次ページ

目次

  1. PHPでファイルの読み書き・掲示板
  2. ファイルの読み込み
  3. ファイルの書き込み
  4. ファイルの読み書き(ゲストブック)
  5. 設定ファイルの読み書き
  6. CSVファイルの読み込み
  7. テキストエディタの作成
  8. アンケートシステムの作成
  9. 掲示板1(シンプル)

アンケート投票システムの作成

ファイルの読み書きの応用として、Web上で投票できるアンケートシステムを作成します。

プログラムの作成

以下のソースを入力してください。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>アンケート</title>
</head>
<body>
<form method="post" action="enquete.php">
あなたが好きなケーキは?<br><br>
<?php
$cake = array('イチゴショート', 'モンブラン', 'チーズケーキ',
  'レアチーズケーキ', 'ミルフィーユ');
for ($i = 0; $i < count($cake); $i++) {
  print "<input type='radio' name='cn' value='$i'>{$cake[$i]}<br>\n";
}
?>
<br>
<input type="submit" name="submit" value="投票">
</form>
<table border='1'>
<?php
$ed = file('enquete.txt');
for ($i = 0; $i < count($cake); $i++) $ed[$i] = rtrim($ed[$i]);
if ($_POST['submit']) {
  $ed[$_POST['cn']]++;
  $fp = fopen('enquete.txt', 'w');
  for ($i = 0; $i < count($cake); $i++) {
    fwrite($fp, $ed[$i] . "\n");
  }
  fclose($fp);
}
for ($i = 0; $i < count($cake); $i++) {
  print "<tr>";
  print "<td>{$cake[$i]}</td>";
  print "<td><table><tr>";
  $w = $ed[$i] * 10;
  print "<td width='$w' bgcolor='green'> </td>";
  print "<td>{$ed[$i]} 票</td>";
  print "</tr></table></td>";
  print "</tr>\n";
}
?>
</table>
</body>
</html>
入力が終わったら「enquete.php」というファイル名でサーバにアップしてください。

データファイルの作成

次に、アンケートの結果を格納するデータファイルを作成します。「enquete.txt」という名前の新規テキストファイルを作成し、以下のように入力してください。
0
0
0
0
0
その後、サーバにアスキー転送モードでアップし、ファイルの属性変更から「その他」に書込許可属性を与えてください。

実行

enquete.php をブラウザで実行し、実際に投票ができるか確認してみてください。

ソースの解説

$cake = array('イチゴショート', 'モンブラン', 'チーズケーキ',
  'レアチーズケーキ', 'ミルフィーユ');
配列 $cake にアンケートの項目が順に入ります。
for ($i = 0; $i < count($cake); $i++) {
  print "<input type='radio' name='cn' value='$i'>{$cake[$i]}<br>\n";
}
アンケートの項目を選択するためにラジオボタンを表示している部分です。項目が選択されると、POST メソッドの変数 cn に選択された項目の番号(上から順に 0, 1, 2, 3, 4)が入ります。
<input type="submit" name="submit" value="投票">
投票ボタンが押されると POST メソッドの変数 submit がセットされます。
$ed = file('enquete.txt');
enquete.txt には、各アンケート項目の結果の値が改行区切りで入っています。それを配列 $ed に格納しています。
for ($i = 0; $i < count($cake); $i++) $ed[$i] = rtrim($ed[$i]);
各行の改行が邪魔なので rtrim 関数によって削除しています。
if ($_POST['submit']) {
投票ボタンが押されたときは if 文内の処理を行ないます。
$ed[$_POST['cn']]++;
ラジオボタンで選択された項目の値をひとつ増やしています。
  $fp = fopen('enquete.txt', 'w');
  for ($i = 0; $i < count($cake); $i++) {
    fwrite($fp, $ed[$i] . "\n");
  }
  fclose($fp);
データファイルを書き込み用にオープンし、新しい項目の値を一行ずつ書き込んでいます。
for ($i = 0; $i < count($cake); $i++) {
  print "<tr>";
  print "<td>{$cake[$i]}</td>";
  print "<td><table><tr>";
  $w = $ed[$i] * 10;
  print "<td width='$w' bgcolor='green'> </td>";
  print "<td>{$ed[$i]} 票</td>";
  print "</tr></table></td>";
  print "</tr>\n";
}
テーブルを利用して棒グラフを表示している部分です。まず左端に項目名を出力し、その右にグラフを出力し、その右に票数を出力しています。棒グラフはテーブルセルの背景色を緑にし、セルの長さを票数× 10 とすることによって生成しています。
前ページ PHPでファイルの読み書き・掲示板 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

このページに関するコメントをどうぞ

お名前:


paywinlv
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 18:04

anklebitcw
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 11:35

butterfxa
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 03:37

nhadeptronmr
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 20:39

nhadeptronlv
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 15:24

sinforve
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 12:46

calltrackju
すべての
cbbnews24.com
csgobooms.com
csgojoybets.com
incareersjobs.com
stcmidtenn.org
thewill.in
sakirkaratas.com
apexturnkey.in
medray.in
applevalleymarket.com
b8b90.com
danhhotgay.com
cstopstake.com
nsm.org.in
vov-fc.com
csgohugepots.com
eaglesapparelshop.com
mymobileappmobiappssub2016.com
sbppl.org
gracedental.in
kehulin.com
cheappricetoyou2015.com
vamortgageloantexas.com
doitacdoanhnghiep.com
techimanage.com
elmi.co
upea.in
esncordoba.org
goal888cash.com
fullebookz.com
2winde222.com
投稿者
2017/01/23 09:37

calltrackxm
すべての
cbbnews24.com
csgobooms.com
csgojoybets.com
incareersjobs.com
stcmidtenn.org
thewill.in
sakirkaratas.com
apexturnkey.in
medray.in
applevalleymarket.com
b8b90.com
danhhotgay.com
cstopstake.com
nsm.org.in
vov-fc.com
csgohugepots.com
eaglesapparelshop.com
mymobileappmobiappssub2016.com
sbppl.org
gracedental.in
kehulin.com
cheappricetoyou2015.com
vamortgageloantexas.com
doitacdoanhnghiep.com
techimanage.com
elmi.co
upea.in
esncordoba.org
goal888cash.com
fullebookz.com
2winde222.com
投稿者
2017/01/22 23:55

techitaxxe
すべての techitax.com csprey.com lightshadowspace.com csboom.pro cbbnews24.com csgobooms.com csgojoybets.com incareersjobs.com stcmidtenn.org thewill.in sakirkaratas.com apexturnkey.in 投稿者
2017/01/22 20:37

test
testです
2017/01/22 16:39

残りを読む »