我的系统是基于驾照申请的。用户可以申请不同级别的许可证,例如,如果用户想申请5级许可证,他们必须具备2级和3级的先决条件。
在我的数据库中,我有两个相关的表,一个是许可证,其中存储了所有用户已经申请或正在等待批准的许可证。另一个表是许可证类型的说明,其中指明了用户可以申请的每个可用许可证及其先决条件和说明。
允许( PID、EID、PTYPE、STATUS、DATETIMEAPP)
类型(类型DES、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);将两个结果与布尔值进行比较(我不确定如何编码)
如果结果为真,则继续,否则返回到上一页,并弹出通知用户他们没有满足先决条件。(我知道我需要if else语句,但不确定如何编写条件)
你们觉得我走的路对吗?我不知道它是否会work...but希望在座的任何人有更好的建议。
稍微调整一下:
我的系统旨在允许用户申请驾驶permit...there共有9个许可证-Class 1,2类,3类。2PG类,3PG类,Car4PG类,1OR类,2OR类,3OR类,2TT类和3TT类。例如,Cat 3TT要求用户拥有Cat 2TT和Cat 2PG。换句话说,Cat 3TT的前提条件是Cat 2TT和Cat 2PG。
我想使用PHP从数据库中提取所有所需的值,并将它们进行比较,以查看用户是否满足前提条件,如果还没有达到1,则允许他继续进行医疗问卷调查。
问题是:我不知道如何从逻辑上编码出来,我试过了,但它不起作用。希望能得到更多关于我的问题的意见和解决方案。非常感谢。非常感谢您的帮助。
发布于 2012-04-04 05:44:17
您只能在一个查询中检查前提条件:
$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。
注意:我已经更新了我的帖子来回复你下面的两条评论。
发布于 2012-04-04 05:52:32
运行以下查询,然后将结果作为用户所需的先决条件打印给用户。
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);https://stackoverflow.com/questions/10001552
复制相似问题