php之 常用的 流程管理


1.流程管理的用法是什么樣的?

2.怎么發起想要的流程?

3.審批的人要是怎么審批通過?

4.流程審核是不是要挨個走過?

 

一、要有數據庫的內容的

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

         

 

二、數據庫結束后,就是新建流程的頁面,這頁面會有審核人員,還有流程的名字還有提交的按鈕

(1)添加節點的人員,這個是要遍歷數據庫來查看都什么管理人員

<div>
  請選擇節點人員:
    
    <?php
	session_start();   //開啟session
	include("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,也就是用戶名,但是它的值是代號
	}
	?>
</div>

查看一下顯示結果:

(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)添加節點的處理頁面

<?php
session_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)在主頁面中顯示添加的這些節點

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

添加節點看下效果:

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)刪除按鈕的處理頁面

<?php
session_start();  //開啟session
$attr = $_SESSION["jiedian"];  //節點的數組
$sy = $_POST["sy"];  //接收穿過來的索引號

unset($attr[$sy]); //刪除數據
$attr = array_values($attr); //重新索引
$_SESSION["jiedian"] = $attr;

查看下刪除節點的效果

1.沒有刪除之前

2.刪除一個節點之后

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

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

這樣整體的效果圖就出來了:  

(9)最后就是保存按鈕的單擊事件了

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

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

<?php
session_start();  //開啟session
include("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>
<div>賬號:<input type="text" id="uid" /></div> 
<div>密碼:<input type="password" id="pwd" /></div>
<div><input type="button" value="登錄" id="btn" /></div>

(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)看下處理頁面的編寫

<?php
session_start();  //開啟session
include("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)通過的處理頁面

<?php
include("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)這個及時發起流程的頁面了

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

 

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

 


免責聲明!

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



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