在Dropdown中创建第一个值(' -select - ')为NULL

时间:2012-12-14 17:22:05

标签: php forms codeigniter

我们有一个带有一些可选值的表单,这些值包含在下拉列表中。当新用户打开表单时,下拉列表中的默认值应为“-select-”。用户选择的值将发送到我们的数据库。这一切现在都可以正常工作,除了我们没有列出'-select-'作为第一个选项,默认是我们数据库中列出的第一个选项。

我正在尝试添加'-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>

我尝试在“echo form_dropdown”上面添加此文本,但它似乎不起作用:

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

由于

4 个答案:

答案 0 :(得分:3)

HTML不像PHP那样支持“null”值,因为它是一种标记语言(XML),而不是像PHP这样的编程语言。

因此你不能给它一个NULL值。你最接近它的方法是在PHP中查找值“NULL”并将其值设置为NULL,或者只是允许选项的值为空,在PHP中将空白值评估为NULL。

答案 1 :(得分:1)

  1. 将“选择”作为列表中的选择之一
  2. 将select的值设为“”(即无值),例如:( '' => 'Select' )
  3. 在表单上运行表单验证(无论如何你都应该这样做)。将下拉列表设为“必需”
  4. 如果用户没有选择任何内容,表单验证将失败,因为他们没有“选择”某些内容。

答案 2 :(得分:1)

在您填充$ pricing_profiles的控制器中,在那里添加选择。例如,如果您将数据传递给$ data中的视图,它将如下所示:

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

答案 3 :(得分:0)

所以我是公司的首席执行官,我的CTO今天就出去了(现在只是我们公司的两个人,所以我尽可能尝试编码),这就是我提出这个问题的原因。然而结果他进来了,我们看了答案,非常感谢!通过我们的控制器设置方式,我们发现了一个略有不同的解决方案。

在视图文件中我们添加了:

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'),