• php审核流程详解


    在公司运营中,人员的变动及请假、离职情况都很普遍,这就需要有一个管理系统来系统的做一套流程,可以提升工作效率节省时间。在流程中需要有顺序的进行提交审核,接下来我们做一套简单的新建流程以及提交审核的系统:

    首先需要几张表:userss表、liucheng表、jiedian表、userflow表

    第一步新建流程,添加节点,这里要将userss表中的性命显示出来,这里可以用单选也可以用下拉,我们用下拉列表显示:

    <h1>新建流程</h1>
    <div>请选择节点人员:
        <select id="user">
        <?php
        session_start();
        require "DBDA.class.php";
        $db = new DBDA();
        $sql = "select * from userss";
        $arr = $db->query($sql);
        foreach($arr as $v)
        {
            echo "<option value='{$v[0]}'>{$v[2]}</option>";//找到人员姓名
        }
        ?>
       </select>
       <input type="button" value="添加节点" id="addjd" /><!--id为了添加点击事件-->
    </div><br />

    效果图:

    第二步引入jquery包,给节点添加点击事件:

    <script>//给节点添加点击事件
    $("#addjd").click(function(){
        var uid = $("#user").val();
        $.ajax({
            url:"liuadd.php",
            data:{uid:uid},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                window.location.href="liucheng.php";//刷新页面
            }
        }) 
    })

    liuadd.php处理页面:

    <?php
    session_start();
    $uid = $_POST["uid"];//取用户名
    
    if(empty($_SESSION["jiedian"]))
    {
        $arr = array($uid);//如果为空,造一个数组
        $_SESSION["jiedian"] = $arr;
    }
    else
    {
        $arr = $_SESSION["jiedian"];
        $arr[] = $uid;//将值添加进去
        $_SESSION["jiedian"] = $arr;
    }

    第三步嵌入php代码,取出session的值,点击添加节点添加到下方:

    <div>
    <?php
    if(empty($_SESSION["jiedian"]))
    {
        echo "您尚未添加节点人员";
    }
    else
    {
        $arr = $_SESSION["jiedian"];
        foreach($arr as $k=>$v)
        {
            $sql = "select name from userss where uid = '{$v}'";
            $name = $db->strquery($sql);
            echo "<div id='ys'>{$k}--{$name}--<input type='button' value='移除' class='yichu' sy='{$k}' /></div>";//取出索引,姓名并添加移除按钮
        }
    }
    ?>
    </div><br />

    看看效果:

    第四步:给移除按钮添加点击事件:

    //移除的点击事件
    $(".yichu").click(function(){
        var sy = $(this).attr("sy");
        $.ajax({
            url:"yichu.php",
            data:{sy:sy},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                window.location.href="liucheng.php";
            }
        })
    })

    yichu.php处理页面:

    <?php
    session_start();
    $sy = $_POST["sy"];
    
    $arr = $_SESSION["jiedian"];
    unset($arr[$sy]);//从数组中删除sy这一项
    $arr = array_values($arr);//重新索引
    $_SESSION["jiedian"] = $arr;

    第五步:添加流程名称及保存按钮,保存到数据库:

    <div>请输入流程名称:
    <input type="text" id="name" />
    </div><br />
    <input type="button" value="保存" id="baocun" />

    保存按钮添加点击事件:

    //保存的点击事件
    $("#baocun").click(function(){
        var name = $("#name").val();
        $.ajax({
            url:"baocun.php",
            data:{name:name},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                alert("保存成功");
            }
        })
    })

    baocun.php处理页面:

    <?php
    session_start();
    require "DBDA.class.php";
    $db = new DBDA();
    $name = $_POST["name"];
    $code = time();//时间戳生成code
    
    $sql = "insert into liucheng values('{$code}','{$name}')";//保存到liucheng里边
    $db->query($sql,0);
    $arr = $_SESSION["jiedian"];
    foreach($arr as $k=>$v)
    {
        
        $sql = "insert into jiedian values('','{$code}','{$v}','{$k}')";//保存到jiedian里边。
        $db->query($sql,0);
    }

    实现效果:

    数据库:

    上边是新建流程及保存流程,下边我们就要进行流程的发起和审核:

    发起流程要先登录,所以先建个登录页面:

    <h1>登录页面</h1>
    <form action="liudengchuli.php" method="post">
    <div>用户名:<input type="text" name="uid" /></div>
    <div>密码:<input type="password" name="pwd" /></div>
    <input type="submit" value="登录" />
    </form>

    登录处理页面:

    <?php
    session_start();
    $uid = $_POST["uid"];
    $pwd = $_POST["pwd"];
    
    require "DBDA.class.php";//引入封装类
    $db = new DBDA();
    $sql = "select pwd from userss where uid = '{$uid}'";//通过用户名找密码
    $mm = $db->strquery($sql);
    if($mm == $pwd && !empty($pwd))//判断密码是否相同且不为空
    {
        $_SESSION["uid"] = $uid;
        header("location:liumain.php");
    }

    然后做一个主页面,主页面内容非常简单,就是发起流程和审核流程:

    <body>
    <h1>主页面</h1>
    <div><a href="faqi.php">发起流程</a> <a href="shenhe.php">审核流程</a></div>
    </body>

    建好主页面后开始发起流程页面的设置:

    发起流程用下拉列表显示:

    <h1>发起流程</h1>
    <form action="faqichuli.php" method="post">
    <div>请选择发起的流程:
        <select name="lc">
            <?php
            require "DBDA.class.php";
            $db = new DBDA();
            $sql = "select * from liucheng";
            $arr = $db->query($sql);
            foreach($arr as $v)
            {
                echo "<option value='{$v[0]}'>{$v[1]}</option>";//取出流程名称
            }
            ?>
        </select>
    </div>
    <br />
    <div>请输入发起的内容:
        <textarea name="nr"></textarea>
        </div>
        <br />
        <input type="submit" value="发起" />
    </form>

    写发起处理页面:

    <?php
    session_start();
    $code =$_POST["lc"];
    $nr = $_POST["nr"];
    $uid = $_SESSION["uid"];
    $time = date("Y-m-d H:i:s",time());//将时间戳替换为格式化的时间
    
    require "DBDA.class.php";
    $db = new DBDA();
    $sql = "insert into userflow values('','{$code}','{$uid}','{$nr}',0,'{$time}',0)";
    $db->query($sql,0);
    header("location:liumain.php");//跳回主页面

    发起后要进行审核,审核是一级级的审,下级没有通过的时候上级是不会看到的:

    <h1>审核页面</h1>
    <?php
    session_start();
    $uid = $_SESSION["uid"];//存储的用户名
    
    require "DBDA.class.php";
    $db = new DBDA();
    
    $sql = "select * from userflow a where code in(select code from jiedian where uid='{$uid}') and towhere >=(select orders from jiedian b where b.code=a.code and b.uid='{$uid}' )" ;//这里用到了相关子查询,流程顺序是否已经到达该用户或已经被该用户审核过
    
    $arr = $db->query($sql);
    echo "<table width='100%' border='1' cellpadding='0' cellspacing='0'>
        <tr>
            <td>流程代号</td>
            <td>发起者</td>
            <td>发起内容</td>
            <td>是否结束</td>
            <td>发起时间</td>
            <td>操作</td>
        </tr>
    ";
    foreach($arr as $v)
    {
        $zt = "<a href='liutongguo.php? code={$v[0]}'>通过</a>";
        $sql = "select orders from jiedian where code='{$v[1]}' and uid='{$uid}'";//通过用户名和代号找出顺序
        $wz = $db->strquery($sql);
        if($v[6]>$wz)
        {
            $zt = "<span style='color:green'>已通过</span>";
        }
        //显示表中内容
        echo "<tr>
            <td>{$v[1]}</td>
            <td>{$v[2]}</td>
            <td>{$v[3]}</td>
            <td>{$v[4]}</td>
            <td>{$v[5]}</td>
            <td>{$zt}</td>
        </tr>";
    }
    echo "</table>";
    ?>

    最后是通过处理页面:

    <?php
    $ids = $_GET["code"];
    require "DBDA.class.php";
    $db = new DBDA();
    //让流程往下走
    $sql = "update userflow set towhere = towhere+1 where ids='{$ids}'";//审核通过后顺序加一,给到下一个人
    $db->query($sql,0);
    
    //判断流程是否结束
    $sql = "select max(orders) from jiedian where code=( select code from userflow where ids='{$ids}')";//找出顺序中最大的数
    $maxsx = $db->strquery($sql);
    
    $sql = "select towhere from userflow where ids='{$ids}'";
    $towhere = $db->strquery($sql);
    
    if($towhere>$maxsx)
    {
        //如果结束了,修改状态
        $sql = "update userflow set isok = 1 where ids='{$ids}'";
        $db->query($sql,0);
    }
    
    
    header("location:shenhe.php");

    看一下效果:

    审核人登录:

    点击通过:

    最终审核人:

    通过后是否结束显示为1:

  • 相关阅读:
    使用dbms_metadata.get_ddl遇到ORA-31603
    oracle得到建表语句
    Linux性能优化和监控系列(一)——top工具
    Oracle在Linux下的性能优化
    地址跳转问题
    无法对 数据库'UDS' 执行 删除,因为它正用于复制
    [.net 多线程]SpinWait
    [.net 多线程 ]ReaderWriterLock
    [.net 多线程]Barrier
    [.net 多线程]CountdownEvent
  • 原文地址:https://www.cnblogs.com/daofaziran/p/11654564.html
Copyright © 2020-2023  润新知