php项目核心业务(增、删、改、查)(第三篇)
-
对增删改查数据库的封装
//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?'修改失败':'修改成功';
}
虽然现在走得很慢,但不会一直这么慢