1

私のシステムは運転免許証の申請に基づいています。ユーザーがさまざまなレベルの許可を申請できる場合、たとえば、ユーザーがクラス5の許可を申請する場合は、クラス2および3の前提条件が必要です。

私のデータベースには、2つの関連テーブルがあります。1つは、ユーザーが申請した、または承認を待っているすべての許可を格納する許可です。もう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;
}

タイプテーブルからprerequitesを取得します

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

2つの結果をブール値と一緒に比較します(これをどのようにコーディングできるかわかりません)

結果がtrueの場合は次に進み、そうでない場合はポップアップを表示して前のページに戻り、前提条件を満たしていないことをユーザーに通知します。(if elseステートメントが必要なことはわかっていますが、条件の記述方法がわかりません)

あなたたちは私が正しい道を進んでいると思いますか?それがうまくいくかどうかはわかりません...しかし、ここの誰かがより良い提案を持っていることを願っています。

少し再構築します。

私のシステムは、ユーザーが運転免許証を申請できるようにすることを目的としています...合計9つの許可証があります-クラス1、クラス2、クラス3。Cat2PG、Cat 3PG、Car4PG、Cat 1OR、Cat 2OR、Cat 3OR、Cat 2TTと猫3TT。たとえば、Cat 3TTでは、ユーザーはCat2TTとCat2PGを持っている必要があります。つまり、Cat3TTの前提条件はCat2TTとCat2PGです。

PHPを使用して、データベースから必要なすべての値を抽出し、それらを比較して、ユーザーが1を取得している場合に医療アンケートに進む前に、前提条件を満たしているかどうかを確認したいと思います。

問題は次のとおりです。論理的にコード化する方法がわかりません。試しましたが、機能しませんでした。私の問題に対するより多くの意見と解決策を得ることを望んでいます。どうもありがとうございます。ヘルプは大歓迎です。

4

2 に答える 2

2

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>";
  }
}

このクエリは、2 つの前提条件 id を返します。ただしmissing1、前提条件 #1 が欠落しているmissing2場合は値が 1 になり、前提条件 #2 が欠落している場合は値が 1 になります。

注: 以下の 2 つのコメントに返信するために投稿を更新しました。

于 2012-04-03T21:44:16.740 に答える
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);
于 2012-04-03T21:52:32.123 に答える