2012-06-17 73 views
2

我有一個表:節能設置爲數據庫

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

顯示這些設置。 settingdisplay.php其顯示這些設置HTML的

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

一部分。

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

這個固定我的問題。謝謝你的迴應。

+3

複選框的值將被髮送**只有**如果他們被檢查! – undone

+0

我已經勾選了複選框,但是他們沒有來到另一邊。我喜歡從複選框中獲得1或0。 – Lalajee

+0

對不起,它只顯示這個複選框的部分。我沒有完整的html代碼,因爲它們很多。 – Lalajee

回答

1

僅當複選框的值被選中時纔會發送複選框的值! - 死亡

所以,你需要的東西是這樣的:

if (!isset($_POST['txt_setting[spam_register]']) $_POST['txt_setting[spam_register]'] = 0; // 0 value 
+0

我可以用sinlge值$ _POST ['txt_setting [spam_register]'] =='on'來做到這一點? 1:0; – Lalajee

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訪問它們。

+0

哦,複選框只會在被檢查時傳遞數據。因此,如果您選中了保留值1的複選框,那麼您只會獲得一個數據。請記住在表單中放入值。 –

+0

我有很多的設置,我喜歡用1和0值的複選框。如果複選框被選中,那麼如果其未選中的值爲0,則值爲1 – Lalajee