流程上
//不同的流程里面的流程节点也不相同
//流程表:有流程代号和流程名称
//流程节点表: ids 流程代号 节点人员 顺序(就是节点人员在这个流程里面属于第几个顺序)
//先让用户来创建节点,用户可以选择某一个人,添加到这个流程里面,选的第一个人就在第一位,选的第二个人就在第二位。
//如果用户选择完节点之后没有点击添加,那么这个节点人员是不能往数据库里面存储的。
//这样就需要实现的功能就是能看出来选择的是什么东西,而又不往数据库里面送。(和之前做过的购物车相类似)
//不往数据库里面送,用session暂时来存储选择的节点人员。
效果图:
s4.php:
<title>无标题文档</title> <script src="jquery-1.11.2.min.js"></script> </head> <body> <h1>新建流程</h1> <div> 请选择节点人员: <select id="user"> <?php session_start(); require "./DBDA.class.php"; $db= new DBDA(); $sql = "select * from users"; $arr = $db->query($sql); foreach($arr as $v) { echo "<option value='{$v[0]}'>{$v[2]}</option>"; } //创建完下拉列表和普通的添加节点人员按钮后要把节点人员先暂时存到session里面去 //做点击添加节点,用ajax来做,用ajax取到选中的用户名。然后打到处理页面,然后把用户名存到session //里面去就可以了 ?> </select> <input type="button" value="添加节点" id="addjd" /> </div> <br /> <div> <?php //这个div是来显示下添加的节点人员的。之前我们利用ajax把节点人员暂时存到了session里面了 //所以在这个div里可以从session里面取来然后显示 上面开启session //在这个显示节点人员之前我们要先判断一下session里面是不是为空的 //如果是第一次打开这个页面的话,这个session里面是肯定没有数据的。 //没有数据就不能硬取,硬取就会报错。 if(empty($_SESSION["jiedian"])) { //如果是为空的就说明还未添加节点人员,那么就输出一句话。 echo "还未添加节点人员!"; } else { //说明session里面有数据。有数据的话就把session里面的数据取出来。 $arr = $_SESSION["jiedian"]; //这个数组$arr里面全是用户名 foreach($arr as $k=>$v) { //把这个数组里面的所有用户名$v和其key索引全部都取出来 //因为这里显示的$v是用户名不是其姓名,所以我们要通过用户名来从数据库 //里面查其姓名 $sql = "select name from users where uid='{$v}'"; $name = $db->strquery($sql); //此时$k索引,$v用户名,$name姓名都有了。就可以输出了 echo "<div>{$k}--{$name}--<input type='button' value='移除' class='yichu' sy='{$k}' /></div>"; //这样就可以来显示所有人员的索引和所有人员的名称了 //再添加一个功能就是当添加人员错误想删除掉的功能(可以在{$name}后面添加一个按钮) //当点击移除按钮时能从session里面将其移除 } } ?> </div> <br /> <div> 请输入流程名称:<input type="text" id="mingcheng" /> </div> <br /> <input type="button" value="保存" id="baocun" /> </body> <script type="text/javascript"> //先给这个添加节点的普通按钮增加一个点击事件 $("#addjd").click(function(){ //要实现的功能就是当我点击这个添加节点人员的普通按钮的时候需要取出选中的用户名 var uid = $("#user").val(); //取到选中的用户名之后,就可以调用ajax去处理页面把这个用户名放到session里面暂时存一下 $.ajax({ url:"s5.php", data:{uid:uid}, type:"POST", dataType:"TEXT", success:function(data){ //处理页面执行完之后只要再刷新一下页面就可以了 window.location.href="s4.php"; //刷新完一下页面之后就可以显示节点里面现在有哪些人员了 //可以在添加节点按钮的下面造一个div来显示下有哪些人员了 } }); }) $(".yichu").click(function(){ var sy =$(this).attr("sy"); $.ajax({ url:"s6.php", data:{sy:sy}, type:"POST", dataType:"TEXT", success: function(data){ window.location.href="s4.php"; } }); }) $("#baocun").click(function(){ //点击保存的话需要往flowpath和liucheng里面送数据 //flowpath表中的uids 和 orders的数据在session里面存着,session里面有一个数组 //这个数组的索引就可以当作顺序orders,uids也在session里面存着 //liucheng表中的数据:流程名称name用户输入了,流程代号可以用时间戳来自动生成一个 var name = $("#mingcheng").val(); //取到用户输入的流程名称 $.ajax({ url:"s7.php", data:{name:name}, type:"POST", dataType:"TEXT", success:function(data){ //在处理页面往流程表和流程节点表里面添加完数据之后回过头来输出一句话 alert("保存成功!"); } }); }) </script> </html>
s5.php
<?php session_start(); //这个页面的目的就是取到传的用户名uid把它放到session里面去 $uid = $_POST["uid"]; //因为session里面要存一个数组,因为这个节点人员可以选择多个。所以它里面要存一个数组的 //一开始session里面是没有值的,所以一开始也不能直接往session里面存。要先实现两个逻辑 //首先是先判断下session里面有没有值 if(empty($_SESSION["jiedian"])) { //如果判断为空说明是第一次添加节点,第一次的话就需要先造个数组扔到session里面去。 $arr = array($uid); //造一个数组然后把uid扔进去。 //造好数组后我们就把这个数组扔到session里面存一下 $_SESSION["jiedian"]= $arr; //索引为jiedian其值为$arr } else { //如果是else的话就说明session里面有数组了 //如果session里面有数组了,就直接把数组取出来,取出来之后,我们往数组里面添加一项新的值 //然后再送到session里面去就可以了 $arr = $_SESSION["jiedian"]; //往session里面添加数据 $arr[] = $uid; //把节点人员添加到这个数组里面去之后再把这个数组扔回到session里面去暂时存着 $_SESSION["jiedian"] = $arr; }
s6.php
<?php //这个页面的目的就是把session里面存的这个jiedian数组的某一项删掉,然后重新建立索引 //再扔进去就完成了 session_start(); $sy = $_POST["sy"]; $arr = $_SESSION["jiedian"]; //把session里面的数组取出来 unset($arr[$sy]); //删除掉后要重新排列一下索引 $arr = array_values($arr); //array_values()方法是对数组重新索引 //重新索引后再把这个新数组扔到session里面去 $_SESSION["jiedian"] = $arr; //节点人员建出来之后就还流程名称需要输入,流程名称输入完成后就可以保存了。 //可以做一个div来输入流程名称
s7.php
<?php session_start(); //这个处理页面的目的就是往流程和流程节点表中添加数据 //这里要用到session因为要从session里面取出流程节点人员 require "./DBDA.class.php"; $db= new DBDA(); $name = $_POST["name"]; $code = time(); $sql = "insert into liucheng values('{$code}','{$name}')"; $db->query($sql,0); //执行完这句话流程表中的code和name值就添加进去了 //接下来再往流程节点表中添加数据 //往流程节点表中添加数据的多少取决于session里面的数组存的数量 //所以先从session里面把这个节点数组取出来 $arr = $_SESSION["jiedian"]; foreach($arr as $k=>$v) { $sql = "insert into flowpath values('','{$code}','{$v}','{$k}')"; $db->query($sql,0); }