2

私はテーブルを持っています:

CREATE TABLE siteConfig (
    settingName     VARCHAR(64) NOT NULL,
    value           VARCHAR(255),
    PRIMARY KEY (settingName)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

これらの設定を表示します。settingsdisplay.php

$setting = siteConfig::find_all();

    $this_page = array(
                        'recaptcha_public_key','recaptcha_private_key','spam_register','spam_login',
                        'spam_register_emp','spam_login_emp','spam_apply','spam_contact','spam_share',
                        'spam_feedback','spam_forgot','spam_rsc'
                       );

    foreach ( $setting as $s )
    {
        if( in_array($s->settingName, $this_page) )
        {
            $_SESSION['set_ses'][ $s->settingName ] = isset($_SESSION['set_ses'][ $s->settingName ]) ? $_SESSION['set_ses'][ $s->settingName ] : $s->value;
        }
    }

これらの設定を表示しているhtmlの一部。

<tr>
    <td>&nbsp;</td>
    <td>{lang mkey='label' skey='spam_register'}</td>
    <td><input type="checkbox" name="txt_setting[spam_register]" id="spam_register" class="checkboxField" {if $smarty.session.set_ses.spam_register == 1 } checked="checked"{/if} /></td>
</tr>

すべての情報が変更されたら、このページでデータベースに保存します。Update.php

foreach( $_POST['txt_setting'] as $k => $v )
    {
        $setting->settingName   = $k;
        $setting->value     = $v;

        if( $setting->updateSiteConfig() )
            $k = true;
    }

チェックボックスをオンにすると、update.phpに何も表示されません。

これらのチェックボックスから1または0の値を取得する方法がわかりません。

修理済み.................

$yes_or_no_key=array(list of my keys);
if( in_array($k, $yes_or_no_key) )
        {
            $setting->value = $_POST['txt_setting'][$k] == 'on' ? 1 : 0;
        }

これで私の問題は解決しました。qickの応答をありがとう。

4

2 に答える 2

1

チェックボックスの値は、チェックされている場合にのみ送信されます。- 死

したがって、次のようなものが必要です。

if (!isset($_POST['txt_setting[spam_register]']) $_POST['txt_setting[spam_register]'] = 0; // 0 value
于 2012-06-17T12:16:57.117 に答える
0

特定のオプションの値を1または0にする必要がある場合は、ラジオの使用をお勧めします。

<input type="radio" name="txt_setting[spam_register]" id="spam_register" class="checkboxField" value="0" {if $smarty.session.set_ses.spam_register == 1 } checked="checked"{/if} />    
<input type="radio" name="txt_setting[spam_register]" id="spam_register" class="checkboxField" value="1" {if $smarty.session.set_ses.spam_register == 1 } checked="checked"{/if} />

また、PHPで$_POSTまたは$_GETを使用してフォームにアクセスできるように、フォームに値を設定することを忘れないでください。

于 2012-06-17T12:18:49.033 に答える