javascript - PHP switch case HTML 多选

标签 javascript php jquery html

我有 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/

相关文章:

javascript - 反馈加载 iframe 有时效果不佳

javascript - 如何在指南针上显示风向

php - 使用 XAMPP 连接到外部数据库的 MySQL

javascript - 如何使类型 =“text” 不键入减号 (-)?

javascript - 使用 JavaScript 定位元素时 Div 对样式无响应

php - "zip I/O error: Permission denied"执行命令

php - 从 PHP 中的多维数组中删除重复数组

javascript - Moment.js 和 moment timezone 获取当前时间(以秒、分钟和小时为单位)

jQuery:过滤下拉列表仍然显示过滤后的第一个元素

javascript - 数据表: click on button does not open view