關於php流程管理的全套流程講解

來源:互聯網
上載者:User
流程管理的用法是什麼樣的?

一、要有資料庫的內容的

肯定會有表的,首先就是使用者表了,然後就是流程表,使用者編寫的流程表,還有審核人員的表

二、資料庫結束後,就是建立流程的頁面,這頁面會有審核人員,還有流程的名字還有提交的按鈕

(1)添加節點的人員,這個是要遍曆資料庫來查看都什麼管理員

<p>  請選擇節點人員:        <?phpsession_start();   //開啟sessioninclude("DBDA.class.php");   //調用封裝好的資料庫$db = new DBDA();  //造新對象$suser = "select * from users";  //查詢使用者表中的所有值$auser = $db->Query($suser);  //執行查詢語句foreach($auser as $v){echo "<input class='ck' type='radio' value='{$v[0]}' name='ck' />{$v[2]} ";  //輸出選項按鈕,數組中的索引2,也就是使用者名稱,但是它的值是代號}?></p>

查看一下顯示結果:

(2)既然後選擇審核人員,那麼就是有添加的按鈕

<input type="button" value="添加節點" id="insert" />  //起個名字,便於給它添加單擊按鈕

(3)對這個按鈕添加點擊事件

$("#insert").click(function(){var ck = $(".ck");  //找到項var uid = "";for(var i=0;i<ck.length;i++){if(ck.eq(i).prop("checked"))  //選項按鈕的選中狀態{  uid = ck.eq(i).val();  //選項按鈕的值}}$.ajax({url:"addjd.php",  //添加節點的處理頁面data:{uid:uid},  //將選項按鈕的值傳過去type:"POST",  //傳值方式dataType:"TEXT",  //值的返回狀態success: function(data){window.location.href="liucheng_gaunli.php";  //執行處理頁面成功後會重新整理頁面  }});})

(4)添加節點的處理頁面

<?phpsession_start();  //開啟session$uid = $_POST["uid"];  //接收傳過來的值if(empty($_SESSION["jiedian"])){$attr = array($uid);  //定義一個數組放使用者$_SESSION["jiedian"] = $attr; //將第一個使用者放入數組中}else{$attr = $_SESSION["jiedian"]; //數組中有值$attr[] = $uid;  //放入數組中值$_SESSION["jiedian"] = $attr;   //將值再交給session}

(5)在首頁面中顯示添加的這些節點

<?phpif(empty($_SESSION["jiedian"]))   //如果沒有節點值{echo "<p>還沒有添加節點</p>";  //輸出這句話}else{$attr = $_SESSION["jiedian"];  //數組中有了值foreach($attr as $k=>$v)  //迴圈遍曆,$v只是名字,還有有所以所以用$k{$sname = "select name from users where uid='{$v}'";  //編寫查詢語句$name = $db->StrQuery($sname);  //執行查詢語句          //輸出索引號還有名字,加一個刪除按鈕吧,可以吧這個節點刪除echo "<p>{$k}--{$name}--<input type='button' value='刪除' sy='{$k}' class='sc' /></p>";  }}?>

添加節點看下效果:

1.還沒有添加節點的:  

2.隨便添加幾個審核人員:人員已經顯示出來了

(6)這樣之後就是對其的刪除按鈕添加單擊事件了

$(".sc").click(function(){var sy = $(this).attr("sy");  //點擊這個按鈕,選中這個的索引號$.ajax({url:"shanchu.php",   //刪除按鈕的處理頁面data:{sy:sy},  //把索引號傳到處理頁面type:"POST",  //傳值方式dataType:"TEXT",success:function(data){window.location.href="liucheng_gaunli.php";  //執行處理頁面成功後會重新整理頁面}});})

(7)刪除按鈕的處理頁面

<?phpsession_start();  //開啟session$attr = $_SESSION["jiedian"];  //節點的數組$sy = $_POST["sy"];  //接收穿過來的索引號unset($attr[$sy]); //刪除資料$attr = array_values($attr); //重新索引$_SESSION["jiedian"] = $attr;

查看下刪除節點的效果

1.沒有刪除之前

2.刪除一個節點之後

(8)節點的操作已經結束之後,那麼就是流程的名稱了,這個簡單,寫名稱的文字框:重要的就是對這個流程的儲存了,那麼也要有儲存按鈕

<p>請輸入資料流程名稱:<input type="text" id="name" /></p>    //起個名字,下面儲存的寫個單擊事件有用
<p><input type="button" value="儲存" id="save" /></p>  //儲存按鈕要有單擊事件的

這樣整體的就出來了:  

(9)最後就是儲存按鈕的單擊事件了

$("#save").click(function(){  var name = $("#name").val();  //取到文字框的值  $.ajax({url:"baocun.php",  //儲存的處理頁面data:{name:name},  //將文字框的值傳到處理頁面type:"POST",  //傳值方式dataType:"TEXT",success: function(data){alert("添加成功!");  //執行處理頁面成功後會彈出提示框  }  });})

(10)儲存流程的處理頁面

<?phpsession_start();  //開啟sessioninclude("DBDA.class.php");  //調用封裝的資料庫類$db = new DBDA();  //造新對象$name = $_POST["name"];  //接收傳過來的值$code = time();  //代號是時間$sflow = "insert into flow values('{$code}','{$name}')"; //修改流程表中的值:代號和名字$db->Query($sflow,0);  //執行語句$attr = $_SESSION["jiedian"];  foreach($attr as $k=>$v){$spath = "insert into flowpath values('','{$code}','{$v}','{$k}')";  //修改流程節點的數值$db->Query($spath,0);  //執行語句}

看下儲存效果:

看下資料庫,內容也儲存資料庫了

三、建立流程頁面已經結束了,那麼就是使用者登入頁面了,這個頁面寫了很多遍了,不多說了,直接上代碼

(1)登入的基本顯示:都是些基本語句

<h1>使用者登入</h1><p>帳號:<input type="text" id="uid" /></p> <p>密碼:<input type="password" id="pwd" /></p><p><input type="button" value="登入" id="btn" /></p>

(2)這裡登入,我們也用ajax進行登入吧

$("#btn").click(function(){  //對登入按鈕添加單擊事件  var uid=$("#uid").val();  //擷取使用者的值  var pwd=$("#pwd").val();  //擷取密碼的值  $.ajax({    url:"logincl.php",  //編寫登入的處理頁面    data:{uid:uid,pwd:pwd},  //將使用者和密碼傳到處理頁面    type:"POST",    dataType:"text",    success: function(data)    {      if(data.trim()=="OK")      {        window.location.href="main.php";    //處理頁面執行成功後,跳轉到首頁面      }      else      {        alert("使用者名稱密碼輸入錯誤");  //否則就提示錯誤      }    }  })       })

(3)看下處理頁面的編寫

<?phpsession_start();  //開啟sessioninclude("DBDA.class.php");  //調用封裝的類$db = new DBDA();  //造新對象//傳過來的值$uid = $_POST["uid"];$pwd = $_POST["pwd"];<br>//查詢語句$sql = " select pwd from users where uid='{$uid}' and pwd='{$pwd}' ";//執行語句$attr = $db->Query($sql);if(!empty($pwd) && !empty($attr) && $attr[0][0]==$pwd){    $_SESSION["uid"] = $uid; //session接收使用者值    echo "OK"; }else{    echo "ON"; }?>

最後,我們看下最後結果,登入成功就會進入首頁,登入失敗會提示錯誤

四、節點使用者的審核處理介面了(對於這個審核介面有很多需要注意的地方)

(1)登入成功介面的顯示部分:並不是每個人登入成功介面是一樣的,還有就是如果這個人員不參與審核的話,也應該是沒有資訊的才對

想要顯示的表頭,也就是一行:我們可以用表來顯示

<tr>   <td>流程代號</td>   <td>發起者</td>   <td>發起內容</td>   <td>是否結束</td>   <td>發起時間</td>   <td>操作</td></tr>

先看下錶頭的顯示:

(2)開啟一下session這樣登入者的資訊就會儲存下來

session_start();include("DBDA.class.php");  //會用到資料庫,所以可以調用一下資料庫的類$db = new DBDA();  //造新對象$uid = "";if(empty($_SESSION["uid"]))  //判斷儲存的session值是不是為空白{  header("location:login.php");  //為空白就返回登入頁面}else{  $uid = $_SESSION["uid"];  //不為空白就輸儲存一下使用者}

(3)接下來就是使用者這是不是和流程有關係?流程走到哪了(分情況)?還有就是有沒有通過

//查詢登入者參與的所有流程$su_flow = "select * from userflow where code in(select code from flowpath where uids='{$uid}')";$au_flow = $db->Query($su_flow);  //執行查詢語句foreach($au_flow as $vu_flow){  $towhere = $vu_flow[6]; //流程走到哪裡了  //找到登入者在該流程中的位置  $s_weizhi = "select orders from flowpath where code='{$vu_flow[1]}' and uids='{$uid}'";  $wezhi = $db->StrQuery($s_weizhi); //該人員在流程中的位置  if($towhere>=$wezhi)  {    $caozuo = "";    if($towhere==$wezhi)    {  //流程正好走到登入者位置  $caozuo="<a href='tongguo.php?ids={$vu_flow[0]}'>通過</a>"; //get方式傳過處理頁面    }    else    {  //流程走過登入者  $caozuo = "<span style='background-color:green; color:white'>已通過</span>";    }    echo "<tr><td>{$vu_flow[1]}</td><td>{$vu_flow[2]}</td><td>{$vu_flow[3]}</td><td>{$vu_flow[4]}</td><td>{$vu_flow[5]}</td><td>{$caozuo}</td></tr>";  }  else  {    //流程未走到登入者  }}

(4)通過的處理頁面

<?phpinclude("DBDA.class.php");  //調用封裝好的資料庫類$db = new DBDA();  //造新對象$ids = $_GET["ids"];  //將代號傳過來$sql = "update userflow set towhere=towhere+1 where ids='{$ids}'";  //修改towhere的值看已經執行到哪了$db->Query($sql,0);  //執行修改語句$swhere = "select * from userflow where ids='{$ids}'";  $attr = $db->Query($swhere);$towhere = $attr[0][6]; //走到哪了$code = $attr[0][1]; //流程代號$ssl = "select count(*) from flowpath where code='{$code}'";   //查詢總數$pcount = $db->StrQuery($ssl); //該流程節點人員數量if($towhere>=$pcount){  $sql = "update userflow set isok=true where ids='{$ids}'";  //修改是不是已經通過了  $db->Query($sql,0);}header("location:main.php");

因為還沒有寫發起流程介面,那麼先從資料庫中添加幾條資料看看:

(1)我們先要建立個流程,這是第一個頁面,我們就用建立流程

看下結點還有流程名稱 來看下資料庫中結點的表

根據這些我們在流程表中自己先添加資訊吧,等後來再通過發起流程添加,現在只看下效果

登入審核人員的帳號看下:

第一個人是李四:

我們點擊通過,繼續往下走

第二個人是馬七,我們不點通過,看下下一個人員(王五)有沒有這個通過的操作:是沒有這個操作的

我們讓馬七通過審核,再看下王五的介面

王五的介面就是:就發現有了這個操作,繼續下去,我們看下最後這個通過會不會變成1

最後審核人員張三

看下結果是否會結束:

再看下資料庫中towhere中的數值是不是已經結束了:

這個就剩下發起流程的步驟了,可以先看下效果:

(1)發起流程有個連結頁面,單擊這個,可以連結到發起流程頁面

(2)這個及時發起流程的頁面了

這個挺簡單的了,後面再更新吧~~~

至此,這個流程管理就結束了~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.