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

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

新建两个流程:

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

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

效果为

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. Ubuntu 16.04 LTS软件包管理基本操作

    前文 Ubuntu 16.04 新特性中我们已经介绍过,随着 Ubuntu 16.04 LTS 的发布,Ubuntu 的软件包管理命令也发生了变化,新系统采用了 Debian 项目中所使用的 APT( ...

  2. 机器学习-特征选择 Feature Selection 研究报告

    原文:http://www.cnblogs.com/xbinworld/archive/2012/11/27/2791504.html 机器学习-特征选择 Feature Selection 研究报告 ...

  3. mysql更新日志问题

    [root@localhost ~]# /etc/init.d/mysqld restart 停止 mysqld: [确定] 正在启动 mysqld: [确定] 故障:今天在维护以前数据库日志的时候, ...

  4. swift 音乐播放器项目-《lxy的杰伦情歌》开发实战演练

    近期准备将项目转化为OC与swift混合开发.试着写一个swift音乐播放器的demo,体会到了swift相对OC的优势所在.废话不多说.先上效果图: watermark/2/text/aHR0cDo ...

  5. 转换到 StoryBoard 的公布说明(Converting to Storyboards Release Notes)

    转换到 StoryBoard 的公布说明(Converting to Storyboards Release Notes) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl ...

  6. Eclipse自动编译NDK/JNI的三种方法

    一.Eclipse关联cygwin 1. 工程->右击选择Properties->选择Builders,在Builders中选择New创建一个Program 2. 参数配置 二.Eclip ...

  7. WCF学习笔记之并发与限流

    最近一直在学习WCF相关知识:本文章将针对并发与限流知识进行一个梳理,由于很多理论的知识所以做一个简单的记录,为今后回顾做一个记录: 一:并发知识 WCF将服务实例封装在一个称为实例上下文的对象中,并 ...

  8. Python list删除元素

    pop()方法 pop(n) 从list删除元素Paul同学刚来几天又要转走了,那么我们怎么把Paul 从现有的list中删除呢?如果Paul同学排在最后一个,我们可以用list的pop()方法删除: ...

  9. OSI模型图文说明

    网关工作在第四层传输层及其以上 网络层:路由器 数据链路层:网桥,交换机 物理层:网卡,网线,集线器,中继器,调制解调器 OSI共7层:应用层,表示层,会话层,传输层,数据链路层,物理层. [7]:应 ...

  10. Mysql InnoDB锁

    MySQL 不同引擎的锁机制: MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁 InnoD ...