php專案核心業務(增、刪、改、查)(第三篇)
阿新 • • 發佈:2019-01-22
-
對增刪改查資料庫的封裝
//php對資料庫的封裝 //Mysql_fetach($sql)函式查詢所有的 function Mysql_fetach($sql){ $conn=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);//這些全域性常量定義在config.php檔案中,分別表示(loocalhost,root,password,資料庫名稱) if(!$conn){ exit('資料庫連線失敗'); } $query=mysqli_query($conn,$sql); if(!$query){ return false; } while($row=mysqli_fetch_assoc($query)){ $result[]=$row; }; return $result; } function show_query($sql){ $conn=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); if(!$conn){ exit('資料庫連線失敗'); } $query=mysqli_query($conn,$sql); if(!$query){ return false; } return $conn; } //Mysql_fetach_once($sql)只查詢其中的一條 function Mysql_fetach_once($sql){ $res=Mysql_fetach($sql); return isset($res)?$res[0]:''; } //Mysql_execute($sql)執行增刪改操作,返回的是受影響行數 function Mysql_execute($sql){ $conn=show_query($sql); //需要返回受影響行數,對於增加刪除修改都是獲取受影響行數 $affected_rows=mysqli_affected_rows($conn); return $affected_rows; }
-
查詢操作
在服務端的頁面上引入上面的資料庫封裝函式,服務端接受查詢到的資料,再進行表單渲染即可
//服務端接受查詢到的資料 $categories=Mysql_fetach('select * from categories;'); ...... //客戶端渲染 <?php foreach($categories as $item):?> <tr> <td class="text-center"><input type="checkbox" data-id="<?php echo $item['id'];?>"></td> <td><?php echo $item['name'];?></td> <td><?php echo $item['slug'];?></td> <td class="text-center"> <a href="/admin/categories.php?id=<?php echo $item['id']; ?>" class="btn btn-info btn-xs">編輯</a> <a href="/admin/api/dete_categori.php?id=<?php echo $item['id']; ?>" class="btn btn-danger btn-xs">刪除</a> </td> </tr> <?php endforeach?>
-
刪除操作
- 單一刪除
1)點選“刪除”按鈕之後,執行刪除操作,所以第一步從刪除按鈕開始,為了告知服務端我們需要刪除的元素是哪一個,我們傳給服務端一個不同的id
<a href="/admin/api/dete_categori.php?id=<?php echo $item['id']; ?>" class="btn btn-danger btn-xs">刪除</a>
2)呼叫封裝好的資料庫函式
<?php require_once dirname(__FILE__).'/../../functions.php'; $id=$_GET['id']; Mysql_execute("delete from categories where id in ({$id});"); header('Location: ../categories.php');
- 批量刪除
1)原理:當有<input>被選中的時候,顯示“批量刪除”按鈕,當沒有被選中的時候,"批量刪除按鈕隱藏"
2)每次選中checkbox的時候,將選中的ID記錄下來,儲存到陣列中,通過?id=的方式將陣列中的ID值傳入到刪除頁面,刪除頁面對接收的資料進行批量刪除
3)這裡在每個input標籤中用data-的方式增加了一個自定義屬性
$(function($){
var tbodyInput=$('tbody input'); //選出Input標籤,這裡是一個偽陣列
var $btnDelete=$('#btn_delete'); //將按鈕選擇出來
var allId=[]; //定義一個空陣列,用來存選中項的ID
tbodyInput.on('change',function(){
if($(this).prop('checked')){
allId.push($(this).data('id'));
}else{
allId.splice(allId.indexOf('id'),1);
}
allId.length? $btnDelete.fadeIn():$btnDelete.fadeOut();
$btnDelete.prop('search','?id='+allId);//
});
-
增加操作
function add_category(){
if(empty($_POST['name'])||empty($_POST['slug'])){
$GLOBALS['success'] = false;
$GLOBALS['message'] = "請完整填寫表單";
return;
}
//接受並儲存
$name=$_POST['name'];
$slug=$_POST['slug'];
//這裡需要向資料庫裡面插入語句,
$rows=Mysql_execute("insert into categories values (null,'{$slug}','{$name}');");
$GLOBALS['success'] = $rows>0;
$GLOBALS['message'] = $rows<=0?'新增失敗':'新增成功';
}
-
編輯操作
1)和新增操作頁面的區別在於編輯操作請求到的是一個含有資料的表單,而新增操作請求到的是一個空表單
2)點選的時候向頁面傳入當前點選標籤的ID,通過不同的ID來辨別應該編輯的是哪一個input標籤
2)通過from表單提交上去的action=""
if(!empty($_GET['id'])){
//客戶端通過URL地址傳遞了一個ID,意味著可互換是要來拿一個修改資料的表單
//需要拿到使用者想要修改的資料
global $current_edit_categories;
$current_edit_categories=Mysql_fetach_once("select * from categories where id = ".$_GET['id']);
//下面不應該是空的表單了
}
function add_category(){
if(empty($_POST['name'])||empty($_POST['slug'])){
$GLOBALS['success'] = false;
$GLOBALS['message'] = "請完整填寫表單";
return;
}
//接受並儲存
$name=$_POST['name'];
$slug=$_POST['slug'];
//這裡需要向資料庫裡面插入語句,
$rows=Mysql_execute("insert into categories values (null,'{$slug}','{$name}');");
$GLOBALS['success'] = $rows>0;
$GLOBALS['message'] = $rows<=0?'新增失敗':'新增成功';
}
function edit_category(){
//只有編輯
global $current_edit_categories;
/*if(empty($_POST['name'])||empty($_POST['slug'])){
$GLOBALS['success'] = false;
$GLOBALS['message'] = "請完整填寫表單";
return;
}*/
//接受並儲存,以POST請求,如果請求到的為空,說明需要編輯
$id=$current_edit_categories['id'];
$name=empty($_POST['name']) ? $current_edit_categories['name']:$_POST['name'];
$current_edit_categories['name']=$name;
$slug=empty($_POST['slug']) ? $current_edit_categories['slug']:$_POST['slug'];
$current_edit_categories['slug']=$slug;
//這裡需要向資料庫裡面插入語句,
$rows=Mysql_execute("update categories set slug ='{$slug}',name='{$name}' where id={$id};");
$GLOBALS['success'] = $rows>0;
$GLOBALS['message'] = $rows<=0?'修改失敗':'修改成功';
}