2012-12-14 140 views
1

我們有一個窗體,其中包含一些可選值,它們包含在下拉列表中。當新用戶打開表單時,下拉列表上的默認值應該是'-select-'。用戶選擇的值被髮送到我們的數據庫。現在,這一切都正常運行,除了我們沒有將'-select-'列爲第一個選項外,缺省值是我們的數據庫中列出的第一個選項。在下拉列表中選擇第一個值('-select-')NULL

我正在嘗試添加'-select-',但是當我用'-select-'提交表單時仍然選擇了數據庫錯誤。

<div class="control-group"> 
<label class="control-label">Pricing Profile: </label> 
<div class="controls"> 
    <?php 
    echo form_dropdown('pricing_profile_id', $pricing_profiles, 
       $profile->pricing_profile_id,' class="span3" id="pricing_profile_id" '); 
    ?> 
</div> 
</div> 

我嘗試添加在這上面的文字的「回聲form_dropdown」,但它似乎不工作:

array_unshift($pricing_profiles, array(0 => "-select-")); 

感謝

回答

1
  1. 有「選擇」的選作爲一個在您的列表中
  2. 具有select爲「」(即無值)的值,例如:('' => 'Select')
  3. 在窗體上運行窗體驗證(無論如何你應該這樣做)。使下拉列表「必需」
  4. 如果用戶沒有選擇任何內容,表單驗證失敗,因爲他們沒有「選擇」某些內容。
3

HTML不支持「null」值,因爲它是一種標記語言(XML),而不是像PHP這樣的編程語言。

因此你不能給它一個NULL值。最接近它的是通過在PHP中查找「NULL」值並將其值設置爲NULL,或者只是允許該選項的值爲空,在PHP中將空白值評估爲NULL。

+0

謝謝你的答案! – dlm423

+1

謝謝瑞克......我得不到15個聲望,但我會加註你的答案。 – dlm423

0

在你的控制器中你正在填充$ pricing_profiles在那裏添加select。例如,如果你傳遞的數據在$數據視圖它是這樣的:

$data['pricing_profiles'] = whatever you are doing to populate this array; 
$data['pricing_profiles'][0] = '-select-'; 

然後在你的表單驗證你做一個回調函數

$this->form_validation->set_rules('pricing_profile_id','Pricing Profile',callback_checkPricingProfile); 


function checkPricingProfile($pricing_profile_id) 
{ 
    if($pricing_profile_id==0) 
    { 
     return false; 
    } 
} 
0

所以我是CEO公司和我的首席技術官今天出局了(這只是我們公司中的兩個人,所以我儘可能編碼),這就是我問這個問題的原因。然而事實證明,他進來了,我們看了答案,非常感謝!隨着我們控制器的設置,我們發現了一個稍微不同的解決方案。

在視圖文件中,我們補充說:

array_unshift($pricing_profiles, "-select-"); 

內,我們創建一個名爲$ companies_profiles_data陣列控制器,它包含多個值,其中之一是pricing_profile_id。我們在設置值的行上添加了一個三元運算符。

'pricing_profile_id' => (strcmp($this-> input-> post('pricing_profile_id'),'0')==0) 
? NULL : $this-> input-> post('pricing_profile_id'), 
相關問題