• php……流程


    流程:由两个及以上的业务步骤,完成一个完整的业务行为的过程,可称之为流程;注意是两个及以上的业务步骤。事物进行过程中的次序或顺序的布置和安排。

    创建页面:

    • 登录页面(login.php):
    <h1>登录</h1>
    <form action="loginchuli.php" method="post">
        <div>用户名:<input type="text" name="uid" /></div><br />
    
        <div>密码:&nbsp;<input type="password" name="pwd" /></div><br />
    
        <input type="submit" value="登录" />
    </form>
    View Code

    • 登录处理页面(loginchuli.php):
    <?php
    session_start();
    $uid = $_POST["uid"];
    $pwd = $_POST["pwd"];
    
    include("../DB.class.php");
    $db = new DB();
    
    $sql = "select count(*) from Users where Uid='{$uid}' and Pwd = '{$pwd}'";
    
    $z = $db->StrQuery($sql);
    
    if($z == 1)
    {
        $_SESSION["uid"] = $uid;
        header("location:main.php");
    }
    else
    {
        header("location:login.php");
    }
    View Code
    • 主页面(main.php):
    <style type="text/css">
    *{ margin:0 auto; padding:0}
    #menu{ width:600px; height:50px; line-height:50px; text-align:center;  color:#FFF;}
    .z{ height:50px; line-height:50px; text-align:center; float:left; margin-right:50px;}
    .t{height:50px; line-height:50px; text-align:center; float:right;}
    a:link,a:visited{ color:#03C;}
    a:hover{ background-color:#930; color:#FFF;}
    a:active{ background-color:#900; }
    
    </style>
    </head>
    
    <body>
    <?php
    session_start();
    if(empty($_SESSION["uid"]))
    {
        header("location:login.php");    
    }
    ?><br />
    <center><h1>主页面</h1></center><br />
    <div id="menu">
    <div class="z"><a href="xinjian.php">新建流程</a></div>
    <div class="z"><a href="faqi.php">发起流程</a></div>
    <div class="z"><a href="shenhe.php">审核流程</a></div>
    <div class="t"><a href="tuichu.php">退出系统</a></div>
    
    </div>
    View Code

    • 新建流程页面(xinjian.php):
    <script src="../jquery-1.11.2.min.js"></script>
    </head>
    
    <body>
    <?php
    session_start();
    include("../DB.class.php");
    $db = new DB();
    $attr = array();
    if(!empty($_SESSION["jiedian"]))
    {
        $attr = $_SESSION["jiedian"];    
    }
    ?>
    <h1>新建流程</h1>
    <div>
        请选择节点人员:<br /><br />
        <?php
        $sry = "select * from Users";
        $ary = $db->Query($sry);
        foreach($ary as $v)
        {
            echo "<input type='radio' class='ry' name='ry' value='{$v[0]}'/>{$v[2]}";    
        }    
        ?>
    </div>
    <br />
    <div>
    <input type="button" value="添加节点" id="tjjd" />
    </div>
    <br />
    <div>
    <?php
    //循环遍历数组key与value值
    foreach($attr as $k=>$v)
    {
        //根据用户名找到Name
        $sname = "select Name from Users where Uid = '{$v}'";
        $name = $db->StrQuery($sname);
        echo "<div>{$k}--{$name}--<input type='button' value='删除' class='sc' bs='{$k}' /></div>";//将数组索引存入自定义属性bs中
    }
    ?>
    </div>
    <br />
    <div>
        请输入流程名称:
        <input type="text" id="mc" />
    </div><br />
    <div>
    <input type="button" value="添加流程" id="tjlc" />
    </div><br />
    <a href="main.php">返回主页面</a>
    </body>
    </html>
    <script type="text/javascript">
    $(document).ready(function(e) {
        //页面加载完成之后,设置显示默认选中第一项
        $(".ry").eq(0).prop("checked",true);
        //添加节点按钮点击事件
        $("#tjjd").click(function(){
            //取选中的用户名
            var ry = $(".ry");
            var uid ="";
            for(var i=0;i<ry.length;i++)
            {
                if(ry.eq(i).prop("checked"))
                {
                    //如果选中,将其value值存入变量uid中
                    uid = ry.eq(i).val();    
                }    
            }
            
            $.ajax({
                
                url:"tjjd.php",
                data:{uid:uid},
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    
                    window.location = "xinjian.php";
                    }            
                });
            
            })
        
        //删除节点按钮点击事件
        $(".sc").click(function(){
            //获取属性bs的值,即数组$attr的索引值
            var id = $(this).attr("bs");
            
            $.ajax({
                
                url:"scjd.php",
                data:{id:id},
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    
                    window.location = "xinjian.php";
                    }            
                });        
            })
            
            //添加按钮点击事件
            $("#tjlc").click(function(){
                //取出输入的流程名称
                var name = $("#mc").val();
                $.ajax({
                
                url:"tjlc.php",
                data:{name:name},
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    //alert(data);
                    if(data.trim()=="OK")
                    {
                        window.location="xinjian.php";
                    }
                    else
                    {
                        alert("添加失败!");    
                    }
                    }            
                });        
                
                })        
        
    });
    
    </script>
    View Code

    • 添加节点页面(tjjd.php):
    <?php
    session_start();
    
    $uid = $_POST["uid"];
    //判断是否是第一次点击
    if(empty($_SESSION["jiedian"]))
    {
        //第一次点击,新建一个数组,存入session
        $attr = array($uid);
        $_SESSION["jiedian"] = $attr;    
    }
    else
    {
        //第n次点击,n!=1,直接取出数组追加一个传过来的值,存入session
        $attr = $_SESSION["jiedian"];
        array_push($attr,$uid);
        $_SESSION["jiedian"]= $attr;
    }
    View Code

    • 删除节点页面(scjd.php):
    <?php
    session_start();
    
    $id = $_POST["id"];
    $attr = $_SESSION["jiedian"];
    //删除数组中的某一个元素
    unset($attr[$id]);
    //重新索引数组
    $attr = array_values($attr);
    //将新数组存入session
    $_SESSION["jiedian"] = $attr;
    View Code

    • 添加流程页面(tjlc.php):
    <?php
    session_start();
    include("../DB.class.php");
    $db = new DB();
    $attr = array();
    if(!empty($_SESSION["jiedian"]))
    {
        $attr = $_SESSION["jiedian"];    
    }
    $name = $_POST["name"];
    //向流程表中添加数据
    $code = date("YmdHisms");
    $slc = "insert into LiuCheng values('{$code}','{$name}')";
    //echo $slc;
    //判断是否执行成功的变量
    $isok = true;
    if($db->Query($slc,1))
    {
        foreach($attr as $k=>$v)
        {
            $sfl = "insert into FlowPath values('','{$code}','{$v}',{$k})";    
            $isok = $isok && ($db->Query($sfl,1));
        }    
    }
    if($isok)
    {
        unset($_SESSION["jiedian"]);
        echo "OK";    
    }
    else
    {
        echo "NO";    
    }
    View Code
    • 发起流程页面(faqi.php):
    <script src="../jquery-1.11.2.min.js"></script>
    </head>
    
    <body>
    <?php
    session_start();
    if(empty($_SESSION["uid"]))
    {
        header("location:login.php");    
    }
    include("../DB.class.php");
    $db = new DB();
    ?>
    <h1>发起流程</h1>
    <div>
        请选择流程:
        <select id="lc">
        <?php
        $sql = "select * from LiuCheng";
        $attr = $db->Query($sql);
        foreach($attr as $v)
        {
            echo "<option value='{$v[0]}'>{$v[1]}</option>";    
        }
        ?>    
        </select>
    </div><br />
    <div>
        请选择内容:
        <textarea class="nr"></textarea>
    </div>
    <br />
    <div>
        <input type="button" value="发起流程" id="faqi" />
    </div><br />
    <a href="main.php">返回主页面</a>
    </body>
    </html>
    <script type="text/javascript">
    $(document).ready(function(e) {
        $("#faqi").click(function(){
            
            var code = $("#lc").val();
            var nr = $(".nr").val();
            $.ajax({
                
                url:"faqichuli.php",
                data:{code:code,nr:nr},
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    
                    if(data.trim()=="OK")
                    {
                        alert("发起成功!");    
                    }
                    else
                    {
                        alert("发起失败!");    
                    }
                    }            
                });        
            })
        
        
        
    });
    
    
    </script>
    View Code

    • 发起流程处理页面(faqichuli.php):
    <?php
    session_start();
    include("../DB.class.php");
    $db = new DB();
    $code = $_POST["code"];
    $nr = $_POST["nr"];
    $uid = $_SESSION["uid"];
    $riqi = date("Y-m-d H:i:s");
    $isok = true?"<span style='color:green'>已完成</span>":"<span style='color:red'>未完成</span>";
    
    $sql = "insert into UserFlow values('','{$code}','{$uid}','{$nr}',false,'{$riqi}',0)";
    
    if($db->Query($sql,1))
    {
        echo "OK";    
    }
    else
    {
        echo "NO";
    }
    View Code
    • 审核流程页面(shenhe.php):
    <h1>审核流程</h1>
    <?php
    session_start();
    include("../DB.class.php");
    $db = new DB();
    if(empty($_SESSION["uid"]))
    {
        header("location:login.php");    
    }
    $uid = $_SESSION["uid"];
    ?>
    <table width="1000" border="1" cellpadding="0" cellspacing="0">
    <tr bgcolor="#FFCC66" style="color:#930">
    <td>流程名称</td>
    <td>发起者</td>
    <td>流程内容</td>
    <td>是否结束</td>
    <td>发起时间</td>
    <td>操作</td>
    </tr>
    
    <?php
    
    $suf = "select * from UserFlow order by RiQi desc";
    $auf = $db->Query($suf);
    foreach($auf as $v)
    {
        //根据流程代号到flowpath表查询登陆者在流程中的次序
        $sfp = "select Code,Orders from FlowPath where Code = '{$v[1]}' and Uids = '{$uid}'";
        $cx = $db->Query($sfp);        
        if($cx)
        {
            $ucode = $cx[0][0];  //流程代号
            $ucx = $cx[0][1];    //次序
            //判断该流程是否走到了该用户
            if($v[1]==$ucode && ($v[6]>=$ucx))
            {
                $lname = Lname($db,$v[1]);
                $fname = Fname($db,$v[2]);
                //处理是否结束
                $isok = $v[4]?"<span style='background-color:red'>已结束</span>":"<span style='background-color:green'>处理中</span>";
                //处理操作
                $chuli = "";
                if($v[6]==$ucx)
                {
                    $chuli = "<a href='shenhechuli.php?id={$v[0]}'>审核</a>";    
                }
                else
                {
                    $chuli = "<span style='background-color:green'>已通过</span>";    
                }
                echo "<tr>
                <td>{$lname}</td>
                <td>{$fname}</td>
                <td>{$v[3]}</td>
                <td>{$isok}</td>
                <td>{$v[5]}</td>
                <td>{$chuli}</td>
                </tr>";    
            }    
        }    
    }
    
    //处理流程名称
    function Lname($db,$code)
    {
        $sql = "select Name from LiuCheng where Code = '{$code}'";    
        return $db->StrQuery($sql);
    }
    //处理发起者名
    function Fname($db,$uid)
    {
        $sql = "select Name from Users where Uid = '{$uid}'";    
        return $db->StrQuery($sql);
    }
    ?>
    </table><br />
    
    <a href="main.php">返回主页面</a>&nbsp;<a href="tuichu.php">退出系统</a>
    </body>
    View Code

    • 审核流程处理页面(shenhechuli.php):
    <?php
    include("../DB.class.php");
    $db = new DB();
    $id = $_GET["id"];
    
    $sql = "update UserFlow set ToWhere = ToWhere+1 where Ids = '{$id}'";
    
    if($db->Query($sql,1))
    {
        //查询流程走到哪了
        $stw = "select Code,ToWhere from UserFlow where Ids = '{$id}'";
        $atw = $db->Query($stw);
        $code = $atw[0][0];//流程代号
        $tw = $atw[0][1];  //流程到哪了
        //查询该流程下的节点数
        $sfp = "select count(*) from FlowPath where Code = '{$code}'";
        $sl = $db->StrQuery($sfp);
        //如果流程走到的位置大于等于了该流程中节点总数
        if($tw>=$sl)
        {
            $ok = "update UserFlow set IsOk = true where Ids = '{$id}'";
            $db->Query($ok,1);    
        }
        
        header("location:shenhe.php");    
    }
    else
    {
        echo "审核失败!";    
    }
    View Code
    • 退出系统页面:
    <?php
    session_start();
    unset($_SESSION["uid"]);
    header("location:login.php");
  • 相关阅读:
    Iconfont——实现字体图标的反转
    HTTPS——https下的静态资源中如何使用http的地址
    TP5.x——initialize()中如何return
    vscode——tab转空格
    Chocolatey——windows下的包管理器
    head里两个重要标签base和meta
    js原生触发事件
    路径分隔符不一致,导致windows下不能开发
    HTML词法和语法
    chrome headless 无头浏览器 应用
  • 原文地址:https://www.cnblogs.com/xinghun/p/5541694.html
Copyright © 2020-2023  润新知