Php提交表格,带有选择条件

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (99)

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

<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是指第一种情况。在将数据发送到数据库之前,我该怎么做才能过滤数据?至少我怎么能知道数据的状态,无论是在1, 2,you didn't choose anything?合理?

提前致谢。

提问于
用户回答回答于

你需要重新设计你的开关盒,开关应该是一个可以评估不同值的变量,例子是这些值:

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当没有任何案例与值匹配时,关键字可用作最后一种情况,它在交换机案例场景中充当“其他”:

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

在您的代码段中,您的交换机使用不正确。它应该是这样的:

switch($_POST['choose']) { // what is being compared
    case 1: // what if it's 1
        echo "you choose 1";
        break;
    case 2: // what if it's 2
        echo "you choose 2";
        break;
    default: // what else
        echo "you didn't choose anything";
        break;
}

但在你的情况下默认是没有任何东西,因为你有固定的选项。

另外,isset()只知道变量是否存在。它不会告诉你它的价值。它被认为做了类似的事情

if(isset($_POST['variable'])){
    $variable = $_POST['variable'];
}else{
    $variable = "";
}

然后你会使用新的$variable

这很有用,因为如果尝试获取未定义的变量,某些代码将无法工作。

编辑(感谢GrumpyCrouton):

或者简短的版本:

$variable = isset($_POST['variable']) ? $_POST['variable'] : '';

=您说出条件之后的第一个(之后)之后,在?您说出值的时候true和之后:的值false

扫码关注云+社区

领取腾讯云代金券