如何将一列结果放入数组中,然后用PHP与另一列进行比较



我的系统基于驾驶证申请。如果用户可以申请不同级别的许可证,例如,如果用户想申请5级许可证,他们必须具备2级和3级的先决条件。

在我的数据库中,我有两个相关的表,1是许可证,它存储用户已经申请或正在等待批准的所有许可证。另一个表格是许可证类型的说明,其中指出了用户可以申请的每个可用许可证及其先决条件和说明。

许可证(PID、EID、PTYPE、STATUS、DATETIMEAPP)

类型(TYID、PTYPE、PREREQ1、PREREQ2、REQEXP、DES)

我的计划是从数据库中检索数据

$query= "select PTYPE from permit where eid = $user"
$result = mysql_query($query, $conn);

将结果存储为阵列

while ($row = mysql_fetch_assoc($result))
{
    $result_array[] = $row;
}

从类型表中检索预先要求

$query= "select PREREQ1 , PREREQ2 from type where TYID = $appliedPermit"
$result = mysql_query($query, $conn);

将2个结果与布尔值进行比较(我不确定如何对其进行编码)

若结果为真,则继续进行,否则返回到上一页并弹出一个消息,通知用户他们并没有满足先决条件。(我知道我需要if-else语句,但不确定如何编写条件)

你们认为我走在正确的道路上吗??我不确定它是否有效。。。但希望在座的各位有更好的建议。

稍微重组一下:

我的系统旨在允许用户申请驾驶执照。。。共有9个许可证——1级、2级、3级。Cat 2PG、Cat 3PG、Car4PG、Cat 1OR、Cat 2OR、Cat 3OR、Cat 2TT和Cat 3TT。例如,Cat 3TT要求用户具有Cat 2TT和Cat 2PG。换句话说,Cat 3TT的先决条件是Cat 2TT和Cat 2PG。

我想使用PHP从数据库中提取所有所需的值,并对它们进行比较,看看用户是否满足了预先要求,然后允许他继续进行医学问卷调查(如果他得到了1)。

问题是:我不知道如何按逻辑编码,我试过了,但没有成功。希望对我的问题有更多的意见和解决方案。非常感谢。我们非常感谢您的帮助。

您只能在一个查询中检查先决条件:

$query = "SELECT t.tyid, t.prereq1, t.prereq2
, (CASE WHEN (t.prereq1 IS NOT NULL) AND (p1.ptype IS NULL) THEN 1 ELSE 0 END) AS missing1
, (CASE WHEN (t.prereq2 IS NOT NULL) AND (p2.ptype IS NULL) THEN 1 ELSE 0 END) AS missing2
FROM type AS t
LEFT JOIN permit AS p1 ON (t.prereq1=p1.ptype) AND ( p1.eid = $user )
LEFT JOIN permit AS p2 ON (t.prereq2=p2.ptype) AND ( p2.eid = $user )
WHERE ( t.tyid IN (".implode(',', $appliedPermit).") )";
$result = mysql_query($query, $conn);
while ($row = mysql_fetch_assoc($result)) {
  echo "permit ".$row['tyid']. " : "
  echo "prerequisites = ".$row['prereq1'].", ".$row['prereq2'];
  if ( ($row['missing1']==1) && ($row['missing1']==1) ) {
    echo ", result = ok <br>";
  } else {
    echo ", result = failed <br>";
  }
}

此查询返回两个先决条件id;而且如果先决条件#1缺失则missing1值为1并且如果先决前提#2缺失则missing2值为1。

注意:我已经更新了我的帖子来回复你下面的两条评论。

运行以下查询,然后将结果打印给用户作为他需要的前提条件。

 SELECT prereq1, prereq2 from type 
 where tyid = $appliedPermit 
 and prereq1 not in (select  ptype from permit where eid = $user) 
 and prereq2 not in (select ptype from permit where eid= $user);

相关内容

  • 没有找到相关文章

最新更新