我有 HTML 多选框:
<option value="1">First selection item</option>
<option value="2">Another selection item</option>
<option value="3">Third selection item</option>
通过 jQuery,我向 PHP 发送 POST 请求,然后我正在检查..:
switch( $value ) :
case 1:
$firstItem = 1;
break;
case 2:
$anotherItem = 1;
break;
case 3:
$thirdItem = 1;
break;
default:
$firstItem = $anotherItem = $thirdItem = 0;
endswitch;
然后...
$stmt = $this->db->prepare( "UPDATE myTable SET firstItem = ?, anotherItem = ?, thirdItem = ? WHERE Nickname = ?" );
$stmt->execute( array( $firstItem, $anotherItem, $thirdItem, $nickname ) );
而且我不知道为什么代码不起作用。例如,如果我只选择 option with value = 2
然后 $firstItem = NULL
和 $thirdItem = NULL
。我认为对每一个可能的选择都做很多假设是愚蠢的。我需要做这个:
option 1 selected --- $firstItem = 1, $anotherItem = $thirdItem = 0;
option 1,2 selected - $firstItem = $anotherItem = 1, $thirdItem = 0;
是的.. 如果有任何选择($value = 0
)则$firstItem = $anotherItem = $thirdItem = 0
有什么建议吗?提前致谢。
最佳答案
Switch 只做 1 种情况,您希望始终先将它们设置为 0。
应该这样做:
$firstItem = ($value == 1) ? 1 : 0;
$anotherItem = ($value == 2) ? 1 : 0;
$thirdItem = ($value == 3) ? 1 : 0;
只有当 $value
不是 1、2 或 3 时,默认情况下才会运行,这就是您得到空值的原因。此外,switch 仅跟随一个分支(或一个分支和所有后续分支,如果没有 break),因此您应该像上面那样使用 if 语句或三级语句。如果您可以将 true/false 作为您的变量值(而不是 1/0),您只需执行 $firstitem = ($value == 1);
关于javascript - PHP switch case HTML 多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571724/