• 学习笔记-----php搭建用户管理系统


    后台:php,数据库:mysql,前端:html,css,js;

    主要页面介绍:

    1.php连接数据库后台,读取数据并将其以表格的形式显示,并且有添加,编辑,删除,分页等功能;

    2.php用于添加用户的表单页面,1.php中的添加用户按钮跳转到这里;

    3-add.php用于接收2.php POST过来的表单数据,加以简单sql语言添加用户操作;

    4-del.php用于sql删除数据操作;

    5-edit.php类似2.php,用于编辑用户信息;

    6-save.php用于接收5-edit.php POST过来的表单数据,加以简单sql语言编辑用户信息;

    page.php用于处理分页功能;

    FIRST(主要1.php页面)

    首先每个php页面为了中文显示不乱码使用代码

    header('Content-type:text/html;charset=utf-8');

    mysql数据库设计细节

    id设置为主键,并且设置为自动递增,birth设置为日期date

    pdo连接数据库,获取所有数据

    $dsn = 'mysql:dbname=user_messages;host=localhost';
    $user = 'root';
    $password = 'root';
    
    try{
        $pdo = new PDO($dsn,$user,$password);
    }catch(PDOException $e){
        echo '出错了,错误信息为',$e->getMessage();  
    }
    
    $sql = "SET NAMES UTF8";
    $pdo -> exec($sql);
    
    $sql = "SELECT * FROM `users`";
    $res = $pdo -> query($sql);
    $data = $res ->fetchAll(PDO::FETCH_ASSOC); //获取的所有数据数组

    使用foreach遍历显示数据

    <?php foreach ($data as $key => $value):?>
    <tr>
        <td><?php echo $value['id'] ?></td>
        <td><?php echo $value['name'] ?></td>
        <td><?php echo $value['age'] ?></td>
        <td><?php echo $value['sex'] == 1 ? '男' : '女' ?></td>
        <td><?php echo $value['birth'] ?></td>
        <td><?php echo $value['phone'] ?></td>
        <td><?php echo $value['vita'] ?></td>
    </tr>
    <?php endforeach ?>

    SECOND(添加用户3-add.php页面)

    先判断2.php页面有没有POST数据过来

    if(!empty($_POST)){
       $insert_data = $_POST; //获取2.php传过来的数据  
    }

    提取$insert_data数组中的字段来填充成sql语言进行操作

    $keys = array_keys($insert_data); //获取数据的key
    $filed = '(`' .implode('`,`',keys). '`)';
    $values = "'".implode("','",$insert_data)."'";
    $sql = 'INSERT INTO `users` .$filed.'VALUES('.$values.');';
    
    $affect_row = $pdo -> exec($sql);
    
    if($affect_row>0){
        echo '<script>alert("添加成功");location="1.php"</script>';
    }else{
        echo '<script>alert("添加失败");history.back();</script>';
    }

    THIRD(删除操作4-del.php)

    删除操作主要获取该数据的id,使用$_GET获取

    在1.php页面设置一个删除按钮,并将id设置在href里面、

    <a name="detel" href="4-del.php?id=<?php echo $value['id']?">删除></a>

    然后先判断能不能GET得到id

        if(isset($_GET['id'])){
            $id = $_GET['id']+0; //为了防止用人直接在地址栏输入非数字来访问破坏数据库,强行转换为数字
    
            $dsn = 'mysql:dbname=user_messages;host=localhost';
            $user = 'root';
            $password = 'root';
    
            try{
                $pdo = new PDO($dsn,$user,$password);
            }catch(PDOException $e){
                echo "出错了:". $e->getMessage();
            }
    
            $sql = "SET NAMES UTF8";
            $T = $pdo ->exec($sql);
    
            $sql = "DELETE FROM `users` WHERE `id` = $id";
            $affect_row = $pdo->exec($sql);
            if($affect_row>0){
                echo '<script>alert("删除成功");location="1.php"</script>';
            }else{
                echo '<script>alert("删除失败");history.back();</script>';
            }
        }    

    FOUTH(编辑操作5-edit.php和6-save.php)

    在1.php页面设置一个编辑按钮,并将id设置在href里面

    <a href="5-edit.php?id=<?php echo $value['id'] ?>">编辑</a> 

    获取该id所对应的数据,将其预显示在5-edit.php的表单input里面

        if(isset($_GET['id'])){
            $id = $_GET['id']+0;
            $dsn = 'mysql:dbname=user_messages;host=localhost';
            $user = 'root';
            $password = 'root';
    
            try{
                $pdo = new PDO($dsn,$user,$password);
            }catch(PDOException $e){
                echo "出错了:". $e->getMessage();
            }
    
            $sql = "SET NAMES UTF8";
            $T = $pdo ->exec($sql);
    
            $sql = "SELECT `id`,`name`,`age`,`sex`,`phone`,`birth`,`person` FROM `users` WHERE `id` = $id";
            $res = $pdo->query($sql);
            $one_user = $res->fetch(PDO::FETCH_ASSOC); 
        }

    6-save.php用于处理5-edit.php POST过来的新数据

        if (!empty($_POST))
        {
            $dsn = 'mysql:dbname=user_messages;host=localhost';
            $user = 'root';
            $password = 'root';
            // 连接数据库
            try {
                $pdo = new PDO($dsn , $user , $password);
            } catch (PDOException $e) {
                // print_r($e);
                echo '出错啦。错误信息是', $e->getMessage() , '<br> 看不懂就联系网站管理员';
                // echo '网站升级中';
            }
            
            // 设置编码
            $sql = "SET NAMES UTF8";
            $pdo -> exec ( $sql );
    
            $where = $_POST['id'];
            unset($_POST['id']);
            $save_data = $_POST;
    
            $sql = "UPDATE `users` SET";
            foreach ($save_data as $key => $value) {
                $sql.="`".$key."`='".$value."',";
            }
            $sql = rtrim($sql,',');
            $sql.=" WHERE `id`=$where";
            $affect_rows = $pdo ->exec($sql);
            if ($affect_rows > 0)
            {
                echo '<script>alert("修改成功");location="1.php"</script>';
            }
            else
            {
                echo '<script>alert("修改失败");history.back();</script>';
            }
        }

    分页功能

     在1-php中设置好参数,并调用一个写好的函数

    // 分页
        $current = isset($_GET['page'])?abs($_GET['page']):1;
        $current = $current>0?$current:1;
        $limit = 5;
        $offect = $limit * ($current-1);
    
        $sql = "SELECT COUNT(*) FROM `users`";
        $res = $pdo->query($sql);
        $count = $res->fetch(PDO::FETCH_NUM);
        $count = $count[0];
    
        $size = 5;
    
        $sql = "SELECT * FROM `users` LIMIT $offect,$limit";
    //调用函数
    <?php page($current,$limit,$count,$size);?>

    函数

    function page($current,$limit,$count,$size){
        $count_page = ceil($count/$limit);
        if($current>1){
            echo '<a href="?page=1">首页</a>';
            echo '<a href="?page='.($current-1).'">上一页</a>';
        }else{
            echo'<span>首页</span>';
            echo'<span>上一页</span>';
        }
    
        if($current<$size/2+1){
            $star = 1;
            $end = $count_page>=$size?$size:$count_page;
        }elseif($current>($count_page-($size/2)+1)){
            $star =($count_page-$size+1)>=1?($count_page-$size + 1):1;
            $end = $count_page;
        }else{
            $star = $current - floor($size/2);
            $end = $current + floor($size/2);
        }
    
        for($i = $star;$i<=$end;$i++){
            if ($i == $current) {
                echo ' <span>'.$i.'</span> ';
            }else{
                echo ' <a href="?page='.$i.'">'.$i.'</a> ';
            }
        }
    
        if($current<$count_page){
            echo '<a href="?page='.($current+1).'">下一页</a>';
            echo '<a href="?page='.$count_page.'">尾页</a>';
        }else{
            echo'<span>下一页</span>';
            echo'<span>尾页</span>';
        }
    }
  • 相关阅读:
    我孤独吗?我软弱吗?
    DataGrid 中的 HyperLinkColumn 如何传递多个参数?(未整理)
    C# 获取 MAC地址!
    (文本)文件操作
    ioninfinitescroll实现上拉分页加载更多
    前端面试题:防抖的实现
    vue 传送门功能,实现模态窗口
    前端面试题:节流的实现( 减少一段时间的触发频率)
    vue中的render函数
    ionic5实现tab栏切换效果
  • 原文地址:https://www.cnblogs.com/zgx123/p/7652765.html
Copyright © 2020-2023  润新知