作业问题如下:
我创建了这个函数,如下所示:
function getToppings($toppings){
if($toppings=='') {
echo 'You have to select at least one topping';
die();
}//if
foreach($toppings as $index => $selected) {
$toppings[$index] = $selected;
echo $selected;
echo '<br />';
}//foreach
}//function
HTML
<form name="select-topping" method="post">
<label for="toppings">Peperoni</label>
<input type="checkbox" name="toppings[]" value="peperoni">
<br />
<label for="toppings">Salami</label>
<input type="checkbox" name="toppings[]" value="salami">
<br />
<label for="toppings">Ham</label>
<input type="checkbox" name="toppings[]" value="ham">
<br >
<label for="toppings">Mushroom</label>
<input type="checkbox" name="toppings[]" value="mushroom">
<button type="submit" name="submit" class="btn btn danger">Submit</button>
</form>
功能调用
if(isset($_POST['submit'])){
getToppings($_POST['toppings']);
}
这些功能完美无缺,并且可以打印选中的所有浇头,但是当没有选择浇头时,我的问题会出现(验证)
如果没有选择顶部,我会得到以下错误:
所以尽管我的表格有效,但我仍然得到错误未定义的变量:
现在我很确定我知道为什么会收到错误消息,这是因为如果没有选择配件,没有参数传递给函数......是否正确?我不知道的是如何修复/改进它......任何建议或帮助表示赞赏。
答案 0 :(得分:2)
在你的函数调用中,你没有检查是否设置了$_POST['toppings']
,然后再将它传递给getToppings()
,修改你的函数调用:
if(isset($_POST['submit']) && isset($_POST['toppings'])){
getToppings($_POST['toppings']);
} elseif(isset($_POST['submit']) && !isset($_POST['toppings'])){
getToppings('');
}
修改强>
这是另一种方法,因为你选择的索引没有被设置,你必须在调用之前检查它,没有别的办法。所以你可以这样做:
if(isset($_POST['submit'])){
getToppings((isset($_POST['toppings'])) ? $_POST['toppings'] : '');
}