[英]Php submit form with select option condition
我想将表单数据提交到数据库中,但首先应在插入之前通过选择选项对其进行过滤。 以下是我的表单视图:
<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
仍然you choose 1
显示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
关键字用作最后一种情况,在切换用例的情况下,它用作“ else”:
switch($some_val){
case "1":
echo "you entered a 1!";
break;
default:
echo "You didn't enter a 1!!";
break;
}
更改此:
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']
来将值赋给变量要安全$_POST['choose']
。 现在,我们有一个适当的变量可以进行测试,并且可以达到3个测试用例之一。 使用三元运算符只是if语句的简捷方式。
在您的摘要中,您的开关使用不正确。 应该是这样的:
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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.