1.建立一个添加页面,在这个页面上可以选择增加节点。
add.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" /> <script src="../jquery-1.11.2.min.js"></script> <title>无标题文档</title> </head> <body> <div>请选择流程节点:<br /><br />
<?php session_start(); include("../DBDA.class.php"); $db = new DBDA(); $suser = "select * from users"; $auser = $db->Query($suser); foreach($auser as $v) { echo "<input class='rd' type='radio' value='{$v[0]}' name='user' />{$v[2]} ";//把所有可以添加节点的人的名字列出来 } ?>
</div><br />
<div><input type="button" value="添加节点" id="jiedian" /></div>
<br /> <div>
<?php //把添加的节点显示在添加节点按钮下面 $attr = array();//把节点存在session里面,先定义一个空的数组。 if(!empty($_SESSION["user"]))//如果session不是空的 { $attr = $_SESSION["user"];//就把session存的用户名放到数组attr里面 } foreach($attr as $k=>$v)//遍历出用户名 { $sname = "select name from users where uid='{$v}'";//找出attr里面存的用户的姓名 $name = $db->StrQuery($sname); echo "<div>{$k}--{$name}--<input type='button' value='删除' bs='{$k}' class='shanchu' /></div>";//输出索引--用户名--删除。当添加错误时方便直接删除 } ?>
</div>
<br /> <div> 请输入流程名称: <input type="text" id="name" /> </div> <br /> <input type="button" value="保存" id="xinjian" /> </body>
<script type="text/javascript"> $("#jiedian").click(function(){ //取选中的应户名 var uid=""; var rd = $(".rd");//找到class为rd的 for(var i=0;i<rd.length;i++)//把class为rd的全部遍历出来 { if(rd.eq(i).prop("checked"))//如果是选中状态 { uid = rd.eq(i).val();//取出选中的属性值,也就是取出bs值。 } } $.ajax({ url:"chuli.php", data:{uid:uid,type:0},//传的type是为了一个页面处理多个ajax时区分处理的哪一个ajax的。 type:"POST", dataType:"TEXT", success: function(data){ window.location.href="add.php"; } }) }) $(".shanchu").click(function(){//给class为shanchu的添加删除事件 var sy = $(this).attr("bs"); $.ajax({ url:"chuli.php", data:{sy:sy,type:1},//传的type是为了一个页面处理多个ajax时区分处理的哪一个ajax的。 type:"POST", dataType:"TEXT", success: function(data){ window.location.href="add.php"; } }) }) $("#xinjian").click(function(){ var name = $("#name").val() $.ajax({ url:"chuli.php", data:{name:name,type:2},//传的type是为了一个页面处理多个ajax时区分处理的哪一个ajax的。 type:"POST", dataType:"TEXT", success: function(data){ window.location.href="add.php"; } }) }) </script>
</html>
2.处理页面。所有的处理页面全部在这个页面处理,用switch写。
chuli.php
<?php //所有的ajax都调用同一个处理页面,要知道是谁调的,在传值时除了需要传必要的值,还要调另一个值type session_start(); include("../DBDA.class.php"); $db = new DBDA(); $type = $_POST["type"];//取出ajax里面的type值 $uid = $_POST["uid"]; switch($type) { case 0://如果type是0,执行下面代码。注意这里是冒号 $uid = $_POST["uid"]; if(empty($_SESSION["user"]))//如果是第一次点击,session里面是空的。 { $_SESSION["user"] = array($uid);//把取到的uid存到session里面。 } else//如果session里面已经有内容 { $attr = $_SESSION["user"];//先把session里面的内容取出来 $attr[] = $uid;//把新取到的uid存到attr里面 $_SESSION["user"] = $attr;//再把新的数组存到session里面 } break; case 1://当type=1时,执行的是删除事件 $sy = $_POST["sy"];//取出class为shanchu的项的索引值。 $attr = $_SESSION["user"];//取出session里面存储的数据。 unset($attr[$sy]);//删除目标索引的项 $attr = array_values($attr);//重新索引一遍attr $_SESSION["user"] = $attr; break; case 2://当type=2时,执行的是删除事件 $name = $_POST["name"];//取出neme值。 $code = time();//取时间戳 $slc = "insert into liucheng values('{$code}','{$name}')";//往liucheng表格里添加数据 $db->Query($slc,0); $attr = array(); if(!empty($_SESSION["user"])) { $attr = $_SESSION["user"]; } foreach($attr as $k=>$v) { $sfp = "insert into flowpath values('','{$code}','{$v}','{$k}')";//往flowpath表里面添加数据 $db->Query($sfp,0); } break; case 3://填充userflow表 $code = $_POST["code"]; $nr = $_POST["nr"]; $uid = $_SESSION["uid"]; $rq = time(); $sql = "insert into userflow values('','{$code}','{$uid}','{$nr}',0,'{$rq}',0)"; $db->Query($sql,0); break; }
?>
3.登录页面
login.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> <form action="loginchuli.php" method="post"> <div><input type="text" name="uid" /></div> <div><input type="text" name="pwd" /></div> <div><input type="submit" value="登录" /></div> </form> </body> </html>
4.登录处理页面
loginchuli.php
<?php session_start(); include("../DBDA.class.php"); $db = new DBDA(); $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; $sql = "select pwd from users where uid='{$uid}'"; $mm = $db->StrQuery($sql); if($mm == $pwd && $pwd!="") { $_SESSION["uid"] = $uid; header("location:main.php"); } else { echo "登录失败"; }
?>
5.主页面
main.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> <a href="faqi.php">发起流程</a> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>发起者</td> <td>发起时间</td> <td>流程名称</td> <td>流程内容</td> <td>是否结束</td> <td>操作</td> </tr>
<?php session_start(); include("../DBDA.class.php"); $db = new DBDA(); $uid = $_SESSION["uid"]; $sql = "select * from userflow"; $attr = $db->Query($sql); foreach($attr as $v) { $v[1];//流程代号 $v[6];//流程走到哪了 //根据流程代号和当前登陆者用户名查orders $szai = "select count(*) from flowpath where code='{$v[1]}' and uids='{$uid}'"; $n = $db->StrQuery($szai); //该人员在该流程下 if($n>0) { $sorder = "select orders from flowpath where code='{$v[1]}' and uids='{$uid}'"; $order = $db->StrQuery($sorder); if($v[6]>=$order)//判断该人员的流程和已经走到的流程 { $str = ""; if($v[6]==$order)//如果流程走到登陆者的流程 { $str = "<a href='tongguo.php?ids={$v[0]}'>通过</a>";//做一个通过按钮,点击通过表示该登陆者已经同意。 } else//如果流程已经大于登录者的流程,就显示已通过。 { $str = "<span style='color:green'>已通过</span>"; } echo "<tr><td>{$v[2]}</td> <td>{$v[5]}</td> <td>{$v[1]}</td> <td>{$v[3]}</td> <td>{$v[4]}</td> <td>{$str}</td> </tr>"; } } } ?>
</table>
</body> </html>
6.发起流程页面
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" /> <script src="../jquery-1.11.2.min.js"></script> <title>无标题文档</title> </head> <body> <h1>发起流程</h1> <div> 请选择要发起的流程: <select id="sel">
<?php include("../DBDA.class.php"); $db = new DBDA(); $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 id="xq"></textarea> </div> <br /> <input type="button" value="发起" id="btn" /> </body>
<script type="text/javascript"> $("#btn").click(function(){ var code = $("#sel").val(); var nr = $("#xq").val(); $.ajax({ url:"chuli.php", data:{code:code,nr:nr,type:3},//传的type是为了一个页面处理多个ajax时区分处理的哪一个ajax的。 type:"POST", dataType:"TEXT", success: function(data){ window.location.href="main.php"; } }) }) </script>
</html>
7.通过页面,点击通过按钮表示批改人同意申请。
shenqing.php
<?php session_start(); include("../DBDA.class.php"); $db = new DBDA(); $ids = $_GET["ids"]; $sql = "update userflow set towhere = towhere+1 where ids='{$ids}'";//点击通过以后就让流程+1 $db->Query($sql,0); $stw = "select code,towhere from userflow where ids = '{$ids}'"; $tw = $db->Query($stw); $lcdaihao = $atw[0][0]; $towhere = $atw[0][1]; $jiedian = "select count(*) from flowpath where code='{$lcdaihao}'";//求出节点的总数量 $shuliang = $db->StrQuery($jiedian); if($towhere>=$shuliang)//流程走到哪>=流程总数量说明流程已经走完 { $su = "update userflow set isok = 1 where ids='{$ids}'"; $db->Query($su,0); } header("location:main.php");
?>