首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有select选项条件的Php提交表单

带有select选项条件的Php提交表单
EN

Stack Overflow用户
提问于 2018-06-13 04:33:01
回答 2查看 336关注 0票数 0

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

代码语言:javascript
复制
<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" /> -->

这是过程表单:

代码语言:javascript
复制
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,结果是:

代码语言:javascript
复制
you choose 1
Array
(
    [name] => aaaaaaaa
    [username] => bbbbbbbbb
    [choose] => 2
    [submit] => 
)

其中仍在显示的you choose 1指的是第一种情况。在将数据发送到数据库之前,我应该如何对数据进行过滤?至少我怎么知道数据的状态,不管它是1, 2,还是you didn't choose anything?讲得通?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-13 04:42:41

您需要修改您的switch case,switch应该是一个可以计算为不同值的变量,而case就是这些值:

代码语言:javascript
复制
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关键字可以用作最后一个案例,它在切换案例场景中充当"else“:

代码语言:javascript
复制
switch($some_val){
    case "1":
        echo "you entered a 1!";
        break;
    default:
        echo "You didn't enter a 1!!";
        break;
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-13 04:41:45

更改此设置:

代码语言:javascript
复制
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;
    }
}

要这样做:

代码语言:javascript
复制
if(isset($_POST['submit'])) {
$choose = isset($_POST['choose']) ? $_POST['choose'] : '';
switch($choose) {
    case  "1" :
        echo "you choose 1";
        break;
    case  "2" :
        echo "you choose 2";
        break;
    default;
        echo "you didn't choose anything";            
    }
}

isset()仅返回true/false值。当您使用它的方式时,这可能会导致意外/意外的行为。如果你要使用开关柜,你需要一些东西来测试。而且true不是一个合适的测试。true永远只会是1。因为0表示false,而任何其他值都是true。但是关键字true实际上只是一个1。

因此,将值赋给变量比在开关中使用$_POST['choose']测试要安全得多。现在我们有了一个合适的变量来测试,并且我们可以到达我们3个测试用例中的一个。使用三元运算符只是if else语句的简写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50825428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档