做一个小案例,主要复习一下mysqli面向过程,面向对象,PDO版本的基础SQL语句,也为自己复习做个参考。ok,本篇为mysqli面向过程篇( procedure oriented programming => pop)

附上链接:

第一篇:php案例之后台数据显示-- mysqli面向过程版(procedure oriented programming => POP)

第二篇:php案例之后台数据显示-- mysqli面向对象版(Object Oriented Programming => OOP)

第三篇:php案例之后台数据显示-- PDO版(php data object)

做出来的效果如下,可能有点low,但是样式什么的自己搞吧:


先说一下大概思路吧

 1,连接数据库2,数据展示,index页2.1,jsDom操组2.1.1,点击修改按钮出现下拉框2.1.2,复选框选择,全选、反选、全不选2.1.3,根据复选框进行多个数据同时操作注意点,直接在多选按钮两侧加form不行,要么会出现form提交混乱,要吗就不行解决,创建form元素,根据选中的多选框和form元素创建一个新的dom元素,然后js方式提交2.2,php2.2.1,根据搜索框有无和搜索内容显示页面内容2.2.2,增加一个用户2.2.3,根据用户id删除数据2.2.4,根据复选框同时删除数据2.2.5,根据用户id修改数据3,根据index页传入sql页面中进行操作
ok,开始了,目录展示

connect.php
<?php
// 连接数据库
$host     = '127.0.0.1';
$user     = 'root';
$password = 'weicunbin123';
$db       = 'testguest';
$conn =mysqli_connect($host,$user,$password,$db);
if(mysqli_connect_error($conn)){                             //如果没有错误,会返回一个NULLdie("连接失败,错误:" . mysqli_connect_error($conn));   //打印错误信息
}
// 3,设置字符集
mysqli_set_charset($conn,'utf8');
?>
index.php
<?php
// 连接数据库
require dirname(__FILE__).'\connect.php';// 查。模糊查询
// 判断是否点击查询语句,其实这里应该对查找到的数据进行操作,不过就图方便了
if(isset($_GET['action']) && $_GET['action'] == 'search'){$clean = array();$clean['name'] =isset( $_POST['name']) ? $_POST['name'] : '';if( $clean['name'] == ' '){// 如果为空格的话,就默认为空了$clean['name'] = '';}$sql = "SELECT * FROM db_demo WHERE db_name LIKE '%{$clean['name']}%' ORDER BY db_date DESC";$dataResult = mysqli_query($conn,$sql);}else{$dataSql = "SELECT * FROM db_demo ORDER BY db_date DESC";$dataResult = mysqli_query($conn,$dataSql);
}
?><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* { margin: 0; padding: 0;}body,html { padding: 10px;}table {border-collapse: collapse; width: 700px;}thead th { padding: 5px 10px;}tbody td {padding: 3px;}tr.show td, tr.hide td div {text-align: center;}tr.hide td .hidebox { overflow: hidden; height: 0;}tfoot tr { height: 40px; overflow: hidden;}</style>
</head><body><div class="adduser"><!-- 第一个表单,用于增加一个用户 --><form action="./sql.php?action=adduser" method="POST" name="add">添加:<input type="text" value="name" name = "name"><input type="text" value="password" name = "password"><input type="submit" value="确定提交"></form><br></div><div class="search"><!-- 搜索,按理说是用应该操作得到的数据,不过还有select语句,所以从数据库中返回数据 --><form action="./index.php?action=search" method="POST" name="search">搜索:<input type="text"  name = "name" value = <?php echo isset( $clean['name']) ?$clean['name']: ''  ?>><input type="submit" value="确认"></form><br></div><table border="1"><thead><tr><th></th><th>id</th><th>name</th><th>password</th><th>ctime</th><th>operation</th></tr></thead><tbody><?php// 将数据显示在页面上while($datalist = mysqli_fetch_assoc($dataResult)){?><tr class="show"><td><!-- 第二个表单控件,用于批量删除,有三个部分组成,这是第一个部分 --><input type="checkbox" name="select[]" value=<?php  echo $datalist['db_id'];  ?>></td><td> <?php  echo $datalist['db_id'];  ?></td><td> <?php  echo $datalist['db_name'] ; ?></td><td> <?php  echo $datalist['db_password'] ; ?></td><td> <?php  echo $datalist['db_date'];  ?></td><td><!--  用于对当前用户修改显示或删除或修改操作 --><a href="javascript:void(0)" class="edit">修改</a><a href="./sql.php?action=del&id=<?php  echo $datalist['db_id'];  ?>">删除</a></td></tr><tr class="hide"><td colspan="6"><div class="hidebox"><!-- 第三个表单,用户修改当前用户信息 --><form action="./sql.php?action=edit&id=<?php  echo $datalist['db_id'];  ?>" method="POST" name="edit"><span>name: <input type="text" name="name" value=<?php  echo $datalist['db_name'] ; ?> id=""></span><span>password: <input type="text" name="password" value=<?php  echo $datalist['db_password'] ; ?> id=""></span><span><input type="submit" value="确认删除"></span></form></div></td></tr><?php } ?></tbody></table><div><label for="checkall" class="checkall"><input type="checkbox" id="checkall" value="全选"> <span>全选</span></label><label for="invertcheckall" class="invertcheckall"><input type="checkbox" id="invertcheckall"><span>反选</span></label><!-- 对应第二个表单控件,点击删除,这是第二个部分 --><button class="twosubmit">确认修改</button><!--对应第二个表单控件,组成一个form元素提交,这是第三个部分  --><div class="formbox" style="display:none"></div></div><script>// 批量删除提交var sectionDelete = (function(){// 点击确认修改document.querySelector('.twosubmit').onclick = function () {var opt = document.querySelectorAll('form[name="sectionDel"]');var input = document.querySelectorAll('input[ name="select[]"]'); var formbox = document.querySelector('.formbox');  var copyinput=''// 创建一个form元素var twoform = document.createElement("form")twoform.action = './sql.php?action=sectionDel';twoform.method="post";// 将选中的放入form中input.forEach(item => {if(item.checked == true){cloneinput = item.cloneNode();twoform.appendChild(cloneinput)        }})// 放在页面上以提交formbox.appendChild(twoform)  //提交到sql语句    twoform.submit()};})()// 下拉列表var dropdown = (function () {var oBtn = document.querySelectorAll('.show .edit');var hideBox = document.querySelectorAll('.hide .hidebox');var boxHeight = document.querySelectorAll('.hide form');oBtn.forEach((item, i) => {item.onclick = function () {hideBox.forEach((hide, n) => {hide.style.height = 0;hide.style.transition = "all 0.3s";if (i == n) {if (parseInt(window.getComputedStyle(hide).height) == 0) {hide.style.height = boxHeight[i].offsetHeight + 'px';}}})}})})()// 全选/全不选 反选var selopt = (function () {var checkall = document.querySelector('.checkall');var checkallInput = document.querySelector('.checkall input');var checkallTxt = document.querySelector('.checkall span');var invertcheckall = document.querySelector('.invertcheckall');var invertcheckallSpan = document.querySelector('.invertcheckall span');var newSel = new selectfn();checkall.onclick = checkallTxt.onclick = function () {checkallTxt.innerHTML == '全选' ? checkallTxt.innerHTML = '全不选' : checkallTxt.innerHTML = '全选'if (checkallInput.checked == false) {newSel.NotSelectAll();} else {newSel.selectAll();}}invertcheckall.onclick = invertcheckallSpan.onclick = function () {newSel.invertSelect();}// 全选/全不选 反选函数function selectfn() {var option = document.querySelectorAll('.show input[name="select[]"]');// 全选this.selectAll = function () {option.forEach(item => {item.checked = true;})}// 全不选this.NotSelectAll = function () {option.forEach(item => {item.checked = false;})}// 反选this.invertSelect = function () {option.forEach(item => {if (item.checked == true) {item.checked = false;} else {item.checked = true;}})}}})()</script>
</body>
</html>
sql.php
<?php
// 连接数据库
require dirname(__FILE__).'\connect.php';// 获取进行什么操组的关键字
$action = $_GET['action'];switch($action){// 增加一个用户case 'adduser':$clean = array();$clean['name'] = $_POST['name'];$clean['password'] = $_POST['password'];$sql = "INSERT INTO db_demo(db_name,db_password,db_date) VALUES('{$clean['name']}','{$clean['password']}',NOW() )";                              // 执行语句和成功后的跳转语句query_location($sql) ;break;// 批量删除delete in,即全选,全不选,反选case 'sectionDel':$clean = array();$clean['select'] =isset($_POST['select']) ? check_live($_POST['select']):'';$sql = "DELETE   FROM db_demo WHERE db_id in ({$clean['select']})";// 执行语句和成功后的跳转语句query_location($sql,'删除成功') ;break;// 点击删除case 'del': $clean = array();$clean['name'] = $_GET['id'];$sql = "DELETE   FROM db_demo WHERE db_id = {$clean['name']}";// 执行语句和成功后的跳转语句query_location($sql,'删除成功') ;break;// 修改数据case 'edit':$clean = array();$clean['name'] = $_POST['name'];$clean['password'] = $_POST['password'];$clean['id'] = $_GET['id'];$sql = "UPDATE db_demo SET db_name='{$clean['name']}' ,db_password='{$clean['password']}' WHERE db_id = {$clean['id']}";// 执行语句和成功后的跳转语句query_location($sql,'修改成功','index.php','未修改数据或者出错','index.php') ;break;}// 封装的函数
// 执行函数及执行成功后跳转的语句
function query_location ($sql,$success='添加成功',$successhref = 'index.php',$error='添加成功',$errorhref = 'index.php'){global $conn;// 执行sql语句mysqli_query($conn,$sql);//   成功或失败后跳转if(mysqli_affected_rows($conn) > 0){echo "<script type='text/javascript'>alert('$success');window.location.href='$successhref'</script>";exit();}else{echo "<script type='text/javascript'>alert('$error');window.location.href='$errorhref'</script>";exit();}
}
// 将数组以 ‘,’隔开
function check_live($arr = ''){$str = implode(',',$arr);return $str;
}
?>

php案例之后台数据显示-- mysqli面向过程版(procedure oriented programming = POP)相关推荐

  1. php连接mysqli面向过程,PHP基础知识总结:MySQLi 面向过程

    本文只针对 MySQLi 面向过程的函数使用方法. 1 数据库连接相关函数 mysqli_connect(host, user, pwd, db, port, socket), 全部参数都是可选的,默 ...

  2. java编写的控制台版微信零钱明细系统,1.面向过程版,2.面向对象版

    1.面向过程版 import java.text.SimpleDateFormat; import java.util.*;/*** @version 1.0* function:* author:阿 ...

  3. 面向对象编程(一)——面向对象和面向过程

    面向对象(Object Oriented),通过对象来封装我们的数据.(组织代码,封装数据) 面向对象和面向过程: 面向过程:procedure oriented programming,POP 面向 ...

  4. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  5. 面向过程与面向对象的区别

    一.区别简述 面向过程(Procedure Oriented):以过程为核心,强调事件的流程.顺序,如:C语言. 面向对象(Object Oriented):以对象为核心,强调事件的角色.主体,如:C ...

  6. php是面向对象还是过程,PHP面向过程和面向对象

    php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...

  7. python面向对象和面向过程的区别_Python11-01_面向对象----面向对象和面向过程的区别...

    面向对象编程 面向对象(OPP)编程思想主要针对大型软件设计而来的.面向对象编程使程序的扩展性更加强,可读性更好.使得编程可以像搭积木一样简单. 面向对象编程将数据和操作数据的方法封装到对象中,组织代 ...

  8. 25.C++:最通俗的讲解,什么是面向过程?什么是面向对象?

    网上关于这两个的回答真的很多,但是都有一个共同特点:------------不容易懂.我今天就简单通俗的说一下(当然,如果你要非常深入的了解,这篇不适合你.如果你只是为了了解什么是面向过程和面向对象, ...

  9. Java面向对象和面向过程有什么区别?网友:傻傻分不清楚……

    面向对象,Obeject Oriented,是一种编程术语.面向对象是当今软件开发方法的主流方法之一,他是把数据以及对数据的操作放在一起,作为一个相互依存的整体,就是我们所说的对象.对同类对象抽象出其 ...

  10. java面向对象与面向过程的区别

    面向对象与面向过程的区别 面向过程与面向对象,只是一种思维方式的划分   面向过程 面向对象 区别 以分步骤的方式解决问题. 用方法组织代码. 以分类的方式解决问题. 用类组织代码. 共同点 细节上用 ...

最新文章

  1. Oracle 金融类型获得前一交易日
  2. poj2240(Bellman-ford)
  3. 算法分类整理+模板②:字符串处理
  4. String, StringBuffer, StringBuilder之间的区别
  5. java 数据源调用_实战分享: Spring boot 调用之间实现动态数据源
  6. 苹果iPhone SE 2概念视频放出:全面屏的小屏机
  7. Docker学习笔记之浅谈虚拟化和容器技术
  8. JavaWeb——MyBatis入门程序
  9. php log日志管理,PHP日志LOG类定义与用法示例
  10. 如何在 Mac 上重命名 Apple Magic Mouse?
  11. 从 30248.271s 优化到 0.001,跪了....
  12. 【路径规划】基于matalb穷举法机器人栅格地图避障路径规划【含Matlab源码 1675期】
  13. 易语言查询Windows API之网络函数消息函数
  14. 图片数据标注工具与平台(数据标注公司)总结
  15. python3+pip安装教程--centos6
  16. android 汉字笔画拆写,汉字笔画顺序之重新开启
  17. uni-app通过canvas将两张图片合成一张图片
  18. ntp服务器安装和配置文件,NTP服务的安装、配置和使用
  19. 本题要求提取一个字符串中的所有数字字符(‘0‘……‘9‘),将其转换为一个整数输出。
  20. 小米路由器4A千兆版 直刷 openwrt

热门文章

  1. python正则表达式re
  2. 快速阅读《构建之法》——构建之法阅读笔记01
  3. Windows Azure 基本操作手册
  4. linux 内存pss,内存耗用:VSS/RSS/PSS/USS
  5. python编写窗口怎么清除内容_如何删除或销毁tkinter中的标签?
  6. opencv项目案例_三菱PLC的光学玻璃热处理项目
  7. 拓端tecdat|R语言圆填充( Circle packing)算法圆堆图圆形空间填充算法可视化
  8. 拓端tecdat|Matlab正态分布、历史模拟法、加权移动平均线 EWMA估计风险价值VaR和回测Backtest标准普尔指数 SP500时间序列
  9. 拓端tecdat|SAS中用单因素ANOVA研究不同疗法对焦虑症的有效性
  10. 10用户账户控制只有否_写了10 年的代码,收藏了这 20 个代码生成框架!