PHP——小尾巴之流程处理
说明:首先新建一个流程,把处理流程的节点人员添加进去,最后点确定提交至数据库
处理流程:不同用户登录进去处理自己的节点部分对其审核通过
新建两个流程:
第一个为借款流程:处理顺序为:李四发起=>张三=>再见孙悟空
第二个为请假流程:处理顺序为:李四发起=>张三
效果为
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} ";
}
?>
</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——小尾巴之流程处理的更多相关文章
- 微信小程序开发流程
2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线,一夜之间,小程序可谓家喻户晓,但通过接下来的几个月的观察,微信小程序并没有想象中的那么火爆.进入4月以来,微信小程序团队进行 ...
- 微信小程序登录流程
小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...
- thinkphp开发微信小程序后台流程
thinkphp开发微信小程序后台流程,简单分享一下微信开发流程 1,注册微信小程序账号 2,注册好后,登陆微信小程序,下载微信小程序开发工具 3,用thinkphp开发企业后台,前台数据用json返 ...
- 在网站copy时自带的版权小尾巴以及“复制代码“,可以怎么实现
前言 每天网上的博客各个领域都会涌现新文章,有时候看到感兴趣的知识就想把某段文字 copy下来 摘录下来,等有时间后慢慢品味 在部分网站上,如果只是复制少量文字,并没有什么不同.但是当我们复制的文字多 ...
- 微信小程序登录流程及解析用户openid session_key,获取用户信息
为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持.从2018年4月30日开始,小程序与小游戏的体验版.开发版调用 wx.getUserInfo 接口,将无 ...
- 商业版微信小程序开发流程
一.产品阶段 ①功能规划思维导图——产品经理了解清楚整个项目需求,产出清晰明确的功能需求说明. ②需求报价预算——产品经理确定好功能需求后,输出整个项目开发的报价方案. ③组建技术开发团队——初步确认 ...
- 微信小程序--登录流程梳理
前言 微信小程序凡是需要记录用户信息都需要登录,但是也有几种不同的登录方式,但是在小程序部分的登录流程是一样的.之前就朦朦胧胧地用之前项目的逻辑改改直接用了,这个新项目要用就又结合官方文档重新梳理了下 ...
- 微信小程序注册流程
响应公司号召,跟上时代潮流,接下来我将独自开发微信小程序,接下来我介绍下注册流程,后续会补上小程序开发心得. 注册流程 注册之前,需要使用一个邮箱,该邮箱作为登录小程序的账号,这个邮箱不能被微信开放平 ...
- 详解微信小程序支付流程
转发博主 https://blog.csdn.net/qq_38378384/article/details/80882980 花了几天把小程序的支付模块接口写了一下,可能有着公众号开发的一点经验,没 ...
随机推荐
- es5 - array - reverse
/** * 描述:也就是数组元素反转 * 使用:arr.reverse() */ var a = [1,2,3]; console.log(a.reverse()); /** * 一个经典的问题:如何 ...
- Android APP安装后不在桌面显示图标的应用场景
一般情况下是由于特殊情况下,需要隐藏app的启动入口,即在launcher界面不需要显示该入口,会由其他app跳转至.怎么设置如下代码: <activity android:name=" ...
- org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'statisticalMapper' defined in file
::, [localhost-startStop-1] DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFact ...
- 转:sock_ev——linux平台socket事件框架(socket API的封装) .
把linux平台提供的有关socket操作的API进行封装是有必要的:基于stream操作的流程与基于dgram操作的流程略有不同,分别放在两个类中,但两者又有很多相似的操作,因此写一个基类,让其继承 ...
- activeMQ Jms Demo
概述 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经 ...
- laravel-v5.1数据库连接文件是.env文件
- Android 使用Post方式提交数据
在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...
- OpenSAML2.X 在SSO系统中的应用
背景 年底的时候有机会开发一个SPA(单页面应用)的项目,那时候须要用到票据的方式能够用Cookie的方式来登录.当是想到了OpenID或者是CAS的方式来做统一认证中心.后来一个安全界的大牛推荐让我 ...
- EF性能
批量操作时,加上这句:Context.Configuration.AutoDetectChangesEnabled = false; 主要是取消跟踪,缩短对象添加到上下文的时间(非执行SQL的时间)
- 为什么会找不到D层文件?
近期两天在重装系统,今天好不easy把各种东西都装齐全了,再打开我的机房收费系统,就提演示样例如以下错误: 看到这个问题.我感觉非常熟,由于曾经也遇到过两次这个问题,都是改了下D层的编译路径.改到了U ...