wave
prajoub_dls
17,091
สังคมนักพัฒนาระบบ (Community)
PHP Insert ,Edit,Delete,Search

ขอตัวอย่างโค้ด PHP Insert และโชว์ข้อมูลจากฐานข้อมูล ,Edit,Delete,Search ในหน้าเดียวที่ใช้คำสั่ง <?php echo $_sever['PHP_SELF']; ?>  ประมาณนี้ครับ ขอคำแนะนำในการเขียนหน่อยครับ....ขอบคุณครับ

8 ความคิดเห็น

  • prattrick

  • มานพ กองอุ่น

  • prajoub_dls

ตัวอย่างนะครับ การทำ 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-->

 

ถ้าหากเราจะทำการค้นหาข้อมูลละครับเราต้องเขียนโค้ดแบบไหนครับอาจารย์  

http://picture.in.th/id/d6ebc1ef7d70eab494048bfeb21f827d

ตามลิงค์นี้ครับ

การค้นหาไม่ยากครับ ใช้ 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();//ประมวลผล 

 

อาจารย์ครับผมนำโค้ดที่อาจารย์แนะนำมาแล้วมาประยุกต์ใช้ แต่ว่ามันเกิดการ Eror แบบนี้ครับ 

Fatal error: Call to a member function prepare() on resource in C:\AppServ\www\bunchee\index.php on line 23

มันหมายความว่าอย่างไรครับ ผมไม่เข้าใจ

ผมใช้ PHP PDO นะครับ ไม่ทราบว่าใช้ PHP Version ไหน ต้องไปเปิดการใช้งาน PDO ด้วยนะครับ
และการเชื่อมต่อก็ต้องเชื่อมต่อแบบ PDO นะครับ จะได้ Object ขึ้นมา ชื่อ $con ในไฟล์ connect.php ครับ

สามารถดูรายละเอียดได้ที่นี่ครับ

https://www.programmerthailand.com/tutorial/view/6

 

อาจารย์ครับ แล้วเราต้องเขียนโค้ดกำหนดแบบไหนครับ ตอนที่แสดงข้อมูลในตารางแล้วมันไม่เรียงตามลำดับอ่ะครับ เช่น ข้อมูลลำดับที่ 1 มีอยู่แล้วต้องการเพิ่มข้อมมูลอีกเป็นลำดับที่ 2 แต่พอเพิ่มแล้วข้อมูลกลับแสดงอยู่ก่อนข้อมูลลำดับที่ 1 แทนที่จะแสดงข้อมูล 1,2,3,4,......ตามลำดับ

โปรแกรมใกล้สมบูรณ์แล้วครับ รบกวนอาจารย์แนะนำผมอีกทีนะครับ...ขอบคุณครับ

 

SELECT * FROM table ORDER BY field DESC/ASC

table คือ ชื่อตาราง
field คือ field ที่ต้องการเรียงลำดับ
DESC เรียงจากมากไปหาน้อย
ASC เรียงจากน้อยไปหามาก

รบกวนอาจารย์ขออธิบายวิธีการเพิ่มข้อมูลที่ละหลายๆ เรคคอร์ด ก่อนกัน submit ส่งข้อมูลเข้าฐานข้อมูลครับ