带有 echo 单选按钮值的未定义索引 PHP

Undefined index PHP with echo radio buttons value

提问人: 提问时间:5/4/2018 最后编辑:Barmar 更新时间:5/4/2018 访问量:468

问:

<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'] . '&nbsp' . $_POST['radio1'] . '&nbsp' . $_POST['radio2'] . '&nbsp' . $_POST['radio3'] . '&nbsp' . $_POST['radio4'];
        echo $radio;
    }
}
?>

我是PHP的初学者,现在正在学习它,但我似乎不能丢失未定义的索引消息。如果我选择全部,那么它不会给出不好的信息。有人可以解释一下我如何使用此代码解决此问题,以及将来如何使用其他代码解决此问题。

我感谢你抽出时间。

php 未定义索引

评论

2赞 John Conde 5/4/2018
所有这些单选按钮都必须具有相同的名称。这就是它们组合在一起的方式。
1赞 Funk Forty Niner 5/4/2018
这个>>>是一个错别字。<value="Klik"
1赞 Barmar 5/4/2018
You don't need to use isset()' 和相同的变量。 做自己的检查。!empty()empty()isset()
0赞 Hampus Brynolf 5/4/2018
你得到 undefined-index,因为索引是 undefined。
2赞 Barmar 5/4/2018
你的 HTML 非常错误。 元素不是容器,它们没有标签。<input></input>

答:

-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'] . '&nbsp' . $_POST['radio1'] . '&nbsp' . $_POST['radio2'] . '&nbsp' . $_POST['radio3'] . '&nbsp' . $_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()