>  기사  >  백엔드 개발  >  php+ajax를 사용하여 시작 프로세스 및 검토 프로세스를 구현하는 방법

php+ajax를 사용하여 시작 프로세스 및 검토 프로세스를 구현하는 방법

墨辰丷
墨辰丷원래의
2018-05-21 15:21:301933검색

이 글은 주로 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=&#39;{$uid}&#39;";
$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=&#39;shenhe.php&#39;>审核流程</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=&#39;{$v[0]}&#39;>{$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 (&#39;&#39;,&#39;{$code}&#39;,&#39;{$uid}&#39;,&#39;{$nr}&#39;,0,&#39;{$time}&#39;,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=&#39;{$uid}&#39;) and towhere >=(select orders from liuchengjiedian b where b.code = a.code and b.uids = &#39;{$uid}&#39;)";
  $arr = $db->query($sql);
  //var_dump($arr);
  echo "<table border=&#39;1&#39; width=&#39;100%&#39; cellpadding=&#39;0&#39; cellspacing=&#39;0&#39;>
    <tr>
    <td>流程代号</td>
    <td>发起者</td>
    <td>发起内容</td>
    <td>发起时间</td>
    <td>是否结束</td>
    <td>操作</td>
    </tr>";
  foreach($arr as $v){
   //操作最后一列
   //设置默认项
   $zt = "<a href=&#39;tongguo-cl.php?code={$v[0]}&#39;>审核未通过</a>";
   $sql = "select orders from liuchengjiedian where code =&#39;{$v[1]}&#39; and uids =&#39;{$uid}&#39;";
   $wz = $db->strquery($sql);
   if($v[6]>$wz)
   {
   $zt = "<span style=&#39;color:green&#39;>审核已通过</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 =&#39;{$ids}&#39; ";
$db->query($sql,0);
//当流程走到最后一个审核的人时,流程要结束
//获取该流程最大的orders
$sql =" select max(orders) from liuchengjiedian where code = (select code from liuchengpath where ids =&#39;{$ids}&#39;)";
$maxorders = $db->strquery($sql);
//获取该用户处于哪个位置,也就是towhere等于多少
$sql ="select towhere from liuchengpath where ids =&#39;{$ids}&#39;";
$towhere = $db->strquery($sql);
//判断是否已到达最后一个审核的人
if($towhere>$maxorders)
{
 $sql = "update liuchengpath set isok=1 where ids=&#39;{$ids}&#39;";
// var_dump($sql);
 $db->query($sql,0);
}
header("location:shenhe.php");
?>

이 단계가 작성되면 "Audit failed"를 클릭합니다. " 그러면 "리뷰가 통과되었습니다"가 됩니다.

처음부터 효과를 확인해 보겠습니다.

첫 번째: 새로운 휴가 프로세스 시작:

두 번째: zhangsan은 첫 번째 사람입니다.

"검토 실패 후"를 클릭한 후,

마지막으로: zhaoliu가 마지막 검토자입니다

"검토 실패"를 클릭한 후, 종료 여부 작업이 1로 변경되고 녹색으로 변경됩니다. "감사 통과"~~~

php 프로세스 제어 계속 문

php 프로세스 제어 중단 문


php 프로세스 foreach가 무엇인지 제어


위 내용은 php+ajax를 사용하여 시작 프로세스 및 검토 프로세스를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.