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:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM