|
|
|
สอบถามเกี่ยวกับการเขียนตอบกลับ webboard ครับ |
|
|
|
|
|
|
|
ติดปัญหาตรงที่มันตอบกลับได้เเค่ครั้งเดียวครับผม
show_detail
<?php
$item = $_GET['item'];
$link = mysqli_connect("localhost", "root", "", "board");
function renHTML($strTemp) {
$strTemp = nl2br(htmlspecialchars($strTemp));
return $strTemp;
}
$sql = "SELECT * FROM question Where qno = '$item'";
$result = mysqli_query($link,$sql);
$dbarr = mysqli_fetch_array($result);
?>
คำถาม <b>
<?php
echo renHTML($dbarr['qtopic']);
?>
</b><br>
<table width="100%" border="1" bgcolor="#E0E0E0" bordercolor="black">
<tr><td>
<?php
echo renHTML($dbarr['qdetail']);
?><br>
โดย <b>
<?php echo renHTML($dbarr['qname']);
?></b>
</td></tr>
</table><br>
<?php
$sql = "SELECT * FROM Answer Where aquestionno=$item;";
$result = mysqli_query($link,$sql);
if ($result)
{
while ($dbarr = mysqli_fetch_array($result))
{
?>
คำตอบที่ : <b>
<?php
echo $dbarr['ano'];
?></b><br>
<table width="100%" border="1">
<tr><td>
<?php
echo renHTML($dbarr['adetail']);
?><br>
โดย <b>
<?php
echo renHTML($dbarr['aname']);
?></b>
</td></tr>
</table><br>
<?php
}
}
echo "<form method=post action=add_answer.php?answerno=".$item.">";
mysqli_close($link);
?>
คำตอบ : <br>
<textarea cols="40" rows="5" name="a_answer"></textarea><br>
ชื่อ : <input type="text" name="a_name" size="30"><br><br>
<input type="submit" value="ส่งคำตอบ">
<input type="reset" value="ยกเลิก">
</form>
[head]add_answer.php/head]
$link = mysqli_connect("localhost", "root", "", "board");
$answerno =$_GET["answerno"];
$a_answer =$_POST["a_answer"];
$a_name = $_POST["a_name"];
$sql = "SELECT * FROM Answer Where aquestionno = $answerno;";
$count = 1;
$result = mysqli_query($link,$sql);
while ($dbarr = mysqli_fetch_array($result))
{
$count++;
}
$sql = "INSERT INTO Answer Values ($answerno, $count, '$a_answer', '$a_name');";
$result = mysqli_query($link,$sql);
if ($result)
{
$sql = "UPDATE question Set qcount = qcount+1 WHERE qno = '$answerno'";
$result = mysqli_query($link,$sql);
echo "บันทึกแล้ว<br><br>";
echo "<a href=show_detail.php?item=$answerno>กลับไปยังกระทู้</a><br>";
echo "<a href=show_question.php>หน้าหลัก</a>";
}
else {
echo "บันทึกไม่สำเร็จ";
}
mysqli_close($link);
Tag : PHP
|
|
|
|
|
|
Date :
2020-08-05 09:18:01 |
By :
bannana |
View :
697 |
Reply :
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะแก้ปัญหานี้ได้ สงสัยต้องคัดลอกโค้ดไปรันดู...แต่ติดตรงฐานข้อมูล
ลองแคปภาพการแสดงผลมาดูหน่อยครับ ว่าตอบกลับได้ครั้งเดียวเป็นอย่างไร
|
|
|
|
|
Date :
2020-08-05 15:34:19 |
By :
PhrayaDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : PhrayaDev เมื่อวันที่ 2020-08-05 15:34:19
รายละเอียดของการตอบ ::
นี่โค้ดทั้งหมดครับ คือพิมตอบกลับอีกครั้งแล้วมันขึ้นบันทึกไม่สำเร็จครับ
add_answer.php
<?php
$answerno =$_GET["answerno"];
$a_answer =$_POST["a_answer"];
$a_name = $_POST["a_name"];
$link = mysqli_connect("localhost", "root", "", "board");
$sql = "SELECT * FROM Answer Where aquestionno = $answerno;";
$count = 1;
$result = mysqli_query($link,$sql);
while ($dbarr = mysqli_fetch_array($result))
{
$count++;
}
$sql = "INSERT INTO Answer "." Value ($answerno, $count, '$a_answer', '$a_name');";
$result = mysqli_query($link,$sql);
if ($result)
{
$sql = "UPDATE question Set qcount = qcount+1"." WHERE qno = $answerno;";
$result = mysqli_query($link,$sql);
echo "บันทึกแล้ว<br><br>";
echo "<a href=show_detail.php?item=$answerno>กลับไปยังกระทู้</a><br>";
echo "<a href=show_question.php>หน้าหลัก</a>";
}
else {
echo "บันทึกไม่สำเร็จ";
}
mysqli_close($link);
?>
form_question.php
<html>
<head>
</head>
<body>
<H2>Web Board</H2><p>
<form name="form1" method="post" action="Insert_Question.php">
หัวข้อกระทู้ :
<input type="text" name="topic"><p>
<textarea name="detail" cols="75" rows="10"></textarea>
<p>
ชื่อผู้ตั้งกระทู้ :
<input type="text" name="name"><p>
<input type="submit" name="Submit" value="ส่งกระทู้">
<input type="reset" name="Submit2" value="ยกเลิก">
</form>
</body>
</html>
insert
<?php
$con= mysqli_connect("localhost","root","","board")
or die("Error: " . mysqli_error($con));
mysqli_query($con, "SET NAMES 'utf8' ");
$topic = $_POST['topic'];
$detail = $_POST['detail'];
$name = $_POST['name'];
if(isset($_POST['submit'])){
}
$sql = "SELECT * FROM question " ;
$count = 0;
$result = mysqli_query($con, $sql);
while($dbarr= mysqli_fetch_array($result)){
$count++;
}
$itemno= $count + 1;
$sql = "INSERT INTO question(qno, qtopic, qdetail, qname, qcount) Values($itemno, '$topic', '$detail', '$name', 0)";
$result = mysqli_query($con, $sql);
if ($result)
{
echo "คุณสร้างกระทู้สำเร็จ<p>";
}
echo "<a href=show_question.php>แสดงกระทู้ทั้งหมด</a><br>";
echo "<a href=form_question.php>กลับสู่หน้ำฟอร์มตั้งกระทู้ใหม</axbz>";
?>
show_detail
<?php
$item = $_GET['item'];
$link = mysqli_connect("localhost", "root", "", "board");
function renHTML($strTemp) {
$strTemp = nl2br(htmlspecialchars($strTemp));
return $strTemp;
}
$sql = "SELECT * FROM question Where qno = '$item'";
$result = mysqli_query($link,$sql);
$dbarr = mysqli_fetch_array($result);
?>
คำถาม <b>
<?php
echo renHTML($dbarr['qtopic']);
?>
</b><br>
<table width="100%" border="1" bgcolor="#E0E0E0" bordercolor="black">
<tr><td>
<?php
echo renHTML($dbarr['qdetail']);
?><br>
โดย <b>
<?php echo renHTML($dbarr['qname']);
?></b>
</td></tr>
</table><br>
<?php
$sql = "SELECT * FROM Answer Where aquestionno=$item;";
$result = mysqli_query($link,$sql);
if ($result)
{
while ($dbarr = mysqli_fetch_array($result))
{
?>
คำตอบที่ : <b>
<?php
echo $dbarr['ano'];
?></b><br>
<table width="100%" border="1">
<tr><td>
<?php
echo renHTML($dbarr['adetail']);
?><br>
โดย <b>
<?php
echo renHTML($dbarr['aname']);
?></b>
</td></tr>
</table><br>
<?php
}
}
echo "<form method=post action=add_answer.php?answerno=".$item.">";
mysqli_close($link);
?>
คำตอบ : <br>
<textarea cols="40" rows="5" name="a_answer"></textarea><br>
ชื่อ : <input type="text" name="a_name" size="30"><br><br>
<input type="submit" value="ส่งคำตอบ">
<input type="reset" value="ยกเลิก">
</form>
show_question
<html>
<body>
<H2>กระทู้</H2>
<hr>
<?php
$link = mysqli_connect("localhost", "root", "", "board");
$sql = "SELECT * FROM question Order By qno Desc;";
$result = mysqli_query($link,$sql);
while ($dbarr = mysqli_fetch_array($result))
{
echo $dbarr['qno'];
echo " <a href=show_detail.php?item=$dbarr[qno]>$dbarr[qtopic]</a> ";
echo $dbarr['qname'];
echo " [" . $dbarr['qcount'] . "]<br>\n";
}
mysqli_close($link);
?>
<hr><a href="form_question.php">ตั้งกระทู้ใหม่</a>
</body></html>
|
|
|
|
|
Date :
2020-08-05 16:28:38 |
By :
bannana |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_answer บรรทัด 28 ลองเพิ่มคำสั่งนี้
Code (PHP)
printf("Error: %s\n", mysqli_error($link));
แล้วนำ error มาดูครับ
|
|
|
|
|
Date :
2020-08-05 17:36:42 |
By :
PhrayaDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
primary key มันควรเป็น auto number เพื่อป้องกันปัญหานี้ไม่ใช่หรือ?
|
|
|
|
|
Date :
2020-08-06 10:14:21 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มี 2 ทางเลือก (จริงๆ มีหลายวิธี)
1. (phpMyAdmin) เอา PRIMARY/UNIQUE KEY ออกจากตาราง Answer
2. (phpMyAdmin) ใส่ AUTO INCREMENT ให้กับฟิลด์ที่ตั้งเป็น PRIMARY/UNIQUE KEY ในตาราง Answer และ
add_answer.php line 16 เปลี่ยนคำสั่งคิวรีใหม่โดยไม่ต้อง insert column ที่ถูกตั้งเป็น AUTO INCREMENT สมมติเป็น คอลัมน์แรก เช่น
Code (PHP)
$sql = "INSERT INTO Answer (col2, col3, col4)"." Value ($count, '$a_answer', '$a_name');";
3. (PHP) ถ้ารู้ PRIMARY/UNIQUE KEY อยู่อันไหนก็เช็คตัวแปรที่ insert ในคอลัมน์นั้นไม่ให้ซ้ำกันก่อนค่อยพ่วงในคิวรี
4. (AJAX Test ค่าซ้ำ)
|
|
|
|
|
Date :
2020-08-06 13:09:45 |
By :
PhrayaDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|