我想将表单数据提交到数据库中,但首先应该在插入前通过选择选项进行筛选。下面是我的表单视图:
<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
?讲得通?
提前谢谢。
发布于 2018-06-13 04:42:41
您需要修改您的switch case,switch应该是一个可以计算为不同值的变量,而case就是这些值:
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“:
switch($some_val){
case "1":
echo "you entered a 1!";
break;
default:
echo "You didn't enter a 1!!";
break;
}
发布于 2018-06-13 04:41:45
更改此设置:
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;
}
}
要这样做:
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语句的简写。
https://stackoverflow.com/questions/50825428
复制相似问题