พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
PHP development / โค้ดเพิ่มเติมทำโพลคับ ผมทำแบบนี้
โอ๋
โอ๋
Thu 23 Feb 2006 14:13:47

<?
include ("config.inc.php");
$SQL="SELECT ps.subjectno, ps.subjectname, pc.choiceno, pc.choicename FROM  PollSubject ps, PollChoice pc WHERE ps.subjectno = pc.subjectno AND ps.subjectno ORDER BY ps.subjectno, pc.choiceno";

$table = mysql_query($SQL,$Conn) or die("ไม่สามารถเรียกดูข้อมูลในเทเบิล PollSubject/PollChoice ได้");
?>

ข้างบนเป็นติดต่อดาต้าเบส

ส่วนข้างล่างเป็นโค้ดให้ลงคะแนน

<?
while($row = mysql_fetch_array($table))
{
$subjectno = $row["subjectno"];
$subjectname = $row["subjectname"];
$choiceno = $row["choiceno"];
$choicename = $row["choicename"];
 if ($choiceno == "$subjectno")
 {
  print "<b> $subjectname</b><br>";
  print "<input type=hidden name=Subject value=$subjectno>";
 }
  print "<input  type=radio name=Choice value=$choiceno>$choicename<br>";
 }
?>

ผมมีปัญหาคือว่า ปกติตรงมีแค่ข้อเดียว คือ เซ็ทแค่ ps.subjectno = 1 ให้มีเฉพาะ หัวข้อที่ 1 ผมก็เลยเอา 1 ออกไป ps.subjectno มันก็เลยโชว์มาทั้งหมดเลย ซึ่งเป็นส่วนที่ผมอยากให้โชว์อยู่แล้วเพราะผมทำ 10 หัวข้อ

ปัญหาอยู่ตรงที่เวลาคลิ๊กปุ่ม radio มันเหมือนคลิ๊กได้แค่ครั้งเดียว ไม่แยกเป็นข้อ ๆ อ่ะครับ ยังงี้ผมต้องทำยังไงบ้างในการเพิ่มสคริ๊ปเข้าไปเพื่อให้แยกเป็นข้อ ๆ

ส่วนโค้ดข้างล่างนี้เป็นการโชว์ poll ทั้งหมดที่มีอยู่ในดาต้าเบสและโชว์การให้คะแนนด้วยนะครับ

ตอนนี้มึนครับมึน รบกวนช่วยอีกทีครับ

ขอบคุณล่วงหน้าครับ

Administrator
Thu 23 Feb 2006 19:19:15
ตอนที่แสดงผล radio button นั้นก็ให้ตั้งชื่อตามข้อก็ได้ครับ
เช่น

<?
while($row = mysql_fetch_array($table))
{
$subjectno = $row["subjectno"];
$subjectname = $row["subjectname"];
$choiceno = $row["choiceno"];
$choicename = $row["choicename"];
 if ($choiceno == "$subjectno")
 {
  print "<b> $subjectname</b><br>";
  print "<input type=\"hidden\" name=\"Subject\" value=\"".$subjectno."\">";
 }
  print "<input  type=\"radio\" name=\"ch".$subjectno."\" value=".$choiceno.">".$choicename."<br>";
 }
?>

ประมาณนี้ครับ
โอ๋
โอ๋
Thu 23 Feb 2006 22:40:30

การคลิ๊กใช้ได้ครับเลือกทีละข้อได้ แต่  มีปัญหาอีกครับคือมันจะโชว์แบบว่า

ผมจะมีห้วข้ออยู่ตารางดาต้าเบสชื่อ xxxxx1
ส่วนช้อยอยู่อีกต่างรางชื่อ   xxxxx2
ในโค้ดข้างล่างนี้

<?
include ("config.inc.php");
$SQL="SELECT ps.subjectno, ps.subjectname, pc.choiceno, pc.choicename FROM  PollSubject ps, PollChoice pc WHERE ps.subjectno = pc.subjectno AND ps.subjectno  ORDER BY ps.subjectno, pc.choiceno";

$table = mysql_query($SQL,$Conn) or die("ไม่สามารถเรียกดูข้อมูลในเทเบิล PollSubject/PollChoice ได้");
?>

<form action="vote2.php" method="post">
<?
while($row = mysql_fetch_array($table))
{
$subjectno = $row["subjectno"];
$subjectname = $row["subjectname"];
$choiceno = $row["choiceno"];
$choicename = $row["choicename"];
 if ($choiceno == "$subjectno")
 {
  print "<b> $subjectname</b><br>";
  print "<input type=\"hidden\" name=\"Subject\" value=\"".$subjectno."\">";
 }
  print "<input  type=\"radio\" name=\"ch".$subjectno."\" value=".$choiceno.">".$choicename."<br>";
 }
?></form>

มันจะดึงข้อช้อยแบบไม่สม่ำเสมอนะครับคือ ประมาณว่า

1. ความรวดเร็วในการเข้าเว็บไซต์ Online-Station.net
แย่
ปรับปรุง
ธรรมดา
ดี
ดีมาก
2. เนื้อหาภายในเว็บไซต์ Online-Station.net
แย่
ปรับปรุง
ธรรมดา
ดี
ดีมาก
3. ความสะดวกในการใช้งานเว็บไซต์
แย่
ปรับปรุง
ธรรมดา
ดี
ดีมาก

ซึ่งจริง ๆ แล้วมันต้องมีข้อช้อยแค่ 5 ช้อยเองครับ แต่นี่มันขึ้นหกช้อยเลย 
แล้วพอผมกดปุ่ม โอเชมันก็จะไม่สามารถติดต่อดาต้าเบสได้อ่ะครับ
ไม่รู้เป็นเพราะอะไรนะคับ

รบกวนอีกทีคับ

โอ๋
โอ๋
Thu 23 Feb 2006 22:57:39

เอทำไมตอนผมก๊อบมาโพสท์มันขึ้นหกอันล่ะแล้วไหงมันโชว์ 5 อันล่ะ  อ๋อดูแล้วว่าพอผมเอาโค้ดของพี่ใส่

<?
while($row = mysql_fetch_array($table))
{
$subjectno = $row["subjectno"];
$subjectname = $row["subjectname"];
$choiceno = $row["choiceno"];
$choicename = $row["choicename"];
 if ($choiceno == "$subjectno")
 {
  print "<b> $subjectname</b><br>";
  print "<input type=\"hidden\" name=\"Subject\" value=\"".$subjectno."\">";
 }
  print "<input  type=\"radio\" name=\"ch".$subjectno."\" value=".$choiceno.">".$choicename."<br>";
 }
?>
โค้ดข้างบนนี้มันก็โชว์ข้อละ 6 ช้อยเลยครับ แล้วพอกด โอเช  มันก็ไม่สามารถติดต่อดาต้าเบสได้อ่ะครับ

โค้ดข้างล่างนี้เป็นหน้าที่ใช้ โชว์ผลจากการกดแต่ละข้ออะครับ

<?
include ("config.inc.php");

$Subject = $_POST["Subject"];
$Choice = $_POST["Choice"];

$SQL = "UPDATE PollChoice SET vote = vote + 1 WHERE  subjectno = $Subject  AND  choiceno = $Choice";
mysql_query($SQL ,$Conn) or die("ไม่สามารถบันทึกข้อมูลในเทเบิล PollChoice ได้ ");

//เพิ่มเข้ามา --------------------------------------------
$SQL = "SELECT SUM(vote) sumvote FROM PollChoice WHERE subjectno = 1";
$subtotal1 = mysql_query($SQL,$Conn) or die ("ไม่สามารถรวมผลการโหวตในเทเบิล PollChoice ได้");
$subtotal2 = mysql_fetch_array($subtotal1);
$totalvote = $subtotal2["sumvote"];
//--------------------------------------------

$SQL = "SELECT ps.subjectname, pc.choiceno, pc.choicename, pc.vote  FROM  PollSubject ps, PollChoice pc  WHERE ps.subjectno = pc.subjectno AND ps.subjectno = 1 ";
$table = mysql_query($SQL,$Conn) or die ("ไม่สามารถเรียกดูข้อมูลในเทเบิล PollSubject/PollChoice ได้");

?>
<center><table width=500 cellspacing=0 cellpadding=0 border=1 style="font-family:'MS Sans Serif';font-size:12pt">
  <?
$totalpercent = 0;
while($row = mysql_fetch_array($table))
{
 $subjectname = $row["subjectname"];
 $choiceno = $row["choiceno"];
 $choicename = $row["choicename"];
 $vote = $row["vote"];
  if ($choiceno == 1)
  {
   print "<tr align=center><td colspan=3><b><br><font color=blue>$subjectname</font></b></td></tr>";
   print "<tr align=center><td><b> ตัวเลือก </b></td><td><b>ผลการให้คะแนน</b></td><td><b>เปอร์เซ็นต์</b></td></tr>";
  }
   $percent = number_format(($vote/$totalvote)*100, 2, '.', ',');
   print "<tr><td align=right><b>$choicename : </b></td><td align=center>$vote</td><td align=center>$percent %</td></tr>";
   
   $totalpercent = number_format($totalpercent + $percent, 2, '.' , ',');
  }
   print "<tr><td align=right><b> รวมคะแนนโหวต : </b></td><td align=center><b>$totalvote</b></td><td align=center><b>$totalpercent %</b></td></tr><br>";
   
   include ("endconnect.inc.php");
     

?>

ผมลองหลายวิธีแล้วครับ ยังไงช่วยหาทางออกให้ผมทีครับ เพราะผมต้องส่งงานแล้ว วันเสาร์นี้อ่ะ รบกวนด้วยครรับ

Administrator
Fri 24 Feb 2006 01:12:57
ที่แจ้งว่า Choice มี 6 ข้อนี้ผมไม่แน่ใจนะครับ ลองทำการ Query ใน phpMyAdmin เพื่อแสดงผลดูก่อนครับว่าได้ข้อมูลถูกต้องครับถ้วนหรือไม่

ส่วนที่แจ้งว่าไม่สามารถ submit ได้หลังจากโหลดฟอร์มทั้งหมดแล้วให้ลอง View source HTML ผ่าน Browser ดูครับว่าขาด Tag ใดไปหรือเปล่าครับ

$SQL = "SELECT SUM(vote) sumvote FROM PollChoice WHERE subjectno = 1";
$subtotal1 = mysql_query($SQL,$Conn) or die ("ไม่สามารถรวมผลการโหวตในเทเบิล PollChoice ได้");
$subtotal2 = mysql_fetch_array($subtotal1);
$totalvote = $subtotal2["sumvote"];

ตรงนี้ที่ Comment ไว้ว่าเพิ่มเข้ามานี้ผมเข้าใจว่าต้องการที่จะนับผมโหวต ทำไมใช้ Sum() น่าจะเป็น COUNT() มากกว่านะครับ

ส่วนปัญหาที่ติดต่อ DB ไม่ได้นี้ลองทำการใส่ echo mysql_error() หลังคำสั่งที่คิดว่ามีปัญหาดูครับ ถ้าไม่ใช่ก็ทำการเลื่อนไปหลังคำสั่งต่อไปเพื่อทำการ Debug ครับว่าผิดตรงไหน
โอ๋
โอ๋
Fri 24 Feb 2006 07:55:07

ขอบคุณครับผม จะลองทำดูครับ ได้หรือไม่ได้ยังไง จะมารบกวนอีกนะครับ

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login