ขอตัวอย่างโค้ด PHP Insert และโชว์ข้อมูลจากฐานข้อมูล ,Edit,Delete,Search ในหน้าเดียวที่ใช้คำสั่ง <?php echo $_sever['PHP_SELF']; ?> ประมาณนี้ครับ ขอคำแนะนำในการเขียนหน่อยครับ....ขอบคุณครับ
ตัวอย่างนะครับ การทำ CRUD แบบ PDO ในหน้าเดียว ใช้ IF เข้ามาตรวจสอบว่าทำงานกับ Action ไหน
include 'connect.php';
$personid = null; // กำหนดค่าเริ่มต้นของ $personid
$firstname = null; // กำหนดค่าเริ่มต้นของ $firstname
$lastname = null; // กำหนดค่าเริ่มต้นของ $lastname
$user_id = null; // กำหนดค่าเริ่มต้นของ $user_id
################### การเพิ่มข้อมูล ###############
if(isset($_POST['p']['action']) && $_POST['p']['action']=='insert'){//หากมีการกำหนด p['action'] และ p['action']=='insert' ให้เพิ่มข้อมูล
$p = $_POST['p'];
$sqli = "INSERT INTO profile(
personid,
firstname,
lastname,
user_id
) VALUES(
:personid,
:firstname,
:lastname,
:user_id
)";//คำสั่งในการเพิ่มข้อมูลลงในตาราง profile
$resulti = $con->prepare($sqli);//เตรียมคำสั่ง SQL
$resulti->execute(array(
'personid'=>$p['personid'],
'firstname'=>$p['firstname'],
'lastname'=>$p['lastname'],
'user_id'=>$p['user_id']
)); //ทำการ Bind ค่าลงใน Field ต่างๆ และประมวลผล
if($resulti!==false){
$_SESSION['flash']['type']='success';
$_SESSION['flash']['msg']='เพิ่มข้อมูลเรียบร้อย';
}else{
$_SESSION['flash']['type']='danger';
$_SESSION['flash']['msg']='ไม่สามารถเพิ่มข้อมูลได้';
}
}
################### การแก้ไขข้อมูล #################
if(isset($_GET['action']) && $_GET['action']=='edit'){ //ถ้ามีการคลิกแก้ไข
$pid = $_GET['id'];
$sqle = "SELECT * FROM profile WHERE id=:pid"; //เรียกข้อมูลที่ต้องการแก้ไขมา 1 แถว
$resulte = $con->prepare($sqle);//เตรียมคำสั่ง SQL
$resulte->execute(array('pid'=>$pid));//ทำการ Bind ค่าลงใน Field ต่างๆ และประมวลผล
$rse = $resulte->fetch(); //เก็บไว้ในตัวแปร $rse แบบ array()
$personid = $rse['personid'];
$firstname = $rse['firstname'];
$lastname = $rse['lastname'];
$user_id = $rse['user_id'];
// กำหนดค่าให้กับตัวแปรเพื่อส่งให้ฟอร์ม
}
if(isset($_POST['p']['action']) && $_POST['p']['action']=='edit'){// ตรวจสอบว่ามีการส่งค่ามาจากการแก้ไขหรือไม่
$p = $_POST['p'];
$sqlu = "UPDATE profile SET
personid=:personid,
firstname=:firstname,
lastname=:lastname,
user_id=:user_id
WHERE id=:id";//คำสั่งในการแก้ไขข้อมูล
$resultu = $con->prepare($sqlu);//เตรียมคำสั่ง SQL
$resultu->execute(array(
'id'=>$p['id'],
'personid'=>$p['personid'],
'firstname'=>$p['firstname'],
'lastname'=>$p['lastname'],
'user_id'=>$p['user_id']
)
);// ทำการ Bind ค่าลงใน Field ต่างๆ และประมวลผล
if($resultu!==false){
$_SESSION['flash']['type']='success';
$_SESSION['flash']['msg']='แก้ไขข้อมูลเรียบร้อย';
}else{
$_SESSION['flash']['type']='danger';
$_SESSION['flash']['msg']='ไม่สามารถแก้ไขข้อมูลได้';
}
}
################### การลบข้อมูล ###############
if(isset($_GET['action'])&& $_GET['action']=='delete'){//หากมีการกำหนด action=='delete' ให้ลบข้อมูล
$sqld = "DELETE FROM profile WHERE id=:id";//คำสั่งในการลบข้อมูล
$resultd = $con->prepare($sqld);//เตรียมคำสั่ง SQL
$resultd->execute(array('id'=>$_GET['id']));//ทำการ Bind ค่าลงใน Field ต่างๆ และประมวลผล
if($resultd!==false){
$_SESSION['flash']['type']='success';
$_SESSION['flash']['msg']='ลบข้อมูลเรียบร้อยแล้ว';
}else{
$_SESSION['flash']['type']='danger';
$_SESSION['flash']['msg']='ไม่สามารถลบข้อมูลได้';
}
}
################### เลือกข้อมูลมาแสดงในตาราง ###############
$sql = "SELECT * FROM profile ORDER BY id DESC";//คำสั่งในการเลือกข้อมูล
$result = $con->prepare($sql);//เตรียมคำสั่ง SQL
$result->execute();//ประมวลผล
?>
<!-- ############### การแจ้งเตือน ############# -->
<?php if(isset($_SESSION['flash'])){ ?>
<div class="alert alert-<?php echo $_SESSION['flash']['type'];?>">
<?php echo ucfirst($_SESSION['flash']['type']).' '.$_SESSION['flash']['msg'];?>
</div>
<?php }?>
<!--################ แบบฟอร์มกรอกข้อมูล ############## -->
<div class="row">
<div class="col-md-12">
<h3></h3>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" class="form-horizontal">
<?php if(isset($_GET['action']) && $_GET['action']=='edit'){?>
<input type="hidden" name="p[action]" value="edit">
<input type="hidden" name="p[id]" value="<?php echo $pid;?>">
<?php }else{?>
<input type="hidden" name="p[action]" value="insert">
<?php }?>
<div class="form-group">
<label class="control-label col-md-2" for="p-personid">รหัสพนักงาน</label>
<div class="col-md-10">
<input id="p-personid" class="form-control" type="text" name="p[personid]" value="<?php echo $personid;?>" required="required">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="p-firstname">ชื่อ</label>
<div class="col-md-10">
<input id="p-firstname" class="form-control" type="text" name="p[firstname]" value="<?php echo $firstname;?>" required="required">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="p-lastname">นามสกุล</label>
<div class="col-md-10">
<input id="p-lastname" class="form-control" type="text" name="p[lastname]" value="<?php echo $lastname;?>" required="required">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="p-user_id">User_id</label>
<div class="col-md-10">
<select name="p[user_id]" class="form-control" id="p-user_id">
<option>เลือกUser_id</option>
<?php
$user=$con->prepare("SELECT * FROM user");
$user->execute();
//print_r($user);
while($us = $user->fetch()){?>
<option value="<?php echo $us['id'];?>" <?php if($user_id==$us['id']){?> selected="selected"<?php }?>><?php echo $us[1];?></option>
<?php }?>
</select>
</div>
</div>
<input type="submit" value="บันทึกข้อมูล " class="btn btn-primary">
<?php if(isset($_GET['action']) && $_GET['action']=='edit'){ //หากมีการแก้ไขให้แสดงปุ่ม ยกเลิก ?>
<a href="admin_profile.php" class="btn btn-warning">ยกเลิก</a>
<?php }?>
</form>
</div>
<hr />
<div class="col-md-12">
<!-- ############### รายการข้อมูล ############# -->
<h3>รายการ</h3>
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>รหัสพนักงาน</th>
<th>ชื่อ</th>
<th>นามสกุล</th>
<th>User_id</th>
<th></th>
</tr>
</thead>
<tbody>
<?php while($rs=$result->fetch()){?>
<tr>
<td><?php echo $rs['personid'];?></td>
<td><?php echo $rs['firstname'];?></td>
<td><?php echo $rs['lastname'];?></td>
<td><?php echo $rs['user_id'];?></td>
<td>
<a href="<?php echo $_SERVER['PHP_SELF'];?>?action=edit&id=<?php echo $rs['id'];?>" class="btn btn-xs btn-warning">แก้ไข</a>
<a href="<?php echo $_SERVER['PHP_SELF'];?>?action=delete&id=<?php echo $rs['id'];?>" class="btn btn-xs btn-danger" onclick="return confirm('แน่ใจนะว่าต้องการลบ?');">ลบ</a>
</td>
</tr>
<?php }?>
</tbody>
</table>
</div>
</div>
</div><!--row-->
การค้นหาไม่ยากครับ ใช้ if ในการตรวจสอบในคำสั่ง SELECT ได้เลยครับ เช่น หากเราต้องการให้ค้นหาแบบ get ค่าก็กำหนด
################### เลือกข้อมูลมาแสดงในตาราง ###############
if(isset($_GET['search']){
$sql = "SELECT * FROM profile
WHERE firstname LIKE '%".$_GET['search']."%'
OR lastname LIKE '%".$_GET['search']."%'
ORDER BY id DESC";//คำสั่งในการเลือกข้อมูล
}else{
$sql = "SELECT * FROM profile ORDER BY id DESC";//คำสั่งในการเลือกข้อมูล
}
$result = $con->prepare($sql);//เตรียมคำสั่ง SQL
$result->execute();//ประมวลผล
ผมใช้ PHP PDO นะครับ ไม่ทราบว่าใช้ PHP Version ไหน ต้องไปเปิดการใช้งาน PDO ด้วยนะครับ
และการเชื่อมต่อก็ต้องเชื่อมต่อแบบ PDO นะครับ จะได้ Object ขึ้นมา ชื่อ $con ในไฟล์ connect.php ครับ
สามารถดูรายละเอียดได้ที่นี่ครับ
https://www.programmerthailand.com/tutorial/view/6
อาจารย์ครับ แล้วเราต้องเขียนโค้ดกำหนดแบบไหนครับ ตอนที่แสดงข้อมูลในตารางแล้วมันไม่เรียงตามลำดับอ่ะครับ เช่น ข้อมูลลำดับที่ 1 มีอยู่แล้วต้องการเพิ่มข้อมมูลอีกเป็นลำดับที่ 2 แต่พอเพิ่มแล้วข้อมูลกลับแสดงอยู่ก่อนข้อมูลลำดับที่ 1 แทนที่จะแสดงข้อมูล 1,2,3,4,......ตามลำดับ
โปรแกรมใกล้สมบูรณ์แล้วครับ รบกวนอาจารย์แนะนำผมอีกทีนะครับ...ขอบคุณครับ
ตอบ/อธิบาย