提问人: 提问时间:5/4/2018 最后编辑:Barmar 更新时间:5/4/2018 访问量:468
带有 echo 单选按钮值的未定义索引 PHP
Undefined index PHP with echo radio buttons value
问:
<h1> Hotel kamer reservering </h1>
<br><br>
<form method="POST">
<input name="radio" type="radio" value="éénpersoonskamer">éénpersoonskamer</input><br><br>
<input name="radio1" type="radio" value="tweepersoonskamer">tweepersoonskamer</input><br><br>
<input name="radio2" type="radio" value="ontbijt">ontbijt</input><br><br><br>
<input name="radio3" type="radio" value="lunch">lunch</input><br><br><br>
<input name="radio4" type="radio" value="diner">diner</input><br><br><br>
<input name="submit" type="submit" <value="Klik"></input>
</form>
<?php
if(isset($_POST['submit']) and ! empty($_POST['submit'])) {
if(isset($_POST['radio']) || ($_POST['radio1']) || ($_POST['radio2']) || ($_POST['radio3']) || ($_POST['radio4']) ) {
$radio = $_POST['radio'] . ' ' . $_POST['radio1'] . ' ' . $_POST['radio2'] . ' ' . $_POST['radio3'] . ' ' . $_POST['radio4'];
echo $radio;
}
}
?>
我是PHP的初学者,现在正在学习它,但我似乎不能丢失未定义的索引消息。如果我选择全部,那么它不会给出不好的信息。有人可以解释一下我如何使用此代码解决此问题,以及将来如何使用其他代码解决此问题。
我感谢你抽出时间。
答:
-1赞
Hampus Brynolf
5/4/2018
#1
更好的方法,因为我想您确实在寻找单选框和复选框的组合,并且您想要输出选中的选项:
<h1> Hotel kamer reservering </h1>
<br><br>
<form method="POST">
<input name="roomtype" type="radio" checked="checked" value="éénpersoonskamer">éénpersoonskamer <br><br>
<input name="roomtype" type="radio" value="tweepersoonskamer">tweepersoonskamer <br><br>
<input name="food[]" type="checkbox" value="ontbijt">ontbijt <br><br><br>
<input name="food[]" type="checkbox" value="lunch">lunch <br><br><br>
<input name="food[]" type="checkbox" value="diner">diner <br><br><br>
<input name="submit" type="submit">
</form>
<?php
if(!empty($_POST['submit'])) {
echo "roomtype: " . $_POST['roomtype'] . "<br>";
$food = $_POST['food'];
foreach ($food AS $k => $v) {
echo "Food $k = $v<br>";
}
}
?>
评论
0赞
5/4/2018
你似乎必须有最好的答案,我稍后会检查并让你知道👍🏼
0赞
5/6/2018
你的答案奏效了,对于像我这样的初学者来说,这是一个很好的解释。感谢您抽出宝贵时间接受采访。带有复选框的单选按钮是一个完美的解决方案。你考虑了一下,效果很好。谢谢
1赞
Barmar
5/4/2018
#2
您只调用第一个单选按钮的变量。您需要检查是否设置了所有单选按钮。如果未设置其中任何一个,您将收到该警告。isset()
$_POST
if(isset($_POST['radio'], $_POST['radio1'], $_POST['radio2'], $_POST['radio3'], $_POST['radio4']) ) {
$radio = $_POST['radio'] . ' ' . $_POST['radio1'] . ' ' . $_POST['radio2'] . ' ' . $_POST['radio3'] . ' ' . $_POST['radio4'];
echo $radio;
}
评论
0赞
5/4/2018
有什么区别?
0赞
Barmar
5/5/2018
您是否从每个无线电组中选择了某些内容?只有当所有参数都有值时,它才会回显某些内容。$_POST['radioX']
0赞
MrTaikoDrummer
5/4/2018
#3
1) 删除 2) 中“value”之前的错别字“<”,这是没有意义的: 3)所有单选按钮都应具有相同的名称,而不是“radio1”,“radio2”等,如果您希望能够选择/取消选择多个选项,也许最好在此处使用复选框
4)您收到错误的唯一原因是因为您正在检查“radio”变量是否存在,而对于其他无线电输入,您只检查它们是否具有任何类型的值:,您应该在检查它们的值之前检查它们是否都存在:)<input name="submit" type="submit" <value="Klik"></input>
"empty($_POST['submit']"
isset($_POST['radio'])
($_POST['radio1'])
评论
0赞
5/4/2018
我不明白最后一部分,我该如何解决这个问题?
0赞
MrTaikoDrummer
5/4/2018
您需要将每个更改为等。($_POST['radio1'])
isset($_POST['radio1'])
0赞
5/6/2018
if(!empty($_POST['submit'])) 有什么作用?如果它不为空,它将启动函数吗?
0赞
MrTaikoDrummer
5/7/2018
事实上,函数检查变量是否为空,如果是空,则返回 TRUE。但是,您在函数之前有一个感叹号,这意味着您正在检查它是否不为空。empty()
评论
<value="Klik"
You don't need to use
isset()' 和相同的变量。 做自己的检查。!empty()
empty()
isset()
<input>
</input>