1

employee親と子として2つのテーブルがありlicenseます。どちらにもLic_ID参照用の列があり、この列はPKinlicenseFKinemployeeです。licenseテーブルには、ライセンスの名前を保持する列もありますLic_Type

employeeテーブルを更新できるように、リスト ボックスを含むテーブルを作成しようとしています。リスト ボックスvalueに を入力し、 を に表示する必要がlicense.Lic_IDありlicense.Lic_Typeますoption。ここに私が持っているものがあります:

(Employee name, Id, etc. called out up here)

<?php
echo "<select name=\"Lic\">";
echo "<option value=\"\">Select...</option>";

$sql = $mysqli->query("SELECT Lic_ID, Lic_Type FROM license");

while($row = $result->fetch_assoc())
     {
     echo "<option value=\"" . $row['Lic_ID'] . "\">" . $row['Lic_Type'] . "</option>";
     }

echo "</select>";
?>

これで問題なく動作し、ライセンスの種類が表示され、値がライセンス ID に設定されます。私がやりたいのは<option selected="selected">、ライセンスIDが従業員に設定されているかどうかです。このコードは機能しませんが、私がやろうとしていることを示していると思います:

<?php
echo "<select name=\"Lic\">";
echo "<option value=\"\">Select...</option>";

$sql = $mysqli->query("SELECT license.Lic_ID, license.Lic_Type, employee.Lic_ID FROM employee INNER JOIN license ON employee.Lic_ID = license.Lic_ID");

while($row = $result->fetch_assoc())
     {
     echo "<option value=\"" . $row['license.Lic_ID'] . "\"";
         if($row['employee.Lic_ID'] = $row['license.Lic_ID']){echo "selected=\"selected\";}
     echo ">" . $row['license.Lic_Type'] . "</option>";
     }

echo "</select>";
?>

私がやろうとしていることを達成する方法はありますか?

4

2 に答える 2

1

何を成し遂げようとしていたのか混乱していたのではないかと思いますが、はっきりしていなかったことをお詫びします。とにかく、今日は答えに出くわしたので、投稿したほうがいいと思いました。

$sql1 = ("SELECT Emp_Name, Lic_MAT_ID FROM employee");

if(!$result_employee_query = $mysqli->query($sql1))
    {
    die ("There was an error getting the records from the employee table");
    }

while($employee = $result_employee_query->fetch_assoc())
    {
    echo "Employee Name: " . $employee['Emp_Name'] . "<br>";

    echo "License: ";
    echo "<select>";

    $sql2 = ("SELECT Lic_MAT_ID, Lic_MAT_Type FROM license_mat");

    if(!$result_license_query = $mysqli->query($sql2))
        {
        die ("There was an error getting the records from the license table");
        }

    while($license = $result_license_query->fetch_assoc())
        {
        echo "<option value=\"" . $license ['Lic_MAT_ID'] . "\"";
            if($license['Lic_MAT_ID'] == $employee['Lic_MAT_ID'])
                {
                echo " selected=\"selected\"";
                }
        echo ">" . $license ['Lic_MAT_Type'] . "</option>";
        }

    echo "</select><br>";
    }
于 2012-12-04T09:29:54.253 に答える
0

私はあなたの問題を理解している. ユーザーのいずれかがライセンスを設定している場合は「選択」され、そうでない場合はそうではありません。

"multiple"最初に、selectオブジェクトにキーワードを割り当ててリストボックスにする必要があります。

echo "<select name=\"Lic\" multiple=\"multiple\">";

2 番目: この種のクエリを記述します。

$sql = $mysqli->query("SELECT l.Lic_ID, l.Lic_Type, e.cnt FROM licence l left outer join (select Lic_id, count(*) cnt from employee group by Lic_id) e on l.Lic_ID=e.Lic_id");

Lic_IDLic_Typeおよびcountそれぞれの Lic_ID が設定されている従業員数 ( left outer join)を選択します。

コードでは、countが 0 よりも大きいかどうかを確認するだけです

if($row['cnt'] > 0){ 
  echo "selected=\"selected\";
}
于 2012-11-19T08:43:26.647 に答える