共有三篇。这是第三篇,附上链接

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

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

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

效果如下,,样式什么的自己搞吧:

目录展示

connect.php
<?php
// 连接数据库
$host     = '127.0.0.1';        //ip
$user     = 'root';             //账号
$password = 'weicunbin123';     //密码
$db       = 'testguest';        //数据库名字
$type     = 'mysql';            //数据库类型
// $dsn =“数据库类型:host=数据库的域名;dbname=数据库名;”;
$dsn      = "$type:host=$host;dbname=$db;"; //data source name =>数据源名字try{$pdo = new PDO($dsn,$user,$password);
}catch(PDOException $e){die('connect error:'.$e -> getMessage());}
?>

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 = $pdo -> query($sql);}else{$dataSql = "SELECT * FROM db_demo ORDER BY db_date DESC";$dataResult = $pdo -> query($dataSql);// 需要注意的是在查询语句中,使用query,但在增删改中使用exec
}
?><!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 = $dataResult -> fetch(PDO::FETCH_ASSOC)){?><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  $pdo;// 1, 当执行 insert、update、delete 等没有结果集的查询时,使用 PDO 的 exec() 方法执行,//      执行成功后将返回受影响的行数。该方法不能用于 select 查询:// 2,当执行返回结果集的 select 查询时,或者所影响的行数无关紧要时,应当使用 PDO 对象中的 query() 方法,// 如果该方法成功执行所制定的查询,则返回一个 PDOStatement 对象,并且可以使用 PDOStatement 对象的 rowCount() 方法获取获取的数据行数:if( $pdo -> exec($sql) > 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案例之后台数据显示-- PDO版(php data object)相关推荐

  1. PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决

    PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决 参考文章: (1)PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决 (2)ht ...

  2. Spring3.2.0-mybatis3.2.0 基于全注解搭建的后台框架-基础版

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: Spring3.2.0-mybatis3.2.0 基于全注解搭建的后台框架-基础版 没有什么不可能  之前一直用的是自 ...

  3. 《Android 应用案例开发大全(第二版)》——2.6节绘制相关类

    本节书摘来自异步社区<Android 应用案例开发大全(第二版)>一书中的第2章,第2.6节绘制相关类 ,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区"异步 ...

  4. 《Android 应用案例开发大全(第二版)》——6.1节Android系统的信使:Intent

    本节书摘来自异步社区<Android 应用案例开发大全(第二版)>一书中的第6章,第6.1节Android系统的信使:Intent ,作者李宁,更多章节内容可以访问云栖社区"异步 ...

  5. 《Android 应用案例开发大全(第二版)》——导读

    本节书摘来自异步社区<Android 应用案例开发大全(第二版)>一书中的目录 ,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  6. Axure通用版电商后台管理系统+通用版移动端商城商户端+电商管理系统+对账管理+消息管理+内容管理+运营管理、会员管理、订单管理、促销管理、财务管理+通用版商城前后端电商系统+电商用户数据大屏看板

    作品介绍:Axure通用版电商后台管理系统+通用版移动端商城商户端+电商管理系统+对账管理+消息管理+内容管理+运营管理.会员管理.订单管理.促销管理.财务管理+通用版商城前后端电商系统+电商用户数据 ...

  7. 《Android 应用案例开发大全(第二版)》——2.3节案例的基本框架

    本节书摘来自异步社区<Android 应用案例开发大全(第二版)>一书中的第2章,第2.3节案例的基本框架 ,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区" ...

  8. java前端显示统计报表数据_java实现后台数据显示在前端

    java实现后台数据显示在前端 发布时间:2020-09-07 15:16:09 来源:脚本之家 阅读:98 作者:沿途不枉少年 本篇使用servlet +.ajax( )的技术,实现简单的前后台的交 ...

  9. 《Android 应用案例开发大全(第二版)》——1.5节第一个Android程序——Hello Android...

    本节书摘来自异步社区<Android 应用案例开发大全(第二版)>一书中的第1章,第1.5节第一个Android程序--Hello Android ,作者 吴亚峰 , 于复兴 , 杜化美, ...

  10. 案例:后台管理案例(VUE路由案例)

    目录 1. 素材下载: 2. 案例效果 3. 案例用到的知识点 4. 案例各个部分的实例代码(这里只提供修改的代码) 项目目录: 路由模块index.js部分: main.js部分: App.vue部 ...

最新文章

  1. 神经网络压缩方法:模型量化的概念简介
  2. 每日一皮:第一次用CSS的时候,我震惊了...
  3. 下载服务 php,文件下载: 云---php服务---pc
  4. Debug Tensorflow :Two checkpoint references resolved to different objects
  5. 用html做简易计步器,HTML5 运动计步器
  6. 特斯拉不顾疫情开工,马斯克放话:若要逮捕,冲我一个人来!
  7. MySQL Innodb数据库性能实践——VARCHAR vs CHAR
  8. 检测对象是否拥有某一属性
  9. Postman下载使用
  10. 左手鼠标指针——Windows11Aeroleft
  11. 微信小程序开发——调用免费天气api接口(高德、天气API)
  12. 赴日IT派遣,如何避免入坑
  13. 一文理解kafka端到端的延迟
  14. RegSVR32 找不到指定模块问题解决
  15. 实验三,基于Unittest框架的单元测试
  16. javascript,H5,jQuery,css“实现音乐歌词解析,歌词同步滚动,进度条拖拽、进度条同步,音量控制,歌词同步高亮的功能齐全的简易音乐播放器
  17. Java使用Scanner与random实现骰子游戏
  18. 6.Postman之批量执行
  19. 三大分析法——SWOT、PEST、波特五力
  20. web前端技术笔记(十六)bootstrap、表单正则和前端优化

热门文章

  1. git clone权限被拒绝
  2. tcp/ip协议listen函数中backlog参数的含义
  3. Searchmonkey 0.8.0
  4. 拓端tecdat|R语言马尔可夫MCMC中的Metropolis Hastings,MH算法抽样(采样)法可视化实例
  5. 拓端tecdat|回归树模型分析纪录片播放量影响因素|数据分享
  6. 机器人弹古筝图片_除了百度,还有这些搜索引擎哦:深网搜索引擎「第二弹」...
  7. (16)机器学习_ROC曲线绘制
  8. (11)机器学习_Kmeans聚类算法
  9. 案例7-2 寻找大富翁 (25 分)(STL容器)
  10. pymysql获取数据