久々にPHPやりましょう。
MySQLデータベースサーバーと連携させて投票システムを作ります。
速攻で作りました。
お題は「堀江社長を支持しますか?」です
解答はこちらからお願いします
まず、データベースを準備しましょう。
CREATE DATABASE `vote`;
でデータベーススキーマを作成します。
そのスキーマ内に
CREATE TABLE `vote` (
`answer` INT NOT NULL ,
`ip` TEXT NOT NULL )
を実行させて表を作ります。
vote.html (質問を書いたHTML)を準備します
当ページの例では以下のようになります
----------------------------------------
<html><body>
あなたはライブドアの堀江社長を支持しますか?<br>
<form action="vote.php" method="post">
<p> <input name="answer" type="radio" value="1" checked>
1.支持します<br>
<input name="answer" type="radio" value="2"> 2.支持しません<br>
<input name="answer" type="radio" value="3"> 3.どちらでもないです<br>
<input name="answer" type="radio" value="4"> 4.逝ってヨシ!</p>
<p><input type="submit" name="Submit" value="送信"></p>
</form> </body></html>
----------------------------------------
あとはvote.phpを準備します。
----------------------------------------
<?php
$host = "localhost"; // ホスト名
$user = "user"; // ユーザー名
$pass = "pass"; // パスワード
$dbname = "vote"; // データベース名
$dbtable = "vote"; // データベーステーブル名
$db = @mysql_connect($host,$user,$pass) or die("Could not connect MySQL server");
// データベースサーバーに接続
@mysql_select_db($dbname) or die("Could not use selected database");
// データベースを選択
$sql = "SELECT * FROM `${dbtable}` WHERE ip='${_SERVER['REMOTE_ADDR']}';";
$result = @mysql_query($sql) or die("Could not query of [ $sql ]");
// SQLクエリーを送信
$row = @mysql_fetch_array($result); // 結果をfetch
if(!$row){ // IPで投票済みか判定
$sql = "INSERT INTO `${dbtable}` SET answer='${_POST['answer']}',ip='${_SERVER['REMOTE_ADDR']}';";
$result = @mysql_query($sql) or die("Could not query of [ $sql ]");
} else {
echo "エラー:あなたはすでに投票されています<br>\n";
}
echo "<h2>結果表示</h2>\n";
$sql = "SELECT COUNT(*),answer FROM `${dbtable}` GROUP BY answer;";
$result = @mysql_query($sql) or die("Could not query of [ $sql ]");
while ($row = @mysql_fetch_array($result)) { // 結果をfetch
echo "${row['answer']}を選んだ人 ${row[0]}人<br>\n";
}
?>
----------------------------------------