ホームページ  >  記事  >  バックエンド開発  >  PHP プロセス管理に関するプロセスの完全な説明セット

PHP プロセス管理に関するプロセスの完全な説明セット

伊谢尔伦
伊谢尔伦オリジナル
2017-06-22 14:10:352685ブラウズ

プロセス管理の用途は何ですか?

1. データベースコンテンツ

がある場合、最初はユーザーテーブル、次にプロセステーブル、ユーザーによって作成されたプロセステーブル、そして監査者のテーブル

があります。 次に、データベースが完成すると、新しいプロセスを作成するページが表示されます。このページにはレビュー担当者、プロセスの名前、送信ボタンが表示されます

(1) ノードを追加した人。これは、データベースを横断してすべてを表示するためのものです。このボタンにイベントをクリックします

<p>
  请选择节点人员:
    
    <?php
	session_start();   //开启session
	include("DBDA.class.php");   //调用封装好的数据库
	$db = new DBDA();  //造新对象
	
	$suser = "select * from users";  //查询用户表中的所有值
	$auser = $db->Query($suser);  //执行查询语句
	foreach($auser as $v)
	{
		echo "<input class=&#39;ck&#39; type=&#39;radio&#39; value=&#39;{$v[0]}&#39; name=&#39;ck&#39; />{$v[2]} ";  //输出单选按钮,数组中的索引2,也就是用户名,但是它的值是代号
	}
	?>
</p>

( 4) ノード追加の処理ページ

<input type="button" value="添加节点" id="insert" />  //起个名字,便于给它添加单击按钮

(5) 追加されたノードをメイン ページに表示します

$("#insert").click(function(){
	var ck = $(".ck");  //找到项
	var uid = "";
	for(var i=0;i<ck.length;i++)
	{
		if(ck.eq(i).prop("checked"))  //单选按钮的选中状态
		{
		  uid = ck.eq(i).val();  //单选按钮的值
		}
	}
		
	$.ajax({
		url:"addjd.php",  //添加节点的处理页面
		data:{uid:uid},  //将单选按钮的值传过去
		type:"POST",  //传值方式
		dataType:"TEXT",  //值的返回状态
		success: function(data){
			window.location.href="liucheng_gaunli.php";  //执行处理页面成功后会刷新页面
		  }
		});	
})

ノードを追加して効果を確認します:

1.まだ追加されていません:

2. レビュー担当者を数人追加するだけです: 人が表示されました

(6) 次に、削除ボタンにクリックイベントを追加します

<?php
session_start();  //开启session
$uid = $_POST["uid"];  //接收传过来的值

if(empty($_SESSION["jiedian"]))
{
	$attr = array($uid);  //定义一个数组放用户
	$_SESSION["jiedian"] = $attr; //将第一个用户放入数组中
}
else
{
	$attr = $_SESSION["jiedian"]; //数组中有值
	$attr[] = $uid;  //放入数组中值
	$_SESSION["jiedian"] = $attr;   //将值再交给session
}

(7) 削除ボタンの処理ページ

<?php
if(empty($_SESSION["jiedian"]))   //如果没有节点值
{
	echo "<p>还没有添加节点</p>";  //输出这句话
}
else
{
	$attr = $_SESSION["jiedian"];  //数组中有了值
	foreach($attr as $k=>$v)  //循环遍历,$v只是名字,还有有所以所以用$k
	{
		$sname = "select name from users where uid=&#39;{$v}&#39;";  //编写查询语句
		$name = $db->StrQuery($sname);  //执行查询语句
          //输出索引号还有名字,加一个删除按钮吧,可以吧这个节点删除
		echo "<p>{$k}--{$name}--<input type=&#39;button&#39; value=&#39;删除&#39; sy=&#39;{$k}&#39; class=&#39;sc&#39; /></p>";  
	}
}
?>

View delete ノードの効果

1. 削除前

2. ノードの削除後

(8) ノードの操作が終了すると、これは簡単です。名前のテキストを書きます。 フレーム: 重要なのは、このプロセスを保存することです。そのため、保存ボタンがあるはずです

$(".sc").click(function(){
	var sy = $(this).attr("sy");  //点击这个按钮,选中这个的索引号
	$.ajax({
		url:"shanchu.php",   //删除按钮的处理页面
		data:{sy:sy},  //把索引号传到处理页面
		type:"POST",  //传值方式
		dataType:"TEXT",
		success:function(data){
			window.location.href="liucheng_gaunli.php";  //执行处理页面成功后会刷新页面
		}
	});
})
<?php
session_start();  //开启session
$attr = $_SESSION["jiedian"];  //节点的数组
$sy = $_POST["sy"];  //接收穿过来的索引号

unset($attr[$sy]); //删除数据
$attr = array_values($attr); //重新索引
$_SESSION["jiedian"] = $attr;

全体的なレンダリングが表示されます:

(9) 最後に、保存ボタンのクリックイベントがあります

<p>请输入流程名称:<input type="text" id="name" /></p>    //起个名字,下面保存的写个单击事件有用

(10) プロセスの処理ページを保存します

<p><input type="button" value="保存" id="save" /></p>  //保存按钮要有单击事件的

保存効果を見てください:

データベースを見てください、コンテンツもデータベースに保存されています

3. 新しいプロセスページが終了したら、

ユーザーログイン

ページです。このページは何度も書きましたが、詳細には触れません。コードに進みます

(1) 基本ログインの表示: どれも基本的な文です

$("#save").click(function(){
  var name = $("#name").val();  //取到文本框的值
  $.ajax({
	url:"baocun.php",  //保存的处理页面
	data:{name:name},  //将文本框的值传到处理页面
	type:"POST",  //传值方式
	dataType:"TEXT",
	success: function(data){
		alert("添加成功!");  //执行处理页面成功后会弹出提示框
	  }
  });
})

(2) ここでログインします。ログインにも ajax を使用しましょう

<?php
session_start();  //开启session
include("DBDA.class.php");  //调用封装的数据库类
$db = new DBDA();  //造新对象

$name = $_POST["name"];  //接收传过来的值
$code = time();  //代号是时间

$sflow = "insert into flow values(&#39;{$code}&#39;,&#39;{$name}&#39;)"; //修改流程表中的值:代号和名字
$db->Query($sflow,0);  //执行语句

$attr = $_SESSION["jiedian"];  
foreach($attr as $k=>$v)
{
	$spath = "insert into flowpath values(&#39;&#39;,&#39;{$code}&#39;,&#39;{$v}&#39;,&#39;{$k}&#39;)";  //修改流程节点的数值
	$db->Query($spath,0);  //执行语句
}
(3) 処理ページの記述を見てみましょう

<h1>用户登录</h1>
<p>账号:<input type="text" id="uid" /></p> 
<p>密码:<input type="password" id="pwd" /></p>
<p><input type="button" value="登录" id="btn" /></p>

最後に、最終結果を確認します。ログインが成功すると、ホームページに入ります。ログインに失敗すると、エラーが表示されます。(このレビュー インターフェイスには注意すべき点がたくさんあります)。 (1) 成功したログイン インターフェースの表示部分: 成功したログイン インターフェースはすべての人が同じであるわけではありません。この人がレビューに参加していない場合は、その人もレビューに参加する必要があります。

表示したいヘッダーは 1 つです。行: テーブルを使用して表示できます

$("#btn").click(function(){  //对登录按钮添加单击事件
  var uid=$("#uid").val();  //获取用户的值
  var pwd=$("#pwd").val();  //获取密码的值
  $.ajax({
    url:"logincl.php",  //编写登录的处理页面
    data:{uid:uid,pwd:pwd},  //将用户和密码传到处理页面
    type:"POST",
    dataType:"text",
    success: function(data)
    {
      if(data.trim()=="OK")
      {
        window.location.href="main.php";    //处理页面执行成功后,跳转到主页面
      }
      else
      {
        alert("用户名密码输入错误");  //否则就提示错误
      }
    }
  })       
})

まずはヘッダーの表示を見てください:

(2) ユーザーがログインできるようにセッションを開きます 情報が保存されます

session_start();
include("DBDA.class.php");  //会用到数据库,所以可以调用一下数据库的类
$db = new DBDA();  //造新对象
$uid = "";
if(empty($_SESSION["uid"]))  //判断保存的session值是不是为空
{
  header("location:login.php");  //为空就返回登录页面
}
else
{
  $uid = $_SESSION["uid"];  //不为空就输保存一下用户
}

(3)接下来就是用户这是不是和流程有关系?流程走到哪了(分情况)?还有就是有没有通过

//查询登录者参与的所有流程
$su_flow = "select * from userflow where code in(select code from flowpath where uids=&#39;{$uid}&#39;)";
$au_flow = $db->Query($su_flow);  //执行查询语句
				
foreach($au_flow as $vu_flow)
{
  $towhere = $vu_flow[6]; //流程走到哪里了
					
  //找到登录者在该流程中的位置
  $s_weizhi = "select orders from flowpath where code=&#39;{$vu_flow[1]}&#39; and uids=&#39;{$uid}&#39;";
  $wezhi = $db->StrQuery($s_weizhi); //该人员在流程中的位置
					
  if($towhere>=$wezhi)
  {
    $caozuo = "";
    if($towhere==$wezhi)
    {
	  //流程正好走到登录者位置
	  $caozuo="<a href=&#39;tongguo.php?ids={$vu_flow[0]}&#39;>通过</a>"; //get方式传过处理页面
    }
    else
    {
	  //流程走过登录者
	  $caozuo = "<span style=&#39;background-color:green; color:white&#39;>已通过</span>";
    }
    echo "<tr><td>{$vu_flow[1]}</td><td>{$vu_flow[2]}</td><td>{$vu_flow[3]}</td><td>{$vu_flow[4]}</td><td>{$vu_flow[5]}</td><td>{$caozuo}</td></tr>";
  }
  else
  {
    //流程未走到登录者
  }
}

(4)通过的处理页面

<?php
include("DBDA.class.php");  //调用封装好的数据库类
$db = new DBDA();  //造新对象
$ids = $_GET["ids"];  //将代号传过来
$sql = "update userflow set towhere=towhere+1 where ids=&#39;{$ids}&#39;";  //修改towhere的值看已经执行到哪了
$db->Query($sql,0);  //执行修改语句

$swhere = "select * from userflow where ids=&#39;{$ids}&#39;";  
$attr = $db->Query($swhere);

$towhere = $attr[0][6]; //走到哪了
$code = $attr[0][1]; //流程代号
$ssl = "select count(*) from flowpath where code=&#39;{$code}&#39;";   //查询总数
$pcount = $db->StrQuery($ssl); //该流程节点人员数量

if($towhere>=$pcount)
{
  $sql = "update userflow set isok=true where ids=&#39;{$ids}&#39;";  //修改是不是已经通过了
  $db->Query($sql,0);
}
header("location:main.php");

因为还没有写发起流程界面,那么先从数据库中添加几条数据看看:

(1)我们先要新建个流程,这是第一个页面,我们就用新建流程

看下结点还有流程名称   来看下数据库中结点的表     

根据这些我们在流程表中自己先添加信息吧,等后来再通过发起流程添加,现在只看下效果

登录审核人员的账号看下:

第一个人是李四:

我们点击通过,继续往下走

第二个人是马七,我们不点通过,看下下一个人员(王五)有没有这个通过的操作:是没有这个操作的

我们让马七通过审核,再看下王五的界面

  王五的界面就是:就发现有了这个操作,继续下去,我们看下最后这个通过会不会变成1

最后审核人员张三    

看下结果是否会结束:

再看下数据库中towhere中的数值是不是已经结束了:

这个就剩下发起流程的步骤了,可以先看下效果:

(1)发起流程有个链接页面,单击这个,可以链接到发起流程页面

  

(2)这个及时发起流程的页面了

 这个挺简单的了,后面再更新吧~~~

至此,这个流程管理就结束了~~

 

以上がPHP プロセス管理に関するプロセスの完全な説明セットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。