มาลองทำระบบโพลออนไลน์อย่างง่ายๆ กันครับ

ความสามารถของระบบ

  1. เพิ่มหัวข้อได้ไม่จำกัด
  2. เพิ่มตัวเลือกได้ไม่จำกัด
  3. มีระบบฐานข้อมูล

ไฟล์ที่เกี่ยวข้อง

  • configure.php //ค่าต่างๆ ของระบบ
  • conn_db.php //ติดต่อฐานข้อมูล
  • close_db.php //ปิดการเชื่อมต่อฐานข้อมูล
  • index.php //ไฟล์เริ่มต้น
  • select_page.php //ไฟล์สำหรับเปลี่ยนหน้า
  • style.css //รูปแบบเว็บ
  • inc_index.php //หน้าหลัก
  • inc_add.php //หน้าโหวต
  • inc_report.php //หน้ารายงาน

ขั้นแรก สร้างฐานข้อมูลก่อน

-- phpMyAdmin SQL Dump
-- version 2.11.6
-- http://www.phpmyadmin.net
--
-- โฮสต์: localhost
-- เวลาในการสร้าง:
-- รุ่นของเซิร์ฟเวอร์: 5.0.51
-- รุ่นของ PHP: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- ฐานข้อมูล: `poll`
--

-- --------------------------------------------------------

--
-- โครงสร้างตาราง `choices`
--

CREATE TABLE `choices` (
  `id` int(11) NOT NULL auto_increment,
  `polls_id` int(11) NOT NULL,
  `name` varchar(255) character set utf8 collate utf8_unicode_ci default NULL,
  `point` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `choices_FKIndex1` (`polls_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- dump ตาราง `choices`
--

INSERT INTO `choices` (`id`, `polls_id`, `name`, `point`) VALUES
(1, 1, 'ดีมาก', 5),
(2, 1, 'ดี', 3),
(3, 1, 'ปานกลาง', 2),
(4, 1, 'ต้องปรับปรุง', 1);

-- --------------------------------------------------------

--
-- โครงสร้างตาราง `polls`
--

CREATE TABLE `polls` (
  `id` int(11) NOT NULL auto_increment,
  `topic` varchar(255) character set utf8 collate utf8_unicode_ci default NULL,
  `created` datetime default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- dump ตาราง `polls`
--

INSERT INTO `polls` (`id`, `topic`, `created`) VALUES
(1, 'คิดว่าระบบเป็นอย่างไร', '2009-02-09 23:02:13');

--
-- Constraints for dumped tables
--

--
-- Constraints for table `choices`
--
ALTER TABLE `choices`
  ADD CONSTRAINT `choices_ibfk_1` FOREIGN KEY (`polls_id`) REFERENCES `polls` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;

ขั้นที่สอง สร้างไฟล์ต่างๆ
//configure.php
<?php
###############################################

// ตั้งค่าต่างๆสำหรับระบบที่นี่

$dbhost="localhost";
$dbuser="root";
$dbpass="";
$dbname="poll";

 

###############################################

?>

 

//conn_db.php
<?php
include("configure.php");


 $conn=mysql_connect($dbhost,$dbuser,$dbpass) or die("ERROR: ".mysql_error());
 $select_db=mysql_select_db($dbname,$conn) or die("ERROR: ".mysql_error());
 mysql_query("Set character_set_connection=utf8");
    mysql_query("Set character_set_results=utf8");
    mysql_query("Set character_set_client=utf8");


?>

 

//close_db.php
<?php
include("configure.php");

mysql_close($conn);


?>

 

//style.css
@charset "utf-8";
body {
 font-family: Tahoma, "MS Sans Serif", Verdana;
 font-size: 12px;
}

 

//index.php
<?php
session_start();
$page=="";
$page=$_GET['page'];
if($page==""){
 $page="index";
}
include("conn_db.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Poll System</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h4><a href="?page=index">หน้าหลัก</a></h4>
  <?php include("select_page.php");?>
</body>
</html>
<?php
include('close_db.php');
?>

//select_page.php
<?php
switch($page){
 case $page:
  $p="inc_".$page.".php";
  include($p);
 break;
 default:
  include("inc_index.php");
}
?>

 

//inc_index.php
ทดสอบครับ
<?php
function showpoll(){
 $sql='SELECT * FROM polls';
 $result=mysql_query($sql);
 $rs=mysql_fetch_array($result);
?>
 <form method="post" action="?page=add">
    <input name="topic" type="hidden" value="<?php echo $rs['id'];?>">
<?php
 //while($rs=mysql_fetch_array($result)){
  echo $rs['topic'].'<br>';
  $sql2="SELECT * FROM choices WHERE polls_id='{$rs[id]}'";
  $result2=mysql_query($sql2);
  while($rs2=mysql_fetch_array($result2)){
   echo '<input type="radio" name="choice" id="choice" value="'.$rs2[id].'" /> '.$rs2['name'].'<br>';
  }
 //}
?><input name="s" type="submit" value="โหวด">
 </form>
<?php
}
showpoll();
?>

 

//inc_add.php
<?php
$topic=$_POST['topic'];
$choice=$_POST['choice'];

//echo $topic;
//echo $choice;
$sql="UPDATE choices SET point=point+1 WHERE polls_id='$topic' AND id='$choice'";
$result=mysql_query($sql);
if($result){
 echo 'บันทึกข้อมูลเรียบร้อย <a href=?page=report&topic='.$topic.'>ดูผลการโหวด</a>';
}
?>

 

//inc_report.php
<?php
$topic=$_GET['topic'];
$sql="SELECT * FROM polls WHERE id='$topic'";
$result=mysql_query($sql);
$rs=mysql_fetch_array($result);
echo $rs['topic'];
?>
<table width="100%" border="1">
 
<?php
$sql2="SELECT name,point FROM choices WHERE polls_id='$topic'";
$sqls="SELECT SUM(point) AS sp FROM choices WHERE polls_id='$topic'";
$results=mysql_query($sqls);
$rss=mysql_fetch_array($results);
$result2=mysql_query($sql2);
while($rs2=mysql_fetch_array($result2)){
 $pc=$rs2['point']*100/$rss['sp'];
 echo "<tr><td width=\"10%\">".$rs2['name']."</td><td><table width=\"".$pc."%\" bgcolor=\"red\"><tr><td>".round($pc,2)." %</td></tr></table></td></tr>";
 
}
?>
 
</table>