2009-04-23 67 views
0

- 爲清晰起見進行了編輯。PHP重複區域和複選框

數據庫:

tblModule,包含可啓用或禁用模塊的列表。 tblData,包含信任列表及其啓用的模塊。此鏈接到tblModuletblData.M01 = tblModule.mod_key

PHP頁面被從索引頁訪問,並傳遞變量lstModTrust此頁面,以限制tblData返回的記錄單相信。 tblData.trust_key

查詢運行,qryModuleList返回所有模塊的列表。這用於生成所有可用模塊的表格。每行顯示模塊名稱tblModules.mod_name,模塊代碼tblModules.mod_code和一個複選框。

qryModData將返回爲單個信任啓用的模塊列表,以及相應的複選框,需要在表中被選中。

此頁面將用於啓用和禁用信任模塊。如果某個模塊未被選中,該條目將從tblData中刪除,如果勾選了條目將被插入,並且如果沒有更改,則數據庫中沒有更改。

在我基礎上qryModData

任何想法的人無法得到正確打勾的複選框的那一刻?

--Edited包括代碼 -

<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 

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

我可以看到一些代碼嗎? – 2009-04-23 16:14:54

+0

絕對需要一些代碼示例,以幫助第三個代碼請求 – BrynJ 2009-04-23 16:21:49

回答

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> 

(我用的是因爲該功能可以退的理由虛假或一些可能等於假,可能無法閱讀我上面的鏈接在網頁「==!」。更多)