我有一张桌子:
CREATE TABLE siteConfig (
settingName VARCHAR(64) NOT NULL,
value VARCHAR(255),
PRIMARY KEY (settingName)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
显示这些设置。 settingdisplay.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> </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;
}
这解决了我的问题。谢谢你的回应。
答案 0 :(得分:1)
复选框的值只有在被选中时才会被发送! - 死亡
所以你需要这样的东西:
if (!isset($_POST['txt_setting[spam_register]']) $_POST['txt_setting[spam_register]'] = 0; // 0 value
答案 1 :(得分:0)
如果您需要特定选项的值为One或Zero,我建议使用无线电。
<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来访问它们。