带有回显单选按钮值的未定义索引 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 的初学者,正在学习它,但我似乎无法丢失未定义的索引消息。如果我选择全部,那么它不会给出不好的信息。谁能解释一下我如何用这段代码解决这个问题,以及我以后如何用另一个代码解决这个问题。
感谢您的宝贵时间。
更好的方法,因为我猜你真的在寻找单选框和复选框的组合,并且你想输出选中的选项:
<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>";
}
}
?>
您只是在第一个单选按钮的 $_POST
变量上调用 isset()
。您需要检查所有 单选按钮是否已设置。如果其中任何一个未设置,您将收到该警告。
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;
}
1) 删除 <input name="submit" type="submit" <value="Klik"></input>
中 "value" 之前的拼写错误“<”
2)这是毫无意义的:"empty($_POST['submit']"
3)所有单选按钮应该有相同的名称,而不是"radio1"、"radio2"等,如果你想能够select/deselect多个,也许在这里使用复选框会更好选项
4)你得到错误的唯一原因是因为你正在检查 "radio" 变量是否存在 isset($_POST['radio'])
至于其他无线电输入你只是检查它们是否具有任何类型的值: ($_POST['radio1'])
,你应该在检查它们的值之前检查它们是否都存在 :)
<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 的初学者,正在学习它,但我似乎无法丢失未定义的索引消息。如果我选择全部,那么它不会给出不好的信息。谁能解释一下我如何用这段代码解决这个问题,以及我以后如何用另一个代码解决这个问题。
感谢您的宝贵时间。
更好的方法,因为我猜你真的在寻找单选框和复选框的组合,并且你想输出选中的选项:
<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>";
}
}
?>
您只是在第一个单选按钮的 $_POST
变量上调用 isset()
。您需要检查所有 单选按钮是否已设置。如果其中任何一个未设置,您将收到该警告。
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;
}
1) 删除 <input name="submit" type="submit" <value="Klik"></input>
中 "value" 之前的拼写错误“<”
2)这是毫无意义的:"empty($_POST['submit']"
3)所有单选按钮应该有相同的名称,而不是"radio1"、"radio2"等,如果你想能够select/deselect多个,也许在这里使用复选框会更好选项
4)你得到错误的唯一原因是因为你正在检查 "radio" 变量是否存在 isset($_POST['radio'])
至于其他无线电输入你只是检查它们是否具有任何类型的值: ($_POST['radio1'])
,你应该在检查它们的值之前检查它们是否都存在 :)