我有一个选择列表,如下面的表格。选择列表,并在SQL中提交一个NULL
<select name="0[voicemail]" >
<option value="" selected="selected"></option>
<option value="800">800</option>
<option value="801">801</option>
<option value="802">802</option>
<option value="803">803</option>
<option value="805">805</option>
<option value="807">807</option>
<option value="808">808</option>
<option value="809">809</option>
<option value="810">810</option>
<option value="811">811</option>
<option value="820">820</option>
<option value="830">830</option>
<option value="831">831</option>
<option value="9778">9778</option>
<option value="9995">9995</option>
</select>
这是由一些Kohana PHP代码生成的。
$id = 0;
$disabled = '';
foreach ($line_detail as $line){
echo '<tr class="d'.($id & 1).'">';
echo '<td>'.$line->did.form::hidden($id."[did]", $line->did).'</td>';
echo '<td>'.form::input($id."[cid_prefix]", $line->cid_prefix).'</td>';
echo '<td>'.$line->type.'</td>';
echo '<td>'.form::input($id."[ivr_context]", $line->ivr_context, "disabled='true'").'</td>';
if ($line->ivr_context != ''){
$disabled = "disabled='true'";
echo '<td>'.form::input(array('name'=>$id."[dial_timeout]", 'size'=>15,
'maxlength'=>3), $line->dial_timeout, $disabled).
form::hidden($id."[dial_timeout]", $line->dial_timeout).'</td>';
echo '<td>'.form::dropdown($id."[voicemail]", $phones, $line->voicemail, $disabled).
form::hidden($id."[voicemail]", $line->voicemail).'</td>';
} else {
echo '<td>'.form::input(array('name'=>$id."[dial_timeout]", 'size'=>15,
'maxlength'=>3), $line->dial_timeout, $disabled).'</td>';
echo '<td>'.form::dropdown($id."[voicemail]", $phones, $line->voicemail, $disabled).'</td>';
}
echo '<td>'.form::input($id."[notes]", $line->notes).'</td>';
echo "</tr>";
$id++;
}
并非所有都显示,但基本上这些选项都在$ phones变量中。
现在的问题。 当我使用表单提交时,一切都很好,直到我选择提交中的空值。 这是$细节等同于$ _ POST
foreach($detail as $key => $val){
$this->db->query("UPDATE dids SET cid_prefix=?, dial_timeout=?, voicemail=?, notes=? WHERE did=?",
array($val['cid_prefix'],
$val['dial_timeout'],
$val['voicemail'],
$val['notes'],
$val['did']));
这里的问题是,我设置为空选项的值是“NULL”的方法里面,但因为Kohana中增加了周围的一切逗号它插入它将尝试将“NULL”放入数据库而不是NULL。在这种情况下,这将违反外键约束。
是否有一种简单的方法来处理PHP/Kohana中的NULL,这样我就不必检查空白并重写每个可能包含NULL的查询一次以上。 当你可以得到多个有效的NULL时会发生什么?肯定有办法简单地处理这些类型的情况?
没有。其实我不认为这种形式很丑陋。我看到了更糟的情况。也许你可以给我一个更好的方法? – Matt 2010-07-04 22:09:43