php……流程
流程:由两个及以上的业务步骤,完成一个完整的业务行为的过程,可称之为流程;注意是两个及以上的业务步骤。事物进行过程中的次序或顺序的布置和安排。
创建页面:
- 登录页面(login.php):
<h1>登录</h1>
<form action="loginchuli.php" method="post">
<div>用户名:<input type="text" name="uid" /></div><br /> <div>密码: <input type="password" name="pwd" /></div><br /> <input type="submit" value="登录" />
</form>

- 登录处理页面(loginchuli.php):
<?php
session_start();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"]; include("../DB.class.php");
$db = new DB(); $sql = "select count(*) from Users where Uid='{$uid}' and Pwd = '{$pwd}'"; $z = $db->StrQuery($sql); if($z == 1)
{
$_SESSION["uid"] = $uid;
header("location:main.php");
}
else
{
header("location:login.php");
}
- 主页面(main.php):
<style type="text/css">
*{ margin:0 auto; padding:0}
#menu{ width:600px; height:50px; line-height:50px; text-align:center; color:#FFF;}
.z{ height:50px; line-height:50px; text-align:center; float:left; margin-right:50px;}
.t{height:50px; line-height:50px; text-align:center; float:right;}
a:link,a:visited{ color:#03C;}
a:hover{ background-color:#930; color:#FFF;}
a:active{ background-color:#900; } </style>
</head> <body>
<?php
session_start();
if(empty($_SESSION["uid"]))
{
header("location:login.php");
}
?><br />
<center><h1>主页面</h1></center><br />
<div id="menu">
<div class="z"><a href="xinjian.php">新建流程</a></div>
<div class="z"><a href="faqi.php">发起流程</a></div>
<div class="z"><a href="shenhe.php">审核流程</a></div>
<div class="t"><a href="tuichu.php">退出系统</a></div> </div>

- 新建流程页面(xinjian.php):
<script src="../jquery-1.11.2.min.js"></script>
</head> <body>
<?php
session_start();
include("../DB.class.php");
$db = new DB();
$attr = array();
if(!empty($_SESSION["jiedian"]))
{
$attr = $_SESSION["jiedian"];
}
?>
<h1>新建流程</h1>
<div>
请选择节点人员:<br /><br />
<?php
$sry = "select * from Users";
$ary = $db->Query($sry);
foreach($ary as $v)
{
echo "<input type='radio' class='ry' name='ry' value='{$v[0]}'/>{$v[2]}";
}
?>
</div>
<br />
<div>
<input type="button" value="添加节点" id="tjjd" />
</div>
<br />
<div>
<?php
//循环遍历数组key与value值
foreach($attr as $k=>$v)
{
//根据用户名找到Name
$sname = "select Name from Users where Uid = '{$v}'";
$name = $db->StrQuery($sname);
echo "<div>{$k}--{$name}--<input type='button' value='删除' class='sc' bs='{$k}' /></div>";//将数组索引存入自定义属性bs中
}
?>
</div>
<br />
<div>
请输入流程名称:
<input type="text" id="mc" />
</div><br />
<div>
<input type="button" value="添加流程" id="tjlc" />
</div><br />
<a href="main.php">返回主页面</a>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) {
//页面加载完成之后,设置显示默认选中第一项
$(".ry").eq(0).prop("checked",true);
//添加节点按钮点击事件
$("#tjjd").click(function(){
//取选中的用户名
var ry = $(".ry");
var uid ="";
for(var i=0;i<ry.length;i++)
{
if(ry.eq(i).prop("checked"))
{
//如果选中,将其value值存入变量uid中
uid = ry.eq(i).val();
}
} $.ajax({ url:"tjjd.php",
data:{uid:uid},
type:"POST",
dataType:"TEXT",
success: function(data){ window.location = "xinjian.php";
}
}); }) //删除节点按钮点击事件
$(".sc").click(function(){
//获取属性bs的值,即数组$attr的索引值
var id = $(this).attr("bs"); $.ajax({ url:"scjd.php",
data:{id:id},
type:"POST",
dataType:"TEXT",
success: function(data){ window.location = "xinjian.php";
}
});
}) //添加按钮点击事件
$("#tjlc").click(function(){
//取出输入的流程名称
var name = $("#mc").val();
$.ajax({ url:"tjlc.php",
data:{name:name},
type:"POST",
dataType:"TEXT",
success: function(data){
//alert(data);
if(data.trim()=="OK")
{
window.location="xinjian.php";
}
else
{
alert("添加失败!");
}
}
}); }) }); </script>

- 添加节点页面(tjjd.php):
<?php
session_start(); $uid = $_POST["uid"];
//判断是否是第一次点击
if(empty($_SESSION["jiedian"]))
{
//第一次点击,新建一个数组,存入session
$attr = array($uid);
$_SESSION["jiedian"] = $attr;
}
else
{
//第n次点击,n!=1,直接取出数组追加一个传过来的值,存入session
$attr = $_SESSION["jiedian"];
array_push($attr,$uid);
$_SESSION["jiedian"]= $attr;
}

- 删除节点页面(scjd.php):
<?php
session_start(); $id = $_POST["id"];
$attr = $_SESSION["jiedian"];
//删除数组中的某一个元素
unset($attr[$id]);
//重新索引数组
$attr = array_values($attr);
//将新数组存入session
$_SESSION["jiedian"] = $attr;

- 添加流程页面(tjlc.php):
<?php
session_start();
include("../DB.class.php");
$db = new DB();
$attr = array();
if(!empty($_SESSION["jiedian"]))
{
$attr = $_SESSION["jiedian"];
}
$name = $_POST["name"];
//向流程表中添加数据
$code = date("YmdHisms");
$slc = "insert into LiuCheng values('{$code}','{$name}')";
//echo $slc;
//判断是否执行成功的变量
$isok = true;
if($db->Query($slc,1))
{
foreach($attr as $k=>$v)
{
$sfl = "insert into FlowPath values('','{$code}','{$v}',{$k})";
$isok = $isok && ($db->Query($sfl,1));
}
}
if($isok)
{
unset($_SESSION["jiedian"]);
echo "OK";
}
else
{
echo "NO";
}
- 发起流程页面(faqi.php):
<script src="../jquery-1.11.2.min.js"></script>
</head> <body>
<?php
session_start();
if(empty($_SESSION["uid"]))
{
header("location:login.php");
}
include("../DB.class.php");
$db = new DB();
?>
<h1>发起流程</h1>
<div>
请选择流程:
<select id="lc">
<?php
$sql = "select * from LiuCheng";
$attr = $db->Query($sql);
foreach($attr as $v)
{
echo "<option value='{$v[0]}'>{$v[1]}</option>";
}
?>
</select>
</div><br />
<div>
请选择内容:
<textarea class="nr"></textarea>
</div>
<br />
<div>
<input type="button" value="发起流程" id="faqi" />
</div><br />
<a href="main.php">返回主页面</a>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) {
$("#faqi").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.trim()=="OK")
{
alert("发起成功!");
}
else
{
alert("发起失败!");
}
}
});
}) }); </script>

- 发起流程处理页面(faqichuli.php):
<?php
session_start();
include("../DB.class.php");
$db = new DB();
$code = $_POST["code"];
$nr = $_POST["nr"];
$uid = $_SESSION["uid"];
$riqi = date("Y-m-d H:i:s");
$isok = true?"<span style='color:green'>已完成</span>":"<span style='color:red'>未完成</span>"; $sql = "insert into UserFlow values('','{$code}','{$uid}','{$nr}',false,'{$riqi}',0)"; if($db->Query($sql,1))
{
echo "OK";
}
else
{
echo "NO";
}
- 审核流程页面(shenhe.php):
<h1>审核流程</h1>
<?php
session_start();
include("../DB.class.php");
$db = new DB();
if(empty($_SESSION["uid"]))
{
header("location:login.php");
}
$uid = $_SESSION["uid"];
?>
<table width="1000" border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#FFCC66" style="color:#930">
<td>流程名称</td>
<td>发起者</td>
<td>流程内容</td>
<td>是否结束</td>
<td>发起时间</td>
<td>操作</td>
</tr> <?php $suf = "select * from UserFlow order by RiQi desc";
$auf = $db->Query($suf);
foreach($auf as $v)
{
//根据流程代号到flowpath表查询登陆者在流程中的次序
$sfp = "select Code,Orders from FlowPath where Code = '{$v[1]}' and Uids = '{$uid}'";
$cx = $db->Query($sfp);
if($cx)
{
$ucode = $cx[0][0]; //流程代号
$ucx = $cx[0][1]; //次序
//判断该流程是否走到了该用户
if($v[1]==$ucode && ($v[6]>=$ucx))
{
$lname = Lname($db,$v[1]);
$fname = Fname($db,$v[2]);
//处理是否结束
$isok = $v[4]?"<span style='background-color:red'>已结束</span>":"<span style='background-color:green'>处理中</span>";
//处理操作
$chuli = "";
if($v[6]==$ucx)
{
$chuli = "<a href='shenhechuli.php?id={$v[0]}'>审核</a>";
}
else
{
$chuli = "<span style='background-color:green'>已通过</span>";
}
echo "<tr>
<td>{$lname}</td>
<td>{$fname}</td>
<td>{$v[3]}</td>
<td>{$isok}</td>
<td>{$v[5]}</td>
<td>{$chuli}</td>
</tr>";
}
}
} //处理流程名称
function Lname($db,$code)
{
$sql = "select Name from LiuCheng where Code = '{$code}'";
return $db->StrQuery($sql);
}
//处理发起者名
function Fname($db,$uid)
{
$sql = "select Name from Users where Uid = '{$uid}'";
return $db->StrQuery($sql);
}
?>
</table><br /> <a href="main.php">返回主页面</a> <a href="tuichu.php">退出系统</a>
</body>

- 审核流程处理页面(shenhechuli.php):
<?php
include("../DB.class.php");
$db = new DB();
$id = $_GET["id"]; $sql = "update UserFlow set ToWhere = ToWhere+1 where Ids = '{$id}'"; if($db->Query($sql,1))
{
//查询流程走到哪了
$stw = "select Code,ToWhere from UserFlow where Ids = '{$id}'";
$atw = $db->Query($stw);
$code = $atw[0][0];//流程代号
$tw = $atw[0][1]; //流程到哪了
//查询该流程下的节点数
$sfp = "select count(*) from FlowPath where Code = '{$code}'";
$sl = $db->StrQuery($sfp);
//如果流程走到的位置大于等于了该流程中节点总数
if($tw>=$sl)
{
$ok = "update UserFlow set IsOk = true where Ids = '{$id}'";
$db->Query($ok,1);
} header("location:shenhe.php");
}
else
{
echo "审核失败!";
}
- 退出系统页面:
<?php
session_start();
unset($_SESSION["uid"]);
header("location:login.php");
php……流程的更多相关文章
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- 基于netty http协议栈的轻量级流程控制组件的实现
今儿个是冬至,所谓“冬大过年”,公司也应景五点钟就放大伙儿回家吃饺子喝羊肉汤了,而我本着极高的职业素养依然坚持留在公司(实则因为没饺子吃没羊肉汤喝,只能呆公司吃食堂……).趁着这一个多小时的时间,想跟 ...
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?
在<中篇>中,我们对管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.总的来说,管道由一个服务器和一个HttpApplication构成 ...
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
- 8、Struts2 运行流程分析
1.流程分析: 请求发送给 StrutsPrepareAndExecuteFilter StrutsPrepareAndExecuteFilter 询问 ActionMapper: 该请求是否是一个 ...
- Hawk 6. 高级话题:子流程系统
子流程的定义 当流程设计的越来越复杂,越来越长时,就难以进行管理了.因此,采用模块化的设计才会更加合理.本节我们介绍子流程的原理和使用. 所谓子流程,就是能先构造出一个流程,然后被其他流程调用.被调用 ...
- 流程开发Activiti 与SpringMVC整合实例
流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...
- zookeeper源码分析之五服务端(集群leader)处理请求流程
leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...
- zookeeper源码分析之四服务端(单机)处理请求流程
上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...
- zookeeper源码分析之三客户端发送请求流程
znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...
随机推荐
- 微信小程序的目录结构解剖
在微信小程序当中,我们看到有: .js后缀文件,.json后缀文件,.wxss后缀文件,.wxml后缀文件 .js后缀文件就是我们写的普通的js文件 .json后缀文件就是小程序的配置文件,比如:wi ...
- layui表格渲染中模板的使用举例
实例一: { field: 'status', align: 'center', title: '活动状态', templet: function (d) { if (d.status == &quo ...
- \sum的写法
\sum默认上下标是写在右上角和右下角的.在独立公式中,则是写在上面和下面的.对于行内公式,我们也可以强制用\limits让其上下表标出现在上面和下面.Note:\sum\nolimits的作用相当于 ...
- Consul实现原理系列文章3: Consul的整体架构
工作中用到了Consul来做服务发现,之后一段时间里,我会陆续发一些文章来讲述Consul实现原理.在前几篇文章介绍完了Consul用到的两个关键性东西Raft和Gossip之后,这篇文章会讲述Con ...
- Hibernate查询语言(HQL)
Hibernate查询语言(HQL)与SQL(结构化查询语言)相同,但不依赖于数据库表. 我们在HQL中使用类名,而不是表名. 所以是数据库独立的查询语言. HQL的优点 HQL有很多优点. 它们如下 ...
- python 爬虫实战1 爬取糗事百科段子
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 本篇目标 抓取糗事百科热门段子 过滤带有图片的段子 实现每按一次回车显示一个段子的发布时间,发布人 ...
- 通过ssh隧道访问mysql(转载)
我的机器可以连接服务器A,A可以访问服务器B上的mysql,但是我的机器不能访问B,所以我需要建立一个我本地机器到服务器A的ssh隧道来访问服务器B上的mysql. 理一下思路: 1.我要ssh的服务 ...
- poj 3189(枚举+多重匹配)
题目链接:http://poj.org/problem?id=3189 思路:由于题目要求最小的差值,而Range最多也才20,因此我们可以枚举上下限,多重匹配验证即可. http://paste.u ...
- linux以下C 利用openssl的AES库加密,解密
OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是所有支持或者是部分支持. 返回值:"aes(full)" ...
- JAVA学习第六十三课 — 关于client服务端 && URL类 & URLConnection
常见的client和服务端 client: 浏览器:IE:弹窗体,猎豹:弹窗体.多标签,争强效果 服务端: server:TomCat:1.处理请求 2.给予应答 想让TomC ...