php如何实现流程管理?
2022-11-27 21:09:48
213
{{single.collect_count}}

php实现流程管理的方法:首先新建流程页面,并建好节点;然后点击选择节点人员可以从数据库调所有人员名单;最后做一个登陆用户,提交请假流程的所有步骤即可。

php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用

php实现流程管理的方法:

我们首先做一个新建流程页面,先把节点做好

xinjian.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><script src="../dist/js/jquery-1.11.2.min.js"></script></head><body><h1>新建流程</h1><div>请选择节点人员:<select id="user"><?phpsession_start();include("../fengzhuang/DBDA.class.php");$db = new DBDA();$sql = "select * from lc_users";$arr = $db->Query($sql);foreach($arr as $v){echo "<option value='{$v[0]}'>{$v[2]}</option>";}?></select><input type="button" value="添加节点" id="add" /></div><br /><div><?phpif(!empty($_SESSION["user"])){$attr = $_SESSION["user"];foreach($attr as $k=>$v){$sname = "select name from lc_users where uid='{$v}'";$name = $db->StrQuery($sname);echo "<div>{$k}--{$name}--<input type='button' value='删除' key='{$k}' class='del' /></div>";}}?></div><br /><div>请输入流程名称:<input type="text" id="name" /></div><br /><input type="button" value="保存" id="btn" /></body><script type="text/javascript">//添加节点按钮加点击$("#add").click(function(){var uid = $("#user").val();$.ajax({url:"chuli.php",data:{uid:uid,type:0},type:"POST",dataType:"TEXT",success: function(data){window.location.href="xinjian.php";}});})//给删除按钮加点击$(".del").click(function(){var key = $(this).attr("key");$.ajax({url:"chuli.php",data:{key:key,type:1},type:"POST",dataType:"TEXT",success:function(data){window.location.href="xinjian.php";}});})//给保存按钮加点击$("#btn").click(function(){var name = $("#name").val();$.ajax({url:"chuli.php",data:{name:name,type:2},type:"POST",dataType:"TEXT",success:function(data){alert("保存成功!");}});})</script></html>
登录后复制

chuli.php

<?phpsession_start();include("../fengzhuang/DBDA.class.php");$db = new DBDA();$type = $_POST["type"];switch($type){case 0:$uid = $_POST["uid"];if(empty($_SESSION["user"])){$arr = array($uid);$_SESSION["user"] = $arr;}else{$arr = $_SESSION["user"];array_push($arr,$uid);$_SESSION["user"] = $arr;}break;case 1:$key = $_POST["key"];$arr = $_SESSION["user"];unset($arr[$key]); //删除$arr = array_values($arr); //重新索引$_SESSION["user"] = $arr;break;case 2:$name = $_POST["name"];$code = time();//添加流程$sql = "insert into lc_liucheng values('{$code}','{$name}')";$db->Query($sql,0);//添加流程节点$arr = $_SESSION["user"];foreach($arr as $k=>$v){$sql = "insert into lc_flowpath values('','{$code}','{$v}','{$k}')";$db->Query($sql,0);}break;case 3: //用户发起流程$code = $_POST["code"];$nr = $_POST["content"];$uid = $_SESSION["uid"];$time = date("Y-m-d H:i:s");$sql = "insert into lc_userflow values('','{$code}','{$uid}','{$nr}',0,'{$time}',0)";$db->Query($sql,0);break;}
登录后复制

完成的效果,如图:

8591158a174dcf792a54ea903da2e4e.png

点击选择节点人员可以从数据库调所有人员名单,现在把李四,马七和张三放入流程中,做一个请假流程:

095664fea6aee238473a4e4aef50eab.png

点击保存,存到数据库:

b36fa43c9b2b42df331d951e0489cbb.png

49412b1d9b7e6b1ba8874420537fc0a.png

注意:Code必须用varchar,不能用time,因为在上面用了时间戳

现在我们在做一个登陆用户,提交请假流程的所有步骤:

weilogin.php 一个伪账户

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><?phpsession_start();$_SESSION["uid"] = "zhangsan";?></body></html>
登录后复制

faqi.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><br /><script src="../dist/js/jquery-1.11.2.min.js"></script></head><body><h1>发起流程</h1><div>请选择发起的流程:<select id="liucheng"><?phpsession_start();include("../fengzhuang/DBDA.class.php");$db = new DBDA();$sql = "select * from lc_liucheng";$arr = $db->Query($sql);foreach($arr as $v){echo "<option value='{$v[0]}'>{$v[1]}</option>";}?></select></div><br /><div>请输入内容:<textarea id="nr"></textarea></div><br /><input type="button" value="发起" id="btn" /></body><script type="text/javascript">$("#btn").click(function(){var code = $("#liucheng").val();var content = $("#nr").val();$.ajax({url:"chuli.php",data:{code:code,content:content,type:3},type:"POST",dataType:"TEXT",success: function(data){alert("发起成功!");}});})</script></html>
登录后复制

shenhe.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><h1>审核页面</h1><table width="100%" border="1" cellpadding="0" cellspacing="0"><tr><td>流程代号</td><td>发起者</td><td>发起内容</td><td>是否结束</td><td>发起时间</td><td>操作</td> </tr><?phpsession_start();include("../fengzhuang/DBDA.class.php");$db = new DBDA();$uid = $_SESSION["uid"];echo $uid;//查找登录者参与的所有流程$sql = "select * from lc_userflow where code in(select code from lc_flowpath where uids='{$uid}')";$arr = $db->Query($sql);//显示foreach($arr as $v){//判断该流程走到登录者$lcdh = $v[1]; //流程代号$towhere = $v[6];//流程走到哪$sql = "select orders from lc_flowpath where code='{$lcdh}' and uids='{$uid}'";$order = $db->StrQuery($sql);//该人员在流程中的次序if($towhere>=$order){$caozuo = "";if($towhere==$order){$caozuo="<a href='tongguo.php?code={$v[0]}'>通过</a>";}else{$caozuo="<span style='background-color:green;color:white'>已通过</span>";}echo "<tr><td>{$v[1]}</td><td>{$v[2]}</td><td>{$v[3]}</td><td>{$v[4]}</td><td>{$v[5]}</td><td>{$caozuo}</td> </tr>";}}?></table></body></html>
登录后复制

tongguo.php

<?phpsession_start();include("../fengzhuang/DBDA.class.php");$db = new DBDA();//流程往下走$code = $_GET["code"];$sql = "update lc_userflow set towhere=towhere+1 where ids='{$code}'";$db->Query($sql,0);//判断流程是否结束$sql = "select * from lc_userflow where ids='{$code}'";$arr = $db->Query($sql);$lcdh = $arr[0][1]; //流程代号$tw = $arr[0][6]; //流程走到哪$sql = "select count(*) from lc_flowpath where code='{$lcdh}'";$count = $db->StrQuery($sql); //该流程节点人数if($tw>=$count){$sql = "update lc_userflow set isok=1 where ids='{$code}'";$db->Query($sql,0);}header("location:shenhe.php");
登录后复制

1aa94c4945dc822fcd98d43a1ae34e3.png

张三发个请假流程,

c32b46ec5914e2a832bf6e59e8fea10.png

李四的页面:

8eb19cfec8765f7679241183d56a664.png

点击通过后

6fcaee84b50456156f66c61d19c3d3e.png

数据库:towhere变成1了

df6e43e581c7485067fbe956bc022cc.png

接着该马七:

5421dec468364c248191173db6f6c99.png

然后是张三:

3d1f0ee96e242e97757ea4eee033ad6.png

数据库:isok变成1了

792d12a46aaf96e780f5b11030f9487.png

相关学习推荐:PHP编程从入门到精通

以上就是php如何实现流程管理?的详细内容,更多请关注php中文网其它相关文章!

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}