0

-- わかりやすくするために編集しました。

データベース:

tblModuleには、有効または無効にできるモジュールのリストが含まれています。 tblDataには、信頼とそれらが有効にしたモジュールのリストが含まれています。これはtblData.M01 = tblModule.mod_keyのtblModuleにリンクします

PHP ページはインデックス ページからアクセスされ、変数lstModTrustをこのページに渡して、tblData から返されるレコードを 1 つのトラストに制限します。tblData.trust_key

すべてのモジュールのリストを返すクエリqryModuleListが実行されます。これは、利用可能なすべてのモジュールのテーブルを生成するために使用されます。各行には、モジュール名tblModules.mod_nameモジュール コード tblModules.mod_code、およびチェックボックスが表示されます。

qryModDataは、単一の信頼に対して有効になっているモジュールのリストを返します。テーブルで対応するチェックボックスをオンにする必要があります。

このページは、信頼のモジュールを有効または無効にするために使用されます。モジュールがチェックされていない場合、エントリはtblDataから削除され、チェックされている場合はエントリが挿入され、変更がない場合は DB に変更はありません。

現時点では、qryModDataに基づいてチェックボックスを正しくチェックするのに問題があります。

誰か考えはありますか?

-- コードを含めるように編集 --

<table width="50%" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td>Module</td>
        <td>Module Code</td>
        <td>&nbsp;</td>
    </tr>
    <?php do { ?>
    <tr>
        <td><?php echo $row_qryModuleList['mod_name']; ?></td>
        <td><?php echo $row_qryModuleList['mod_code']; ?></td>
        <td><input <?php if (!(strcmp($row_qryModData['M01'],$row_qryModuleList['mod_code']))) {echo "checked=\"checked\"";} ?>name="chkMod" type="checkbox" id="chkMod" value="<?php echo $row_qryModData['M01']; ?>" /></td>

    </tr>
    <?php } while ($row_qryModuleList = mysql_fetch_assoc($qryModuleList)); ?>
</table>

次に、2 つの SQL クエリがあります。1 つはテーブルを構築するためのリストを生成するクエリで、もう 1 つはチェックボックスをオンにするために使用しようとしているクエリです。

qryModuleList
SELECT *
FROM tblmodules
ORDER BY mod_name ASC

qryModData
SELECT *
FROM tbldata
WHERE trust_key = varTrust

varTrust は URL 変数から取得されます。

最初にコードを含めなかったことをお詫びします。

-- 新しいコードを編集します。

<?php while ($row_qryModuleList = mysql_fetch_assoc($qryModuleList)) { ?> 
    <tr>
        <td><?php echo $row_qryModuleList['mod_name']; ?></td>
        <td><?php echo $row_qryModuleList['mod_code']; ?></td>
        <td><input <?php if (strcmp($row_qryModData['M01'],$row_qryModuleList['mod_key']) != 0) {echo "checked=\"checked\"";} ?>name="chkMod" type="checkbox" id="chkMod" value="<?php echo $row_qryModData['M01']; ?>" /></td>

    </tr>
<?php } ; ?>

-- 新しいコード用に編集。

<tr class="tblHead">
    <td>Module</td>
    <td>Module Code</td>
    <td>Enabled\Disabled</td>
</tr>

<?php
$mod_data = array();
while ($row_qryModData = mysql_fetch_assoc($qryModData))
    array_push($mod_data, $row_qryModData['M01']);
$currentRow = 0;
while ($row_qryModuleList = mysql_fetch_assoc($qryModuleList)) {
?>
    <tr bgcolor="<?php echo($currentRow++ % 2)?"#CCFFFF":"#FFCCFF";?>">
        <td><?php echo $row_qryModuleList['mod_name']; ?></td>
        <td><?php echo $row_qryModuleList['mod_code']; ?></td>
        <td><input <?php if (false !== (array_search($mod_data, $row_qryModuleList['mod_key']))) echo "checked=\"checked\""; ?> name="chkMod" type="checkbox" id="chkMod" value="<?php echo $row_qryModData['M01']; ?>" /></td>
    </tr>
<?php } ; ?>
4

1 に答える 1

0

私は今これを理解していると思います。あなたがする必要があるのは、許可されたすべてのモジュールを配列に配置し、array_search()関数を使用してそれを見つけることです。

例:

$mod_data = array();

while ($row_qryModData = mysql_fetch_assoc($qryModData)) array_push($mod_data, $row_qryModData['M01']);

これにより、使用可能なすべてのモジュールが1つのアレイにまとめられます。

次に、「ModuleList」クエリを循環しながら、array_search()メソッドを使用して、その中の「ModKey」変数を見つけようとします。その場合は、チェックボックスをオンにします。そうでない場合は、何もしません。

例:

<td><input <? if (false !== (array_search($mod_data, $row_qryModuleList['mod_code'])) echo "checked=\"checked\" "; ?>name="chkMod" type="checkbox" id="chkMod" value="<?php echo $row_qryModData['M01']; ?>" /></td>

(「!==」を使用する理由は、関数がfalseまたはfalseと等しい可能性があり、そうでない可能性があるものを返す可能性があるためです。詳細については、上記のリンク先のページを参照してください)

于 2009-04-23T17:15:19.863 に答える