[关闭]
@1kbfree 2018-05-24T22:43:05.000000Z 字数 4841 阅读 1241

简单的用户管理分析

PHP项目分析


PHP图片

项目介绍

这是笔者从GITHUB上找的简单PHP程序(用于学习)

image_1cc2vfnu31qpg1a1j1fob13be3ejm.png-72.6kB
这是一个可 增删查 的用户数据管理


数据库连接代码:

先介绍一下数据库的表结构:

image_1cc3136er1ru31m9si1chlcue21t.png-24.4kB

  1. <?php
  2. $pdo = new PDO('mysql:host=localhost;dbname=data','root','root'); //PDO(PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,比如mysql有limit,MSSQL没有limit,pdo会自动转换)
  3. $pdo->exec('set names utf8'); //设置编码
  4. $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); //设置默认结果集模式为关联数组
  5. $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //修改报错模式
  6. ?>

其中的PDO是:

PDO(PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,比如mysql有limit,MSSQL没有limit,pdo会自动转换)

PDO好处:

  1. 更换数据库时取得极大便利(从A数据库换成其他数据库可以不需要修改查询的代码,因为PDO帮我实现了)
  2. 更换数据库时取得极大便利

首页代码:

  1. <?php
  2. include 'config.inc.php'; //包含连接数据库的代码
  3. $len = 10; //每页展现10条数据
  4. $page = !empty($_GET["page"]) ? $_GET["page"] : 1;//三元表达式,表示如果$_GET['page']为空时,默认值为1
  5. $sqlTotal = "select count(Id) from t1"; // SQL语句。意思是查询t1表中的Id字段个数
  6. $smtTotal = $pdo->prepare($sqlTotal); //准备要执行的SQL语句并返回一个 PDOStatement 对象(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
  7. echo "<strong>\$sqlTotal:</strong>";
  8. print_r($smtTotal);
  9. echo "<br />";
  10. echo "<strong>execute():</strong>";
  11. print_r($smtTotal->execute());
  12. $tot = $smtTotal->fetchColumn(); //总记录数
  13. echo "<br />";
  14. echo "<strong>\$tot:</strong>";
  15. print_r($tot);
  16. echo "<br />";
  17. $pages = ceil($tot/$len); //总页数
  18. echo "<strong>\$pages:</strong>";
  19. print_r($pages);
  20. ... ...(省略,先讲解一下这段代码的用法)

image_1cc30pp7sd2s1qr7198mul41vig1g.png-34.8kB

可以看看我写的PDO的文章(别夸我,谁让我是爱学习的好孩子)

首页的代码我统统写了注释:

image_1cc3s3mnp9ma7luult1egp1rk19.png-178.8kB

更改用户数据代码:

  1. <?php
  2. /*
  3. 思路:先获取对应的数据,然后返回到输入框,如果我们选择提交,表单就会发送的数据就会更改到数据库里,实现更改内容
  4. */
  5. <?php
  6. include 'config.inc.php';
  7. $Id = $_GET["Id"]; //获取GET请求过来的Id值
  8. $sql = "select * from t1 where Id=?"; //SQL语句的查询
  9. $smt = $pdo->prepare($sql); //给SQL语句做标记
  10. $smt->bindValue(1,$Id); //想成是给上面的?改成$Id变量的值
  11. $smt->execute(); //执行SQL语句
  12. $row = $smt->fetch(); //接收SQL语句查询到的结果
  13. ?>
  14. <!DOCTYPE html>
  15. <html>
  16. <head>
  17. <title>update</title>
  18. <meta charset="utf-8">
  19. </head>
  20. <script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script>
  21. <script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  22. <link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
  23. <body>
  24. <div class="container">
  25. <h1 class="page-header">
  26. <a href="index.php" class="btn btn-warning">查看用户</a>
  27. <a href="" class="btn btn-primary">修改用户</a>
  28. </h1>
  29. <form action="act.php?act=update&Id=<?php echo $Id;?>" method="post"> <!-- act页面实现的修改功能,这里只需要传入要修改的Id值就可以更改此Id中对应的数据 -->
  30. <div class="form-group">
  31. <label>新用户名:</label>
  32. <input type="text" class="form-control" name="Name" value=<?php echo "{$row['Name']}";//把查询到的数据的Name返回到输入框中,这样子我们就可以实现修改功能 ?>
  33. >
  34. </div>
  35. <div class="form-group">
  36. <label>新密码:</label>
  37. <input type="text" class="form-control" name="Pwd" value=
  38. <?php echo "{$row['Pwd']}"; //同上?>
  39. >
  40. </div>
  41. <div class="form-group">
  42. <input type="submit" class="btn btn-primary">
  43. <input type="reset" class="btn btn-danger">
  44. </div>
  45. </form>
  46. </div>
  47. </body>
  48. </html>

插入数据代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>add</title>
  5. <meta charset="utf-8">
  6. </head>
  7. <script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script>
  8. <script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  9. <link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
  10. <body>
  11. <div class="container">
  12. <h1 class="page-header">
  13. <a href="index.php" class="btn btn-warning">查看用户</a>
  14. <a href="" class="btn btn-primary">添加用户</a>
  15. </h1>
  16. <form action="act.php?act=insert" method="post"> <!-- act.php页面实现了插入功能,所以这里我们只需要把内容提交到act.php就可以完成插入内容 -->
  17. <div class="form-group">
  18. <label>用户名:</label>
  19. <input type="text" class="form-control" name="Name">
  20. </div>
  21. <div class="form-group">
  22. <label>密码:</label>
  23. <input type="text" class="form-control" name="Pwd">
  24. </div>
  25. <div class="form-group">
  26. <input type="submit" class="btn btn-primary">
  27. <input type="reset" class="btn btn-danger">
  28. </div>
  29. </form>
  30. </div>
  31. </body>
  32. </html>

删除功能代码:

删除页面代码也在首页(index.php)里实现的
image_1cc57auk9gkn62o16121cad1bau9.png-104.5kB
一般我们删除操作是需要十分谨慎的,因为数据一旦删除是无法恢复的,那么如果用户不小心点到了按钮,我们就应该提醒他是否要删除。

image_1cc57donr1leu1i341t1r1479fafm.png-36kB
可以看到这里有一个class是delete,然后看到下面有一段提醒是否执行删除的JS代码:
image_1cc57nvhn1dml1u0910ko1sccv4213.png-48.6kB

最后我们看看act.php的代码:

  1. <?php
  2. include 'config.inc.php'; //包含PDO链接数据库代码
  3. $act = $_GET["act"]; //获取GET请求过来的act值,来实现增、删、改。
  4. if($act == 'delete'){ //如果是选择删除
  5. $Id = $_GET["Id"]; //获取GET请求过来的ID
  6. $sql = "delete from t1 where Id=?"; //这是SQL语句的删除
  7. $smt = $pdo->prepare($sql); //给SQL语句做标记
  8. $smt->bindValue(1,$Id); //绑定一个值到用作预处理的 SQL 语句中的对应命名占位符或问号占位符
  9. if($smt->execute()){ //判断是否执行成功,如果执行成功返回的是1
  10. echo "<script>location='index.php'</script>"; //执行成功就跳转到首页(index.php)
  11. }
  12. }
  13. if($act == 'insert'){ //如果是选择插入
  14. $Name = $_POST["Name"]; //获取POST请求的Name值
  15. $Pwd = $_POST["Pwd"]; //获取POST请求的Pwd值
  16. $sql = "insert into t1(Name,Pwd) values('{$Name}','{$Pwd}')"; //这是SQL语句的插入
  17. $smt = $pdo->prepare($sql); //给SQL语句做标记
  18. if($smt->execute()){ //判断是否执行成功
  19. echo "<script>location='index.php'</script>"; //执行成功就跳转到首页(index.php)
  20. }
  21. }
  22. /*如果act=update和id=x,那么就执行修改的SQL语句,修改条件(where)是Id=x*/
  23. if($act == 'update'){ //如果是更改
  24. $Id = $_GET["Id"]; //获取GET请求的Id值
  25. $Name = $_POST["Name"]; //获取POST的Name值
  26. $Pwd = $_POST["Pwd"]; //获取POST请求的Pwd值
  27. $sql = "update t1 set Name='{$Name}',Pwd='{$Pwd}' where Id={$Id}"; //这是SQL语句的更改
  28. $smt = $pdo->prepare($sql); //给SQL语句做标记
  29. if($smt->execute()){ //判断是否执行成功
  30. echo "<script>location='index.php'</script>"; //如果执行成功就跳转到首页(index.php)
  31. }
  32. }
  33. ?>
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注