이 글은 주로 php+ajax 초기화 과정과 검토 과정을 소개합니다(휴가를 예로 들어요). 필요하신 분들은 참고하시면 됩니다.
아이디어부터 먼저 말씀드리겠습니다:
(1) 로그인 그리고 세션을 사용하여 사용자 ID를 가져옵니다. 发 (2) 사용자가 프로세스를 시작합니다
참고: 신청서를 작성해야 하는 리뷰어는 노드에서 리뷰어의 순서대로 검토를 받습니다. 각 리뷰를 통과하면 해당 Towhere 필드가 표시됩니다. 1씩 추가해야 합니다. 해당 isok 필드는 1로 변경되어야 합니다. (여기서 1은 끝을 의미하고 0은 끝이 아님을 의미함)
세 개의 테이블을 공유합니다:
1단계 : 먼저 간단한 로그인 페이지를 만들고 세션을 사용하여 이를 얻습니다. 사용자 이름: denglu.php 페이지<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post" action="denglu-cl.php"> 用户名:<input type="text" name="uid" /><br /> 密码:<input type="password" name="pwd" /><br /> <input type="submit" value="登录" /> </form> </body> </html>
denglu-cl.php 페이지
<?php session_start(); require "../DB.class.php"; $db = new DB(); $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; $sql = "select pwd from users where uid='{$uid}'"; $mm = $db->strquery($sql); if($pwd==$mm && !empty($pwd)) { $_SESSION["uid"]=$uid; header("location:liucheng.php"); } else { echo "密码或登录名输入错误"; } ?>
렌더링:
Step 2: 간단한 노트 페이지 만들기: liucheng.php<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #body{ height: 200px; width: 300px; background-color: gainsboro; margin: 200px auto; text-align: center; vertical-align: middle; line-height: 30px; } </style> </head> <body> <p id="body"> <h2>主页面</h2> <p> <a href="faqi.php" rel="external nofollow" >发起流程</a><br /> <a href='shenhe.php'>审核流程</a> </p> </p> </body> </html>
렌더링:
3단계: 프로세스 페이지 시작 faqi.php (1) 먼저 모든 프로세스를 드롭다운 목록에 표시합니다(2) 프로세스를 시작하는 이유는 로그인이 필요합니다. 사용자가 입력하는 내용은
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #body{ height: 250px; width: 300px; background-color: gainsboro; margin: 200px auto; text-align: left; vertical-align: middle; line-height: 30px; padding-left: 30px; } </style> </head> <body> <p id="body"> <form method="post" action="faqi-cl.php"> <h2>发起流程页面</h2> <select id="lc"> <?php require "../DB.class.php"; $db = new DB(); $sql = "select * from liucheng"; $arr = $db->query($sql); foreach($arr as $v) { echo "<option value='{$v[0]}'>{$v[1]}</option>"; } ?> </select><br /> 发起流程事由: <textarea class="nr"> </textarea><br /> <input type="button" value="确定发起" /> </form> </p> </body> </html>4단계: 시작 프로세스의 처리 페이지 fq-cl.php 작성
<?php session_start(); require "../DB.class.php"; $db = new DB(); $code = $_POST["lc"]; $nr =$_POST["nr"]; $uid = $_SESSION["uid"]; $time = date("Y-m-d H:i:s",time()); $sql = "insert into liuchengpath values ('','{$code}','{$uid}','{$nr}',0,'{$time}',0)"; $db->query($sql,0); header("location:liucheng.php"); ?>
클릭 "시작 확인"하면 이 데이터가 데이터베이스에 추가됩니다
5단계: 프로세스 검토 페이지 shenhe.php사용된 지식 포인트: 하위 쿼리: 관련 없는 하위 쿼리(하위 쿼리와 상위 쿼리는 독립적으로 실행될 수 있음); 하위 쿼리 (하위 쿼리의 조건은 상위 쿼리를 사용합니다 Something )
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #body{ height: 450px; width: 800px; background-color: gainsboro; margin: 200px auto; text-align: left; vertical-align: middle; line-height: 30px; padding-left: 30px; } </style> </head> <body> <p id="body"> <h2>流程审核页面</h2> <?php session_start(); $uid = $_SESSION["uid"]; require "../DB.class.php"; $db = new DB(); //先取该用户参与的所有流程 //并且取流程步骤到达该用户或已经被改用户审核通过的记录 $sql="select * from liuchengpath a where code in(select code from liuchengjiedian where uids='{$uid}') and towhere >=(select orders from liuchengjiedian b where b.code = a.code and b.uids = '{$uid}')"; $arr = $db->query($sql); //var_dump($arr); echo "<table border='1' width='100%' cellpadding='0' cellspacing='0'> <tr> <td>流程代号</td> <td>发起者</td> <td>发起内容</td> <td>发起时间</td> <td>是否结束</td> <td>操作</td> </tr>"; foreach($arr as $v){ //操作最后一列 //设置默认项 $zt = "<a href='tongguo-cl.php?code={$v[0]}'>审核未通过</a>"; $sql = "select orders from liuchengjiedian where code ='{$v[1]}' and uids ='{$uid}'"; $wz = $db->strquery($sql); if($v[6]>$wz) { $zt = "<span style='color:green'>审核已通过</span>"; } echo "<tr> <td>{$v[1]}</td> <td>{$v[2]}</td> <td>{$v[3]}</td> <td>{$v[4]}</td> <td>{$v[5]}</td> <td>{$zt}</td> </tr>"; } echo "</table>"; ?> </p> </body> </html>
6단계: tongguo-cl.php 페이지 작성(중요)
<?php $ids = $_GET["code"]; require "../DB.class.php"; $db = new DB(); //点击审核后,towhere列加1,目的是使流程向下走 $sql = "update liuchengpath set towhere = towhere+1 where ids ='{$ids}' "; $db->query($sql,0); //当流程走到最后一个审核的人时,流程要结束 //获取该流程最大的orders $sql =" select max(orders) from liuchengjiedian where code = (select code from liuchengpath where ids ='{$ids}')"; $maxorders = $db->strquery($sql); //获取该用户处于哪个位置,也就是towhere等于多少 $sql ="select towhere from liuchengpath where ids ='{$ids}'"; $towhere = $db->strquery($sql); //判断是否已到达最后一个审核的人 if($towhere>$maxorders) { $sql = "update liuchengpath set isok=1 where ids='{$ids}'"; // var_dump($sql); $db->query($sql,0); } header("location:shenhe.php"); ?>
이 단계가 작성되면 "Audit failed"를 클릭합니다. " 그러면 "리뷰가 통과되었습니다"가 됩니다.
처음부터 효과를 확인해 보겠습니다. 첫 번째: 새로운 휴가 프로세스 시작:두 번째: zhangsan은 첫 번째 사람입니다.
"검토 실패 후"를 클릭한 후,
마지막으로: zhaoliu가 마지막 검토자입니다"검토 실패"를 클릭한 후, 종료 여부 작업이 1로 변경되고 녹색으로 변경됩니다. "감사 통과"~~~
php 프로세스 제어 계속 문
php 프로세스 제어 중단 문
위 내용은 php+ajax를 사용하여 시작 프로세스 및 검토 프로세스를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!