PHP重复区域和复选框

时间:2009-04-23 15:57:36

标签: php forms checkbox dreamweaver

- 为清晰起见而编辑。

数据库:

tblModule ,包含可以启用或禁用的模块列表。 tblData ,包含信任列表及其启用的模块。这链接到 tblData.M01 = tblModule.mod_key

上的 tblModule

从索引页面访问PHP页面并将变量 lstModTrust 传递给此页面,以限制从单个信任的tblData返回的记录。的 tblData.trust_key

运行查询 qryModuleList ,它返回所有模块的列表。这用于生成所有可用模块的表。每行显示模块名称 tblModules.mod_name 模块代码tblModules.mod_code 和一个复选框。

qryModData 将返回为单个信任启用的模块列表,并且需要在表格中勾选相应的复选框。

此页面将用于启用和禁用信任模块。如果模块未被取消,则该条目将从 tblData 中删除,如果勾选则将插入一个条目,如果没有更改则不会更改数据库。

目前我无法根据 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>

然后有两个SQL查询,一个生成用于构建表的列表,另一个用于设置要勾选的框。

qryModuleList
SELECT *
FROM tblmodules
ORDER BY mod_name ASC

qryModData
SELECT *
FROM tbldata
WHERE trust_key = varTrust

从URL变量中提取varTrust。

首先不包括代码的道歉。

- 编辑新代码。

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

1 个答案:

答案 0 :(得分:0)

我想我现在明白了。您需要做的是将所有允许的模块放入一个数组中,然后使用array_search()函数找到它。

示例:

$mod_data = array();

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

这将把所有可用的模块放到一个数组中。

接下来,当您循环“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的内容。可以阅读我上面链接的页面以获取更多信息)

相关问题