ข้ามไปที่เนื้อหาหลัก

PHP Javascript Diable/Enable Form การทำให้ textbox disabled หรือ readonly เมื่อกดปุ่มโหลดข้อมูล

โจทย์ปัญหาในบทความนี้ก็คือ จะทำอย่างไรให้ช่องกรอกข้อมูลมีสถานะเป็นอ่านอย่างเดียว Readonly หรือ Disable เพื่อไม่ให้ป้อนข้อมูลได้ จนกว่าจะมีการกดปุ่ม แก้ไข(Edit)

การเขียนโค๊ดเพื่อให้การทำงานของหน้าเว็บตรงตามความต้องการของเรานั้น มีอยู่หลายวิธีด้วยกัน ซึ่งวิธีที่ผมนำมาเป็นตัวอย่างก็คือ การ Disable ช่องกรอกข้อมูลด้วยการเช็คค่าจาก PHP และสร้างตัวแปรแอตทริบิวต์ disabled="disabled" ให้กับช่องกรอกข้อมูลที่ต้องการ

หลังจากนั้นจะเป็นการทำงานในส่วนของ Javascript เมื่อคลิกปุ่ม Edit คือยกเลิกการ disabled ช่องกรอกข้อมูลที่ต้องการให้แก้ไขได้ โดยจะมีการใช้ jQuery Selector เข้ามาช่วยให้เขียน JavaScript ได้ง่ายขึ้นด้วย

ซอร์สโค๊ดตัวอย่าง disable_enable_form.php




<?php
$hostname = "localhost";
$user = "tobedev";
$password = "1234";

$dbname = "helpdesk";

$tblname4 = "tb_m_user";

try {
  $db_conn = new PDO("mysql:host=localhost;dbname=$dbname;charset=utf8", $user, $password);
} catch (PDOException $e) {
  echo "Could not connect to database";
  exit;
}

$ID = isset($_GET['ID']) ? $_GET['ID'] : 0;

$row = array('ID'=>'', 'NAME_SURNAME'=>'');
$diable = '';
if($ID != 0){
    $diable = 'disabled="disabled"';

    $sql = "SELECT *
            FROM $tblname4
            WHERE ID = :recipe_id";
    try {
      $stmt = $db_conn->prepare($sql);
     
      if($stmt) {
        // perform query
        $stmt->execute(array(
          "recipe_id" => $ID)
        );

        $row = $stmt->fetch();
      }
    } catch (PDOException $e) {
      echo "A database problem has occurred: " . $e->getMessage();
    }
}
?>
<form action="?p=disable_enable_form" Method="Post" name="form1" >  
    <Center>

    <Font Size=4><B>ข้อมูลสมาชิก</B></Font>
    </Cener>
   
    <Font Size=4>
    <Table Border="0" Bgcolor="#Fcf9d8" Face="Ms Sans Serif" >
   
   

    <Td>ID :</Td><Td><Input <?php echo $diable;?>    Type=Text Name="ID" id="row_id" value="<?echo $row["ID"];?>" Maxlength="50"  /></td>
       
   
   
        <td><td><td><Input Type=Submit   name="mode" value="save" ></td></td></td>
        <td><td><td><td><Input Type="button"  name="mode" value="edit" onclick="enable_form()" > </td></td></td></td>   
        <td><td><td><td><Input Type=Submit  name="mode" value="clear"></td></td></td></td>

        <Tr>
       
        <Td>Name - Surname :</Td><Td><Input  <?php echo $diable;?>    Type=text Name=NAME_SURNAME id="fullname" value="<?echo $row["NAME_SURNAME"];?>" ID="sur" maxlength=50 ></Td></Tr> 
       
        </Tr>
       
                                               
</Form>    
    </Table>
    </Font>   

<Br>

<br>

<table width="100%" Border="1"  Face="Ms Sans Serif">
    <tr>
                <td Bgcolor="#Fcf9d8"><center><strong>Edit</strong></center></td>
                <td Bgcolor="#Fcf9d8"><center><strong>ID</strong></center></td>
                <td Bgcolor="#Fcf9d8"><center><strong>Name_Surname</strong></center></td>
                <td Bgcolor="#Fcf9d8"><center><strong>Delete</strong></center></td>
    </tr>   
<?php
$sql = "SELECT * FROM $tblname4";
try {
  $stmt = $db_conn->prepare($sql);
 
  if($stmt) {
    // perform query
    $stmt->execute(array(
      "recipe_id" => $ID)
    );

    while ($row = $stmt->fetch())
    {
    ?>
        <tr>
            <td><center><a href="?p=disable_enable_form&ID=<? echo $row["ID"]?>" >select</center></td>
            <td><center><?echo $row['ID'] ?></center></td> 
            <td><?echo $row['NAME_SURNAME']?></td>
            <td><center><a href="#">Delete</a></center></td> 
        </tr>
                   
    <?php
    }

  }
} catch (PDOException $e) {
  echo "A database problem has occurred: " . $e->getMessage();
}
?>
</table>
<script>
function enable_form(){
    $('#row_id').attr('disabled', false);
    $('#fullname').attr('disabled', false);
}
</script>


ข้อมูลที่ใช้ทดสอบ


--
-- Database: `helpdesk`
--
CREATE DATABASE IF NOT EXISTS `helpdesk` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `helpdesk`;

-- --------------------------------------------------------

--
-- Table structure for table `tb_m_user`
--

CREATE TABLE IF NOT EXISTS `tb_m_user` (
  `ID` int(11) NOT NULL,
  `NAME_SURNAME` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `tb_m_user`
--

INSERT INTO `tb_m_user` (`ID`, `NAME_SURNAME`) VALUES
(1, 'นางสาวจริงใจ รักจริง'),
(2, 'นายแสนดี รักมั่น');



วิดีโอสาธิตการใช้งาน




PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม

สนใจสั่งซื้อเพียง 4,500 บาท
http://fastcoding.phpcodemania.com/




สนับสนุนค่ากาแฟผู้เขียนได้ที่

PayPal

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย PHP สำหรับนำไปใช้ในงานต่างๆ

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ และด้านล่างนี้ก็เป็นระบบต่างๆที่แจกให้นำไปลองใช้ลองศึกษากันครับ

สร้างแบบฟอร์มล็อกอิน HTML + PHP

       ผมจะสร้างระบบตัวอย่างเพื่อแสดงให้เห็นการทำงานของสคริปต์ PHP ที่ใช้ในการล็อกอินอย่างง่ายๆ นะครับ โดยที่ผมจะสร้างโฟลเดอร์ใหม่ขึ้นในไดร์ฟที่เราได้กำหนดให้เป็น Directory Root สำหรับรันสคริปต์ PHP ซึ่งผมกำหนดเอาไว้ที่ D:\www ดังนั้นผมจะสร้างโฟลเดอร์ teacher_assistant ขึ้นมาใหม่จะได้พาธเป็น D:\www\teacher_assistant สำหรับการเข้าถึง จะใช้ URL ดังนี้ http://localhost/teacher_assistant หลังจากสร้างโฟลเดอร์เสร็จเรียบร้อยก็จะเริ่มกระบวนการเตรียมโครงสร้างโปรเจ็กต์ด้วยเครื่องมือช่วยเขียนโปรแกรมชื่อว่า eclipse ซึ่งดูวิธีการสร้างโปรเจ็กต์ได้จากบทความ เริ่มต้นสร้างโปรเจ็กต์ ด้วยโปรแกรม eclipse เครื่องมือเขียนโปรแกรม php ในบทความเป็นการสร้างโปรเจ็กต์ที่มีพาธเป็นโฟลเดอร์ login แต่ในที่นี้ต้องเป็นพาธให้ตรงกับโฟลเดอร์ใหม่ที่เราได้สร้างขึ้นด้วยนะครับ

PHP กับการคิดส่วนลดเป็นเปอร์เซ็น 5%, 10%, 20% ตามช่วงราคาที่กำหนด

<?php     $total_price = 1000;     $discount = 0;         if($total_price >= 500 && $total_price < 1001){         $discount = 5;     }elseif($total_price >= 1001 && $total_price <= 5000){         $discount = 10;     }elseif($total_price >= 5001){         $discount = 20;     }         $discount_bath = ($total_price*$discount)/100; ?> <pre> ซื้อสินค้าครบ 0 ถึง 499 บาท ไม่ได้ส่วนลด ซื้อสินค้าครบ 500 ถึง 1000 บาท ได้ส่วนลด 5% ซื้อสินค้าครบ 1001 ถึง 5000บาท ได้ส่วนลด 10% ซื้อสินค้าครบ 5001 บาทขึ้นไป ได้ส่วนลด 20% </pre> <h3>รวมราคาสินค้า = <?php echo number_format($total_price,2);?></h3> <h5>ส่วนลด = <?php echo $discount;?>%  (<?php echo $discount_bath;?> บาท)</h5> <h2>ราคาหลังส่วนลด = <?php echo number_format($total_price - $discount_bath,2);?>บาท</h2> "PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต