GORAGOD.com

GORAGOD.com

freelance, web developer, web designer, hosting, domain name

การอัปเดทฐานข้อมูลด้วย Ajax ทันที่ที่คลิกที่ checkbox

การอัปเดทฐานข้อมูลด้วย Ajax ทันที่ที่คลิกที่ checkbox เป็นอะไรที่ไม่ยากเลยครับ เพราะเป็นงานที่เหมาะสมกับ Ajax อยู่แล้ว ทำให้ไม่ต้องเสียเวลาเพื่อ Submit อีก สำหรับตัวอย่างนี้ เป็นการใช้ร่วมกับ GAjax นะครับ ใครไม่มีก็ดาวน์โหลดเวอร์ชั่นล่าสุดได้เลยที่ https://www.goragod.com/js/gajax.js
<!-- เรียกใช้งาน GAjax สามารถดาวน์โหลดไฟล์นี้ตาม URL ที่ปรากฏ เพื่อนำไปใช้งานนอก Server ได้ -->
<script type="text/javascript" src="https://www.goragod.com/js/gajax.js"></script>

<!-- Javascript ที่ใช้งาน -->
<script type="text/javascript">
    // เริ่มต้นทำงานเมื่อโหลดหน้าเว็บเสร็จ
    $G(window).Ready(function(){
        // เรียกใช้งาน GAjax
        var req = new GAjax();
        // เลือก input แต่ละตัว
        forEach($G('demo_form').getElementsByTagName('input'), function(input){
            // ตรวจสอบว่าเป็น checkbox
            if (input.type.toLowerCase() == 'checkbox') {
                // เรียกใช้ event click
                input.onclick = function () {
                    // ใช้ Ajax ส่งค่าไปอัปเดทที่ check_update.php
                    req.send('checkbox_update.php', 'name=' + this.name + '&value=' + (this.checked == true ? 1 : 0), function(xhr) {
                        // รับค่ากลับ และ alert
                        alert(xhr.responseText);
                    });
                }
            }
        });
    });
</script>

<!-- Javascript ที่ใช้งาน -->

โค้ดด้านบนไม่มีอะไรมากครับ วนลูปไปที่ input ของฟอร์มทั้งหมด แล้วเลือกเอา input ชนิด checkbox เท่านั้น มากำหนด event onclick ที่ event นี้ เมื่อคลิกแล้ว จะทำการส่งข้อมูลไปอัปเดทที่ checkbox_update.php
<form id="demo_form">
<?php
    for ($i = 0 ; $i < 10 ; $i++) {
        echo '<p><input type="checkbox" name="check['.$i.']" value="'.$i.'" /> รายการที่ '.($i + 1).'</p>';
    }
?>
<p><input type="submit" name="submit" /></p>
</form>

ฟอร์มที่ใช้ครับ ปุ่ม submit ไม่ได้ใช้ประโยชน์อะไรในกรณีนี้ ผมสร้างขึ้นมาเพื่อให้เห็นว่า โค้ด มันแยก checkbox ออกจาก input อื่นๆได้ยังไงเท่านั้น
<?php
     // checkbox_update.php
     header("content-type: text/html; charset=UTF-8");
     // ค่าที่รับมา
     $name = $_POST['name'];
     $value = (int)$_POST['value'];
     // แยก id ออกมาจาก name ที่ส่งมา
     if (preg_match('/check\[([0-9]+)\]/', $name, $match)) {
         // print_r($match); // ดูค่าที่อ่านได้
         $id = (int)$match[1];
         // เขียนคำสั่งอัปเดทฐานข้อมูลที่นี่
         // ตัวอย่าง คืนค่าเพื่อแสดงผล
         echo 'ข้อความจาก Server อัปเดทรายการที่ '.($id + 1).' '.($value == 1 ? 'เลือก' : 'ไม่เลือก').' checkbox เรียบร้อย';
     }
?>

ดูตามโค้ดได้เลยนะครับ คำอธิบายอยู่ที่โค้ดแล้ว ในตัวอย่างนี้ผมแสดงการดึงข้อมูลที่ต้องการออกมาจากค่าที่ส่งมา ในเวลาใช้งานก็นำค่าที่ได้ส่งไปอัปเดทฐานข้อมูลก็ได้ ส่วนการส่งกลับ จะทำหรือไม่ก็แล้วแต่กรณีไป

ตัวอย่าง

0SHAREFacebookLINE it!
^