PHP JavaScript ดึงข้อมูลจากดาต้าเบสมาสร้าง form แก้ไขข้อมูลไม่ได้ครับ
PHP Javascritp ดึงข้อมูลจาก MySQL มาสร้าง form แก้ไขข้อมูลไม่ได้ครับ ผมต้องการใช้สร้างฟอร์มแก้ไขข้อมูลด้วย javascript โดยเมื่อคลิก link จะมีฟอร์มเด้งขึ้นมาให้แก้ไขข้อมูล
โค้ดแสดงข้อมูลจากดาต้าเบสและฟอร์มแบบนี้ครับ
Code
<?php
$sql = "SELECT * FROM comment WHERE question_id = $question_id ORDER BY id DESC";
$r1 = mysqli_query($link, $sql);
while($cm = mysqli_fetch_array($r1)) {
$comment_id = $cm['id'];
echo '<section class="section-comment">';
echo '<span class="commentator">' .$cm['user_id'] . '</span>';
echo $cm['detail'];
echo '<span class="date-comment">'. thai_date($cm['date_post'], true);
echo '<span class="reply-alert">';
echo '<a href="#" class="edit-comment" edit-id="'.$comment_id.'">แก้ไข</a>';
echo $comment_id; //ตรงนี้สามารถแสดงตัวเลขได้ถูกต้อง
?>
<div id="form-edit-dialog">
<form id="form-edit" method="post">
<input type="text" name="user_id" value="<?php echo $user_id ?>" readonly > <br>
<input type="text" name="id" value="<?php echo $comment_id ?>" readonly > <br> //ตรงนี้ใส่ไว้เพื่อเช็คว่า id ที่ต้องการแก้ไขถูกต้องหรือไม่ แต่พอปิดฟอร์มแล้วเปิดใหม่ตัวเลขจะเปลี่ยนไปเรื่อยๆจากมากไปน้อย
<textarea name="detail" placeholder="ความคิดเห็น *"></textarea><br>
<button type="submit" id="submit-edit">ส่งข้อมูล</button>
<input type="hidden" name="comment_id" id="comment-id">
</form>
</div>
}
โค้ด Javascript แบบนี้ครับ
Code
$(function() {
$('a.edit-comment').click(function(event) { //เมื่อคลิกลิงค์ "แสดงความคิดเห็น"
$('#form-edit')[0].reset();
//ปกติการคลิก <a> ทำให้เปลี่ยนหน้า และ scrollbar เลื่อนไปอยู่บนสุด
//จึงล็อก scrollbar ไม่ให้เลื่อน โดยการยกเลิกกระทำที่เป็นดีฟอลต์ของ <a>
event.preventDefault();
var t = "แก้ไขความคิดเห็น";
$('#form-edit-dialog').dialog({
width: '600px',
title: t,
modal: true,
position: { my: "center", at: "center", of: window} //เป็นค่า default อยู่แล้ว
});
//กำหนดค่าให้แก่อิลิเมนต์ชนิด hidden ทั้งสองอัน
$('#comment-id').val($(this).attr('edit-id'));
});
$('#submit-edit').click(function() {
$('form#form-edit').ajaxForm({
url: 'save-edit.php',
type: 'post',
dataType: 'script',
beforeSend: function() {
$.blockUI({message:'<h3>กำลังส่งข้อมูล...</h3>'});
},
complete: function() {
$.unblockUI();
}
});
});
});
เมื่อเปิดหน้าเว็บจะ list ข้อความ comment ดึงออกมาจากดาต้าเบสและแสดง comment_id แต่ละแถวได้ถูกต้อง ซึ่งข้อความที่แสดงแต่ละแถวจะมี link แก้ไข ถ้าคลิก link มันจะมีฟอร์มเด้งขึ้นมาซึ่งตรงฟอร์มที่ <input type="text" name="id" value="<?php echo $comment_id ?>" readonly > มันจะแสดงตัวเลข comment_id ครับแต่ตัวเลขไม่ถูกต้อง ถ้าหากปิดฟอร์มแล้วคลิก link แสดงฟอร์มอีกครั้งตัวเลข comment_id จะลดเรื่อยๆ และถ้าเอา form ไว้ใต้ } ของ while ตัวเลข comment_id จะเป็นค่าน้อยที่สุดครับ
ไม่ทราบว่ามีวิธีแก้ให้ตัวเลข comment_id เป็นค่าที่ถูกต้องเมื่อใช้งานกับ javascript มั๊ยครับ หรือ edit ฟอร์มกับ javascript ไม่ต้องเปิดในหน้าใหม่อย่างเดียวเลยไหมครับTag : PHP, JavaScript, Ajax, jQuery
ประวัติการแก้ไข 2017-04-04 01:22:38 2017-04-04 01:22:56
Date :
2017-04-04 01:20:48
By :
mmc01
View :
2347
Reply :
1
ลองเอา <form id="form-edit" method="post"> ออกไปอยู่นอกลูป while ครับ...
ให้มันลูปข้อมูลเฉพาะบรรทัด 25-33 พอครับ
ตอนนี้ที่มองคร่าวๆ เกิดฟอร์มที่ id ซ้ำกันจากการลูป while การทำงานของ jquery อาจจะรวน
Date :
2017-04-04 09:44:02
By :
apisitp
Load balance : Server 05