PHP Bölge ve Onay kutuları Tekrarı

1 Cevap php

- Netlik için düzenlenmiştir.

Veritabanı:

tblModule, contains a list of modules that can be enabled or disabled. tblData, contains a list of trusts and the modules they have enabled. This links to tblModule on tblData.M01 = tblModule.mod_key

PHP sayfası bir indeks sayfasından erişilebilir ve bir tek güven için tblData döndürülen kayıtları sınırlamak için, bu sayfaya bir değişken lstModTrust geçer. tblData.trust_key

Bir sorgu tüm modüllerin bir listesini verir, qryModuleList hangi çalışır. Bu, mevcut bir modül tablosu oluşturmak için kullanılır. Her satır modül adı tblModules.mod_name, module code tblModules.mod_code ve bir onay kutusu gösterir.

qryModData, bir tek güven için etkin olan modüllerin bir listesini döndürmek, ve karşılık gelen onay kutularını tabloda işaretli gerekir.

Bu sayfa daha sonra bir güven modüllerini etkinleştirmek ve devre dışı bırakmak için kullanılır. Bir modül girişi unticked ise o işaretli ise bir giriş eklenir, tblData silinmiş olacak ve daha sonra herhangi bir değişiklik DB değişiklik yoksa.

Şu anda ben sorun onay kutularını qryModData dayalı doğru işaretlemiştir alıyorum yaşıyorum

Herhangi bir düşünce kimse?

- Kod dahil etmek Düzenlendi -

<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>

Sonra bilet için kutuları ayarlamak için kullanmaya çalışıyorum iki SQL sorguları, tablo oluşturmak için listesini oluşturur biri ve ikinci var.

qryModuleList
SELECT *
FROM tblmodules
ORDER BY mod_name ASC

qryModData
SELECT *
FROM tbldata
WHERE trust_key = varTrust

varTrust URL değişken çekilir.

Ilk etapta kodu dahil değil özür dilemek için.

- Yeni kod düzenle.

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

- Yeni Kod Düzenlendi.

<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 Cevap

Ben şimdi bu anlayış düşünüyorum. Yapmanız gereken bir diziye izin tüm modülleri ve onu bulmak için array_search() işlevini kullanın yerdir.

Örnek:

$mod_data = array();

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

Bu bir diziye tüm mevcut modülleri alacak.

Sonra, 'ModuleList' sorgusu aracılığıyla size döngüsü içinde 'ModKey' değişken denemek ve bulmak için array_search () yöntemini kullanmaktadır. Bunu yaparsanız, kutuyu işaretleyin. Değilse, hiçbir şey yapmaz.

Örnek:

<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>

(Fonksiyon return false false veya eşit olabilir bir şey ve. Daha fazlası için yukarıda bağlantılı ettik sayfasını okuyun olmayabilir çünkü ben kullanmak nedeni! "==" Dir)