php流程管理功能實現的案例

來源:互聯網
上載者:User
核心邏輯:流程管理,在各種系統中扮演很重要的地位,可以把設定好的流程放入系統中,規定好幾個節點,只要所有節點都通過,就可以通過。

建立四張資料庫表:

1.我們首先做一個建立流程頁面 flow.php,先把節點做好


<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>            <script src="bootstrap/js/jquery-1.11.2.min.js"></script>        </head>    <body>        <h2>管理員建立流程</h2>        <p><select id="users" name="users">            <? "./DBDA.class.php" =  = "select * from users" = ->query(,0(   "<option value='{[0]}'>{[2]}</option>"?>            </select>            <input type="button" value="添加" id="add" />        </p>                <br />        <p>            <?((["jd" "還未添加節點人員!" = ["jd"];                (  =>){                     = "select name from users where uid='{}'" = ->StrQuery(,0);                     "<p>{}--{}--<input type='button' value='刪除' class='del' code='{}' /></p>"?>        </p>        <br />        <p><input type="text" id="name" />        </p>        <br />        <input type="button" value="建立" id="addbtn" />    </body>    <script>      "#add").click( uid = $("#users")..:"flowchuli.php",:"POST",:{uid:uid,type:0},:"TEXT",:.location.href = "flow.php"".del").click( k = $(this).attr("code");            $.:"flowchuli.php",:"POST",:{k:k,type:1},:"TEXT",:.location.href = "flow.php"        $("#addbtn").click( name = $("#name")..:"flowchuli.php",:"POST",:{name:name,type:2},:"TEXT",:"添加成功!"</script></html>

2.做建立流程頁面的處理頁面flowchuli.php


<?phpsession_start();require_once "./DBDA.class.php";$db = new DBDA();$type = $_POST["type"];switch($type){    case 0:        $uid = $_POST["uid"];        if(empty($_SESSION["jd"])){//暫存節點            $arr = array($uid);//新造數組            $_SESSION["jd"] = $arr;//存入session        }else{            $arr = $_SESSION["jd"];//取數組            $arr[] = $uid;//追加變數到數組            $_SESSION["jd"] = $arr;        }        break;    case 1:        $k = $_POST["k"];        $arr = $_SESSION["jd"];        unset($arr[$k]);        $arr = array_values($arr);//重新對數組進行排序,有傳回值接收        $_SESSION["jd"] = $arr;        break;    case 2:            $name = $_POST["name"];        $code = time();//自動產生        $sql = "insert into flow values('{$code}','{$name}')";//流程表        $db->query($sql);        //流程節點表        $arr = $_SESSION["jd"];        foreach($arr as $k=>$v){            $sql = "insert into flowpath values(0,'{$code}','{$v}',{$k})";            $db->query($sql);        }                break;}

效果

點擊選擇節點人員可以從資料庫調所有人員名單,現在把李四,馬七和張三放入流程中,做一個請假流程:

注意:Code必須用varchar,不能用time,因為在上面用了時間戳記

3.現在我們在做一個登陸使用者頁面flowlogin.php,提交請假流程的所有步驟:


<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>        <script src="bootstrap/js/bootstrap.min.js"></script>        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>    </head>    <style>        .-left:-top:.-left:-top: -.name,.-width:.-top:</style>    <body>        <form ="form-horizontal" role="form">    <h3 ="title">使用者登入</h3>    <p ="quanju">            <p ="form-group yangshi1">                <label ="firstname" ="col-sm-2 control-label">使用者名稱:</label>                <p ="col-sm-10">                    <input type="text" ="form-control name" id="uid" placeholder="請輸入使用者名稱">                </p>            </p>            <p ="form-group yangshi2">                <label ="lastname" ="col-sm-2 control-label">密碼:</label>                <p ="col-sm-10">                    <input type="text" ="form-control pwd" id="pwd" placeholder="請輸入密碼">                </p>            </p>            <p ="form-group">                <p ="col-sm-offset-2 col-sm-10">                    <p ="checkbox">                        <label>                        <input type="checkbox"></label>                        <label>                        <input type="checkbox"></label>                    </p>                </p>            </p>            <p ="form-group">                <p ="col-sm-offset-2 col-sm-10">                    <button type="button" id="login" ="btn btn-warning" value="登入" ></button>                                    </p>            </p>        </p>        </form>            </body>    <script>"#login").click( uid = $("#uid"). pwd = $("#pwd")..:"post",:"flowloginchuli.php",:{uid:uid,pwd:pwd},:"TEXT",:(data.()=="OK".location.href="flowmain.php""使用者名稱或密碼有誤!"</script></html>

4.登入後跳轉的首頁面flowmain.php

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h2>首頁面</h2> <a href="flowfq.php">發起流程</a> <a href="flowsh.php">審核流程</a> </body> </html>

5.發起流程頁面flow.php


<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>            </head>    <body>        <h2>發起流程</h2>        <form action="flowfqchuli.php" method="post">            請選擇流程:            <select name="flow">                <?php                require_once "./DBDA.class.php";                $db = new DBDA();                $sql = "select * from flow";                $arr = $db->query($sql,0);                foreach($arr as $v){                    echo "<option value='{$v[0]}'>{$v[1]}</option>";                }                ?>            </select>            <br />            <br />            請輸入內容:            <textarea name="content"></textarea>            <br />            <br />            <input type="submit" value="確定" />        </form>            </body></html>

6.做發起流程的處理頁面flowfq.php


<?phpsession_start();require_once "./DBDA.class.php";$db = new DBDA();$code = $_POST["flow"];$uid = $_SESSION["uid"];$content = $_POST["content"];$time = date("Y-m-d H:i:s");$sql = "insert into userflow values(0,'{$code}','{$uid}','{$content}',0,'{$time}',0)";$db->query($sql);header("location:flowmain.php");

7.審核頁面flowsh.php


<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>            <script src="bootstrap/js/jquery-1.11.2.min.js"></script>        <script src="bootstrap/js/bootstrap.min.js"></script>        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>        </head>    <body>    <p><h2>審核頁面</h2>        <table class="table table-bordered">            <thead>                <tr>                    <th>流程代號</th>                    <th>發起人</th>                    <th>發起內容</th>                    <th>通過狀態</th>                    <th>發起時間</th>                    <th>操作</th>                </tr>            </thead>            <tbody>                <?php                session_start();                $uid = $_SESSION["uid"];                require_once "./DBDA.class.php";                $db = new DBDA();                //相互關聯的子查詢(用到父查詢的資料)(父查詢卡在某一位置)                $sql = "select * from userflow a where towhere>=(select b.order from flowpath b where b.code=a.code and b.uid='{$uid}')";                    $arr = $db->query($sql,0);                    foreach($arr as $v){                    //$v[6];//流程走到的位置towhere                    //$v[1];//利用代號和session中存的name查詢order                    $sql = "select order from flowpath where code='{$v[1]}' and uid='{$uid}'";                    $order = $db->StrQuery($sql,0);//該人員在流程中的次序                    $str = "";                    if($v[6]==$order){                            //傳主索引值                        $str = "<a href='flowtgchuli.php?ids={$v[0]}'>通過</a>";                    }else{                        $str = "<span style='color:green'>已通過</span>";                    }                    echo "<tr>                    <th>{$v[1]}</th>                    <th>{$v[2]}</th>                    <th>{$v[3]}</th>                    <th>{$v[4]}</th>                    <th>{$v[5]}</th>                    <th>{$str}</th>                </tr>";                }                        ?>                                            </tbody>        </table>    </p>        </body></html>

8.做審核頁面的處理頁面flowshchuli.php


<?phpsession_start();$uid = $_SESSION["uid"];require_once "./DBDA.class.php";$db = new DBDA();$ids = $_GET["ids"];$sql = "update userflow set towhere=towhere+1 where ids='{$ids}'";$db->query($sql);//判斷;流程是否結束(使用相互關聯的子查詢)$swc = "update userflow a set isok=1 where ids='{$ids}' towhere>=(select count(*) from flowpath b where b.code=a.code)";header("location:flowsh.php");

流程效果

李四的頁面:

點擊通過後:

資料庫:towhere變成1後結束流程

接著該馬七:

然後是張三:

資料庫:isok變成1後結束流程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.