说明:首先新建一个流程,把处理流程的节点人员添加进去,最后点确定提交至数据库

处理流程:不同用户登录进去处理自己的节点部分对其审核通过

新建两个流程:

第一个为借款流程:处理顺序为:李四发起=>张三=>再见孙悟空

第二个为请假流程:处理顺序为:李四发起=>张三

效果为

lisi先进行处理

zhangsan处理完之后

zaijian处理完之后

数据库:

test.php

<?php
session_start();
?>
<!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="../jquery-1.11.2.min.js"></script>
</head> <body>
<h1>新建流程</h1>
<div>输入流程名:
<input type="text" id="liucheng"/>
</div><br /> <div>请选择节点人员:</div><br />
<div>
<?php
include("../mydbda.php");
$db = new mydbda();
$sqlj = "select * from Users";
$strj = $db->Select($sqlj,"CX","mydb");
$hangj = explode("|",$strj);
for($i=0;$i<count($hangj);$i++)
{
list($uid,$pwd,$name) = explode("^",$hangj[$i]);
echo "<input type='radio' value='{$uid}' class='ry' name='ry'/>{$name}&nbsp;";
}
?>
</div><br />
<input type="button" value="添加节点" id="sure" />
<br /><br />
<div id="biao">
<?php
if(isset($_SESSION["liucheng"]))
{
$attr = $_SESSION["liucheng"]; for($i=0;$i<count($attr);$i++)
{
$sqlu = "select Name from Users where Uid = '".$attr[$i]."'";
$stru = $db->Select($sqlu,"CX","mydb");
echo "<div class='jd' bs='".$attr[$i]."'>{$i}.{$stru}--<input type='button' class='delete' bs='".$i."' value='删除'/></div>";
}
}
else
{
echo "当前流程节点为空!";
}
?>
</div><br />
<input type="button" value="确定" id="add" />
<br /> </body><br />
<script type="text/javascript">
$(document).ready(function(e) { //添加节点
$("#sure").click(function(){
var user = $(".ry");
for(var i=0; i<user.length;i++)
{
if(user.eq(i)[0].checked == true)
{
var uid = user.eq(i).val(); $.ajax({ url:"chulilc.php",
data:{uid:uid},
type:"POST",
dataType:"TEXT",
success: function(data){
window.location = "test.php";//让页面刷新一下是为了调上面的php代码
} });
}
} }) //删除节点
$(".delete").click(function(){ var ids = $(this).attr("bs"); $.ajax({ url:"chulisc.php",
data:{ids:ids},
type:"POST",
dataType:"TEXT",
success: function(data){
window.location = "test.php";
} }); }) //添加流程
$("#add").click(function(){ var name = $("#liucheng").val(); $.ajax({ url:"add.php",
data:{name:name},
type:"POST",
dataType:"TEXT",
success: function(data){
if(data=="OK")
{
alert("添加成功!");
}
else
{
alert("添加失败!");
} } }); }) });
</script>
</html>

chulilc.php

<?php
session_start(); $uid = $_POST["uid"]; //isset判断有没有被附上值
if(isset($_SESSION["liucheng"]))
{
//当第二次运行之后
$shuzu = $_SESSION["liucheng"];
array_push($shuzu,$uid);
$_SESSION["liucheng"] = $shuzu;
}
else
{
//没有值的时候(第一次运行的时候)
//新建数组
$shuzu = array(); //往数组末尾添加数据
array_push($shuzu,$uid); //定义session liucheng
$_SESSION["liucheng"] = $shuzu;
} ?>

chulisc.php

<?php
session_start(); $ids = $_POST["ids"]; $shuzu = $_SESSION["liucheng"];
unset($shuzu[$ids]); //删除元素
$shuzu = array_values($shuzu); //重新索引
$_SESSION["liucheng"] = $shuzu; ?>

add.php

<?php
session_start(); include("../mydbda.php"); $db = new mydbda(); $name = $_POST["name"]; $code = date("YmdHisms",time()); $sqll = "insert into LiuCheng values('{$code}','{$name}')";
$db->Select($sqll,"QT","mydb"); $attr = $_SESSION["liucheng"]; for($i=0;$i<count($attr);$i++)
{
$sqlj = "insert into FlowPath values('','{$code}','{$attr[$i]}','{$i}')";
$db->Select($sqlj,"QT","mydb");
}
echo "OK";

denglu.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>
<form action="dlchuli.php" method="post">
<div>用户名:<input type="text" name="uid"/></div>
<div>密码:<input type="text" name="pwd"/></div>
<input type="submit" value="登录" />
</form>
</body>
</html>

dlchuli.php

<?php
session_start();
include("../mydbda.php");
$db = new mydbda(); $uid = $_POST["uid"];
$pwd = $_POST["pwd"]; $sql = "select count(*) from Users where Uid = '{$uid}' and Pwd = '{$pwd}'";
$str = $db->Select($sql,"CX","mydb"); if($str == "1")
{
$_SESSION["uid"] = $uid;
header("Location:faqi.php");
}
else
{
header("Location:denglu.php");
}

faqi.php

<?php
session_start();
?>
<!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="../jquery-1.11.2.min.js"></script>
</head> <body>
<h1>发起流程</h1>
<div>请选择流程:
<select id="lc">
<?php include("../mydbda.php");
$db = new mydbda(); $sql = "select * from LiuCheng";
$str = $db->Select($sql,"CX","mydb");
$hang = explode("|",$str);
for($i=0;$i<count($hang);$i++)
{
list($code,$name) = explode("^",$hang[$i]); echo "<option value='{$code}'>{$name}</option>";
} ?>
</select>
</div>
<br />
<div>
<div>请输入流程内容:</div><br />
<div>
<textarea id="nr" style="width:400px; height:250px"></textarea>
</div>
</div>
<br />
<input type="button" value="确定" id="btn"/>
<a href="chuliliucheng.php">处理</a>
</body>
<script type="text/javascript">
$(document).ready(function(e) {
$("#btn").click(function(){ var code = $("#lc").val();
var nr = $("#nr").val(); $.ajax({ url:"faqichuli.php",
data:{code:code,nr:nr},
type:"POST",
dataType:"TEXT",
success: function(data){ if(data == "OK")
{
alert("发起成功!");
}
else
{
alert("发起失败!");
} } }); })
});
</script>
</html>

faqichuli.php

<?php
session_start(); include("../mydbda.php");
$db = new mydbda(); $code = $_POST["code"];
$nr = $_POST["nr"]; $uid = $_SESSION["uid"];
$riqi = date("Y-m-d H:i:s",time()); $sql = "insert into UserFlow values('','{$code}','{$uid}','{$nr}',false,'{$riqi}',0)";
$str = $db->Select($sql,"QT","mydb");
echo $str;

chuliliucheng.php

<?php
session_start();
?>
<!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> <?php
$uid = $_SESSION["uid"]; include("../mydbda.php");
$db = new mydbda(); $sql = "select * from UserFlow"; $str = $db->Select($sql,"CX","mydb"); $hang = explode("|",$str);
for($i=0;$i<count($hang);$i++)
{
list($ids,$code,$uids,$nr,$isok,$riqi,$towhere) = explode("^",$hang[$i]); $sqlj = "select * from FlowPath where Code = '{$code}'";
$strj = $db->Select($sqlj,"CX","mydb");
$hangj = explode("|",$strj);
$bs = false;
$bscl = false;
for($j=0;$j<count($hangj);$j++)
{
list($idsj,$codej,$uidj,$orderj) = explode("^",$hangj[$j]); //判断登陆用户名是否等于节点,即要不要处理这个节点;并判断节点是否走到他
if(($uidj == $uid) and ($orderj <= $towhere))
{ $bs= true;
}
if(($uidj == $uid) and ($orderj == $towhere))
{ $bscl= true;
}
} //处理流程名
$sqllc = "select Name from LiuCheng where Code = '{$code}'";
$lcname = $db->Select($sqllc,"CX","mydb");
//处理发起者名
$sqlfq = "select Name from Users where Uid = '{$uids}'";
$fqname = $db->Select($sqlfq,"CX","mydb");
//处理是否结束
$jieshu = $isok?"<span style='background-color:green'>已结束</span>":"<span style='background-color:red'>进行中</span>";
//处理操作
$caozuo = $bscl?"<a href='tongguo.php?code=".$ids."'>通过</a>":"<span style='background-color:gray'>已通过</span>";
if($bs)
{
echo "<tr><td>{$lcname}</td><td>{$fqname}</td><td>{$nr}</td><td>{$jieshu}</td><td>{$riqi}</td><td>{$caozuo}</td></tr>";
}
}
?> </table>
</body>
</html>

tongguo.php

<?php
include("../mydbda.php");
$db = new mydbda(); $code = $_GET["code"];
//通过,流程指向下一个人
$sql = "update UserFlow set ToWhere = ToWhere+1 where Ids = '{$code}' "; $db->Select($sql,"QT","mydb");
//查询流程走到哪了
$sqlt = "select Code,ToWhere from UserFlow where Ids = '{$code}'";
$strtw = $db->Select($sqlt,"CX","mydb");
list($lccode,$tw) = explode("^",$strtw);
//查询该流程下节点数量
$sqlf = "select count(*) from FlowPath where Code = '{$lccode}'";
$zs = $db->Select($sqlf,"CX","mydb");
//判断是否走完流程
if($tw >= $zs)
{
$sqlx = "update UserFlow set IsOk = true where Ids = '{$code}' "; $db->Select($sqlx,"QT","mydb");
} header("Location:chuliliucheng.php");

PHP——小尾巴之流程处理的更多相关文章

  1. 微信小程序开发流程

    2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线,一夜之间,小程序可谓家喻户晓,但通过接下来的几个月的观察,微信小程序并没有想象中的那么火爆.进入4月以来,微信小程序团队进行 ...

  2. 微信小程序登录流程

    小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...

  3. thinkphp开发微信小程序后台流程

    thinkphp开发微信小程序后台流程,简单分享一下微信开发流程 1,注册微信小程序账号 2,注册好后,登陆微信小程序,下载微信小程序开发工具 3,用thinkphp开发企业后台,前台数据用json返 ...

  4. 在网站copy时自带的版权小尾巴以及“复制代码“,可以怎么实现

    前言 每天网上的博客各个领域都会涌现新文章,有时候看到感兴趣的知识就想把某段文字 copy下来 摘录下来,等有时间后慢慢品味 在部分网站上,如果只是复制少量文字,并没有什么不同.但是当我们复制的文字多 ...

  5. 微信小程序登录流程及解析用户openid session_key,获取用户信息

    为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持.从2018年4月30日开始,小程序与小游戏的体验版.开发版调用 wx.getUserInfo 接口,将无 ...

  6. 商业版微信小程序开发流程

    一.产品阶段 ①功能规划思维导图——产品经理了解清楚整个项目需求,产出清晰明确的功能需求说明. ②需求报价预算——产品经理确定好功能需求后,输出整个项目开发的报价方案. ③组建技术开发团队——初步确认 ...

  7. 微信小程序--登录流程梳理

    前言 微信小程序凡是需要记录用户信息都需要登录,但是也有几种不同的登录方式,但是在小程序部分的登录流程是一样的.之前就朦朦胧胧地用之前项目的逻辑改改直接用了,这个新项目要用就又结合官方文档重新梳理了下 ...

  8. 微信小程序注册流程

    响应公司号召,跟上时代潮流,接下来我将独自开发微信小程序,接下来我介绍下注册流程,后续会补上小程序开发心得. 注册流程 注册之前,需要使用一个邮箱,该邮箱作为登录小程序的账号,这个邮箱不能被微信开放平 ...

  9. 详解微信小程序支付流程

    转发博主 https://blog.csdn.net/qq_38378384/article/details/80882980 花了几天把小程序的支付模块接口写了一下,可能有着公众号开发的一点经验,没 ...

随机推荐

  1. Android 自己主动化測试(3)&lt;monkeyrunner&gt; 依据ID查找对象&amp;touch&amp;type (python)

    我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...

  2. vue - 子路由-路由嵌套

    描述:子路由,也叫路由嵌套,采用在children后跟路由数组来实现,数组里和其他配置路由基本相同,需要配置path和component,然后在相应部分添加<router-view/>来展 ...

  3. FLV视频播放:对未缓冲进度条实现拖动

    FLV视频播放:对未缓冲进度条实现拖动  流媒体开发 Add comments 八282010 一.文件准备 1.转码:ffmpeg 2.添加元数据:yamdi 二.网页播放器:jw player 使 ...

  4. windows程序崩溃生成dump文件

    第一种: 通过任务管理器:这种适用在程序挂了(crash)的时候进程还未退出,比如我运行程序,出现了下面的错: 此时打开任务管理器,右击相应进程,点击"Create Dump File“: ...

  5. 查看sqlserver 2008中性能低下的语句

    经常使用这个语句来查看性能低下的sql语句: SELECT creation_time N'语句编译时间' ,last_execution_time N'上次执行时间' ,total_physical ...

  6. oracle 查询本周数据生成下周数据

      CreateTime--2018年1月4日16:38:01 Author:Marydon oracle 查询本周数据生成下周数据 第一步:查询指定区间数据 第二步:改变查询结果的值 查询日期字段+ ...

  7. 比较全的log4j示例

    <?xml version="1.0" encoding="UTF-8"?> <configuration status="off& ...

  8. (三)hibernate单表操作

    0. 贴上节hbm文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hib ...

  9. C#:(问题)已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭

    解决方法如下:1.不同的reader对象不要共用一个Connection对象.2.不要在while代码段内执行reader.Close();语句.否则继续执行while代码段内语句会报“阅读器关闭时尝 ...

  10. Android Design与Holo Theme详解

    在 国内,有个很有意思的现状.一方面,几个国内最大的公司/企业的客户端/应用依旧冥顽不灵,丝毫不愿意遵循 Android Design,以各种扯淡的理由坚持使用 iOS UI 或者 Metro UI, ...