博客列表 >完成员工管理系统实现系统设置功能和分页功能(实现系统设置功能页面 站点关闭功能 分页功能)2019年2月28日22时

完成员工管理系统实现系统设置功能和分页功能(实现系统设置功能页面 站点关闭功能 分页功能)2019年2月28日22时

小明的博客
小明的博客原创
2019年05月20日 06:26:401003浏览

今天学习了员工管理系统中的系统设置功能  关闭站点功能  分页功能  作业:分页首页尾页中间...隐藏前进一大页后退一大页功能实现。(作业目前暂未作)

一、系统设置功能

这里同修改员工功能一样,只不过这里数据交互在当前页面,通过在ajax中提交目标设置为<?= $_SERVER['PHP_SELF']?>?action=save'实现。

实例

<?php session_start();?>
<?php if (!isset($_SESSION['username'])): ?>
    <style>h2,p{text-align: center;margin-top: 50px;}</style>
    <h2>您还没有登录呢~~</h2>
    <p>正在跳转到登录页面...</p>
    <script>
        setTimeout("location.assign('login.php')", 2000);
    </script>
<?php else:?>
<?php

//    连接数据库
$pdo = new PDO('mysql:dbname=php', 'root', 'root');
if (isset($_GET['action']) && $_GET['action'] === 'save') {
//    sql语句
    $sql = 'UPDATE `system` 
            SET `name`=:name, `address`=:address, `tel`=:tel, `closed`=:closed
            WHERE `id`=:id';
//    设置准备对象
    $stmt = $pdo->prepare($sql);
//    数据绑定
    $stmt->bindValue('name', $_POST['name'], PDO::PARAM_STR);
    $stmt->bindValue('address', $_POST['address'], PDO::PARAM_STR);
    $stmt->bindValue('tel', $_POST['tel'], PDO::PARAM_STR);
    $stmt->bindValue('closed', $_POST['closed'], PDO::PARAM_INT);
    $stmt->bindValue('id', $_POST['id'], PDO::PARAM_INT);
//   如果执行的话
    if ($stmt->execute()) {
        if ($stmt->rowCount() == 1) {
            echo json_encode(['status'=>1, 'message'=>'更新成功']);die();
        } elseif ($stmt->rowCount() == 0) {
            echo json_encode(['status'=>0, 'message'=>'没有数据更新']);die();
        }
    } else {
        echo json_encode(['status'=>-1, 'message'=>'发生错误']); die();
    }
} else {
//    查询代码
    //  获取准备对象
    $stmt = $pdo->prepare('SELECT * FROM `system` LIMIT 1');
//  执行操作
    $stmt->execute();
//获取结果记录
    $system = $stmt->fetch(PDO::FETCH_ASSOC);
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>系统设置</title>
    <style>
        h3 {
            text-align: center;
        }

        div {
            width: 300px;
            height: 260px;
            /*background-color: lightblue;*/
            margin: 0 auto;
            text-align: center;
            padding: 20px;
            border: 1px dashed #888;
            border-radius: 5%;
        }

        div input {
            border: none;
            border-bottom: 1px solid #333;
        }

        button:hover {
            cursor: pointer;
            background-color: lightblue;
        }

        .success {
            color: green;
        }
        .error {
            color: red;
        }

    </style>
</head>
<body>
<h3>系统设置</h3>
<div>
    <form name="system">
        <p>
            <label for="name">公司名称:</label>
            <input type="text" name="name" id="name" value="<?= $system['name']?>">
        </p>
        <p>
            <label for="address">公司地址:</label>
            <input type="text" name="address" id="address" value="<?= $system['address']?>">
        </p>
        <p>
            <label for="tel">公司电话:</label>
            <input type="text" name="tel" id="tel" value="<?= $system['tel']?>">
        </p>

        <p>关闭站点:
            <input type="radio" id="close" name="closed" value="1"><label for="close">关闭</label>
            <input type="radio" id="open" name="closed" value="0"><label for="open">开启</label>
        </p>
        <script>
            var close = document.getElementById('close');
            var open = document.getElementById('open');
            // 将male female的值变成整数 然后判断是否checked
            if (parseInt(close.value) === <?= $system['closed']?>) {
                close.checked = true;
            }
            if (parseInt(open.value) === <?= $system['closed']?>) {
                open.checked = true;
            }
        </script>
        <p><input type="hidden" name="id" value="<?= $system['id']?>"></p>
        <p>
            <button type="button" onclick="save(this.form)">修改</button>
            <button type="button" onclick="history.back()">取消</button>
        </p>
        <!--    提示占位符-->
        <p></p>
    </form>
</div>
<script>
    function save(form) {
        //ajax异步提交数据
        var request = new XMLHttpRequest();
    //      准备状态获取响应返回数据
        request.onreadystatechange = function () {
            // console.log(request.responseText);
            var data = JSON.parse(request.responseText);
            var tips = form.lastElementChild;
            tips.innerText = data.message;
            if (data.status === 1) {
                tips.classList.add('success');
            } else {
                tips.classList.add('error');
            }
            setTimeout(function () {
                history.back();
                top.location.reload();
            }, 2000);
        };
    //    提交方式及提交目标
        request.open('POST', '<?= $_SERVER['PHP_SELF']?>?action=save');
    //    设置请求头
        request.setRequestHeader('content-type','application/x-www-form-urlencoded');
    //    数据变量
        var data = {
            name:form.name.value,
            address:form.address.value,
            tel:form.tel.value,
            closed:form.closed.value,
            id:form.id.value

        };
        var system = 'name='+data.name+
                     '&address='+data.address+
                     '&tel='+data.tel+
                     '&closed='+data.closed+
                     '&id='+data.id;
    //    发送数据
        request.send(system);
    }
</script>
</body>
</html>
<?php endif;?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

二、站点关闭功能

数据库新建system表,在config页面中设置closed值(1为关闭  0显示),然后在index中根据closed的值进行显示与否的判断,当然可以通过在index连接数据库获取closed值,但是这里引入了环境变量$_ENV,我认为这也可省去重复连接数据库,减轻数据库负担,index相对来说还是要频繁访问的,利用环境变量全局访问的特性,一处引用多处实现。

新建config.php

实例

<?php
//    连接数据库
$pdo = new PDO('mysql:dbname=php', 'root', 'root');
//    准备对象
$stmt = $pdo->prepare('SELECT * FROM `system` LIMIT 1');
//    执行
$stmt->execute();
//    得到记录对象
$system = $stmt->fetch(PDO::FETCH_ASSOC);

//    将数据库中的字段值赋给  超级全局变量$_ENV中,可以供其他页面使用
$_ENV['closed'] = $system['closed'] ? 1 : 0;
$_ENV['name'] = $system['name'];
$_ENV['address'] = $system['address'];
$_ENV['tel'] = $system['tel'];

运行实例 »

点击 "运行实例" 按钮查看在线实例

index.php

实例

<?php session_start()?>
<!--文件加载失败会终止程序-->
<?php require 'config.php'?>
<!--问价加载失败会报错 不会终止程序-->
<?php include 'config.php'?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>瑾瑜网络  员工管理系统</title>

<link href="css/bootstrap.min.css" rel="stylesheet">

<link href="css/styles.css" rel="stylesheet">



</head>

<body>
	<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
		<div class="container-fluid">
			<div class="navbar-header">

				<a class="navbar-brand" href="index.php"><span>瑾瑜</span>网络</a>
				<ul class="user-menu">
					<li class="dropdown pull-right">
                        <?php if (isset($_SESSION['username'])):?>
                            <a href="#" class="dropdown-toggle" ><span class="glyphicon glyphicon-user"></span>  <?=$_SESSION['username'] ?></a>
                          |  
                        <a href="javascript:return false" class="dropdown-toggle" onclick="return confirm('是否推出?')?location.assign('logout.php'):false ;" > 退出 </a>
                        <?php else:?>
                            <script>location.assign('login.php');</script>
                        <?php endif; ?>
					</li>
				</ul>
			</div>
		</div><!-- /.container-fluid -->
	</nav>
		
	<div id="sidebar-collapse" class="col-sm-3 col-lg-2 sidebar">
		<form role="search">
			<div class="form-group">
				<input type="text" class="form-control" placeholder="搜索">
			</div>
		</form>
		<ul class="nav menu">
            <?php if ($_ENV['closed'] == 0):?>
			<li class="active"><a href="staff_list.php" target="workspace"><span class="glyphicon glyphicon-dashboard"></span> 员工管理</a></li>
			<?php endif;?>
            <li><a href="system.php" target="workspace"><span class="glyphicon glyphicon-th"></span> 系统设置</a></li>
			<li><a href="user_list.php" target="workspace"><span class="glyphicon glyphicon-stats"></span> 用户设置</a></li>



		</ul>
		<div class="attribution">版权所有 <a href="#" target="_blank" title=>@<?= $_ENV['name']?> </a>
            <br>
            <?= $_ENV['address']?>  | <?= $_ENV['tel']?>
        </div>
	</div><!--/.sidebar-->
		
	<div class="col-sm-9 col-sm-offset-3 col-lg-10 col-lg-offset-2 main">			
		<iframe src="staff_list.php" name="workspace" class="workspace"></iframe>

	</div>	<!--/.main-->


</body>

</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

三、分页功能

主要理解实现原理,LIMIT 偏移量,每页显示数;偏移量 = (当前页码 - 1)*每页显示数;

实例

<?php
//连接数据库
$pdo = new PDO('mysql:dbname=php', 'root', 'root');
//每页显示数据数
$pageNum = 5;
//获取当前页的页码 通过url的p用get传递
$page = isset($_GET['p']) ? $_GET['p'] : 1;
//echo $page;
//获取总记录数
$stmt = $pdo->prepare('SELECT COUNT(*) FROM `staff` WHERE `is_show`=1');
//$stmt->errorInfo();
$stmt->execute();
$total = $stmt->fetchColumn(0);


//获取总页码
$pages = ceil($total/$pageNum);
//偏移量
$offset = ($page - 1) * $pageNum;

//sql语句
$sql = "SELECT * FROM `staff` WHERE `is_show`=1 ORDER BY `hiredate` DESC LIMIT {$offset},{$pageNum}";
//准备对象
$stmt = $pdo->prepare($sql);
//执行
$stmt->execute();
// 员工信息
$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 标题
$title = '员工信息表';

// 表格标题
$tableTitle = $title;

// 员工数量
//$total = count($staffs);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><?php echo $title; ?></title>
    <style>

        table,th,td {
            border: 1px solid #666;
            padding: 8px;
        }
        table {
            border-collapse: collapse;
            width: 80%;
            text-align: center;
            margin: 30px auto;
        }
        thead tr:first-of-type {
            background-color: lightblue;
        }

        tbody tr:hover {
            background-color: #efefef;
        }

        table > caption {
            font-size: 1.2rem;
            margin-bottom: 15px;
        }
        table + p {
            text-align: center;
        }

        button:hover {
            cursor: pointer;
            background-color: lightblue;
        }
        /*设置分页样式*/
        table + p {
            text-align: center;
        }

        table + p a {
            display: inline-block;
            width: 30px;
            height: 24px;
            color: #666;
            border: 1px solid #333;
            text-decoration-line: none;
        }
        /*鼠标悬停到分页码上的效果*/
        table + p a:hover {
            background-color: lightblue;
            color: #000;
        }
        /*添加按钮给个特殊样式*/
        #add {
            height: 25px;
            width: 90px;
            position: absolute;
            right: 10%;
            top: 32px;
        }

    </style>
</head>
<body>

<button onclick="location.href='staff_add.php'" id="add">添加</button>
<table>

    <caption>
        <?php
        echo '<span style="color:red">' . $tableTitle . '</span>';
        ?>
    </caption>
    <thead>
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>手机</th>
        <td>入职</td>
        <th>操作</th>
    </tr>
    </thead>
    <tbody>

    <!--foreach()替代语法-->
    <?php foreach($staffs as $staff) : ?>
        <tr>

            <td><?php echo $staff['id']; ?></td>
            <td><?php echo $staff['name']; ?></td>


            <td><?php echo $staff['age']; ?></td>

            <!--if()替代语法-->
            <td>
                <?php if($staff['sex'] == 1) : ?>
                    男
                <?php else: ?>
                    女
                <?php endif; ?>
            </td>


            <!--如果只是简单的输出变量可以使用php短标签语法-->
            <td><?=$staff['mobile']?></td>

            <td>
                <?php
                echo date('Y/m/d',$staff['hiredate']);
                ?>
            </td>

            <td>

                <button onclick="location.href='staff_edit.php?id=<?=$staff['id']?>'">编辑</button>
                <button onclick="return confirm('是否删除?') ? location.assign('staff_manage.php?action=del&id=<?=$staff['id']?>') : false"><span style="color:red">删除</span></button>
            </td>

        </tr>
    <?php endforeach;?>

    </tbody>
</table>
<!--<p>总计:
    <?php /*echo $total;  */?>
    人</p>-->
<p>
    <!--分页页码通过循环***-->
    <?php for ($i=1;$i<=$pages;$i++):?>
        <?php
        if (isset($_GET['p']) && $_GET['p'] == $i):
            $bgcolor = 'style="background-color:lightblue"';
        else:
            $bgcolor = '';
        endif;?>

        <a href="javascript: location.href='<?=$_SERVER['PHP_SELF']?>?p=<?=$i?>'"
            <?=$bgcolor?>
        >
            <?=$i?>
        </a>
    <?php endfor;?>
</p>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

四、总结

1、跨页面调用需要重复连接数据库,可以考虑通过环境变量实现;

2、include加载失败会报错不会终止程序   require加载错误就会终止程序

3、分页作业思路,首页最后一页把p的值写死实现,前一页后一页实现通过p当前值+1实现,需要判断是否超出第一页和最后一页,超过了当前按钮就disabled;中间省略号功能还没考虑好,目前有点思路是首先设置有省略号时,中间显示几个页码(中间页码),两头显示几个页码(两头页码),设置好这辆值,然后就开始进行判断。如果当前页- ceil(中间页码/2)>两头页码  并且 当前页+ceil(中间页码/2)< 最大页码  就两头显示....   如果如果当前页- ceil(中间页码/2)<两头页码  最后显示...  如果当前页+ceil(中间页码/2)> 最大页码  就前面显示...

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议