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 ทั้งหมดที่มีอยู่ในดาต้าเบสและโชว์การให้คะแนนด้วยนะครับ
ตอนนี้มึนครับมึน รบกวนช่วยอีกทีครับ
ขอบคุณล่วงหน้าครับ
เช่น
<?
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");
?>
ผมลองหลายวิธีแล้วครับ ยังไงช่วยหาทางออกให้ผมทีครับ เพราะผมต้องส่งงานแล้ว วันเสาร์นี้อ่ะ รบกวนด้วยครรับ
ส่วนที่แจ้งว่าไม่สามารถ 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
ขอบคุณครับผม จะลองทำดูครับ ได้หรือไม่ได้ยังไง จะมารบกวนอีกนะครับ

















