PHP Повторяющийся регион и флажки - PullRequest
0 голосов
/ 23 апреля 2009

- отредактировано для ясности.

База данных:

tblModule , содержит список модулей, которые можно включить или отключить. tblData , содержит список доверительных отношений и модулей, которые они включили. Это ссылки на tblModule на tblData.M01 = tblModule.mod_key

Страница 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

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

1 Ответ

0 голосов
/ 23 апреля 2009

Мне кажется, я понимаю это сейчас. Вам нужно поместить все разрешенные модули в массив и использовать функцию 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, а может и нет. Для получения дополнительной информации прочтите страницу, на которую я ссылался выше)

...