PHP - ระบบโพลอย่างง่าย


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

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

  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>

คำสำคัญ (Tags): #mysql#php#poll#poll system
หมายเลขบันทึก: 246387เขียนเมื่อ 4 มีนาคม 2009 23:57 น. ()แก้ไขเมื่อ 6 กันยายน 2013 20:24 น. ()สัญญาอนุญาต: ครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกันจำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (3)

ขอบคุณครับคุณมานพ

ผมเคยคิดจะศึกษา PHP อยู่เหมือนกัน

ที่สนใจเพราะส่วนใหญ่จะ Open Source

แต่ยังไม่ได้ฤกษ์เสียที

พอบอกแนวทางง่ายๆ

ในการเริ่มศึกษาหน่อยได้ไหมครับ

ตอนนี้ผมกำลังจะลองศึกษา

Wordpress Mu ซึ่งเป็น Software

ที่ใช้ทำ Blog Platform

คล้ายๆ ตัว KV ของ G2K นี่แหละครับ

แต่ได้ยินว่า Wordpress Mu

ใช้ PHP

ในขณะที่ KV ใช้ Ruby on Rail

สุดท้ายผมคงหนีไม่พ้นตัวใดตัวหนึ่งล่ะครับ

ในทางเทคนิคผมชอบ Wordpress Mu

เพราะเขียนด้วย PHP

แต่ในทางความชอบและคุ้นเคย

ต้อง KV ครับ เพราะคุ้นชินกับ G2K

ไม่ทราบว่าคุณมานพ ศึกษาหรือเคย

implement พวกนี้บ้างหรือเปล่าครับ

ถ้าเป็นผมถนัด PHP มากกว่าน่ะครับ

แต่ถ้าถามว่าจะใช้ระบบไหนดี ส่วนมาก Wordpress มาแรงครับ ส่วน Wordpress Mu เป็นแบบ Multi user น่ะครับ

แต่จริงๆ แล้วผมยังคงนิยมเขียนระบบเองมากกว่าครับเป็นการเรียนรู้ไปด้วย

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท