首页 > 解决方案 > 带有选择选项条件的 PHP 提交表单

问题描述

我想将表单数据提交到数据库中,但首先应该在插入之前通过选择选项对其进行过滤。下面是我的表单视图:

<form method="POST">
<input type="text" name="name" placeholder="Your Name" />
<input type="text" name="username" placeholder="Username"/>
<select name="choose">
    <option value="1">One</option>
    <option value="2">Two</option>
</select>
<button type="submit" name="submit">Submit</button>
<!-- <input type="submit" name="submit" value="Submit" /> -->

这是过程形式:

if(isset($_POST['submit'])) {
switch(true) {
    case  ( isset($_POST['choose']) == "1" ):
        echo "you choose 1";
        break;
    case  ( isset($_POST['choose']) == "2" ):
        echo "you choose 2";
        break;
    case  ( isset($_POST['choose']) == "" ):
        echo "you didn't choose anything";
        default;
}
echo "<pre>";
print_r($_POST);
echo "</pre>";

}

例如,如果我选择Two,结果是:

you choose 1
Array
(
    [name] => aaaaaaaa
    [username] => bbbbbbbbb
    [choose] => 2
    [submit] => 
)

仍在显示you choose 1的是第一种情况。在将数据发送到数据库之前,我应该如何过滤数据?至少我怎么能知道数据的状态,无论是 in1, 2,还是you didn't choose anything?说得通?

提前致谢。

标签: phpforms

解决方案


您需要重新设计您的 switch 案例,switch 应该是一个可以评估为不同值的变量,案例是这些值:

switch($_POST['choose']){
    case "1":
        echo "you choose 1";
        break;
    case "2":
        echo "you choose 2";
        break;
    case "":
        echo "you didn't choose anything";
        break;
}

default没有任何 case 与 value 匹配时,关键字可以用作最后一个 case,它在 switch case 场景中充当“else”:

switch($some_val){
    case "1":
        echo "you entered a 1!";
        break;
    default:
        echo "You didn't enter a 1!!";
        break;
}

推荐阅读