我正在制作一个带有披萨上浇头复选框的网站。 我有一个问题,每当我选择一个顶部它确实显示和顶部的图像,但如果我选择两个浇头它仍然只显示一个图像。 我怎样才能使它与多个复选框的图像相呼应?
这是我的index.php,用于复选框和值:
<html>
<head>
</head>
<body>
<form action="process.php" method="POST">
<h4>Kies een Pizza:</h4><br>
<input type="checkbox" name="check[]" value="Pepperoni">Pepperoni<br>
<input type="checkbox" name="check[]" value="Ananas">Ananas<br>
<input type="checkbox" name="check[]" value="Ansjovis">Ansjovis<br>
<input type="checkbox" name="check[]" value="Broccoli">Broccoli<br>
<h4>Kies een bodem:</h4><br><br>
Megadik: <input type="radio" name="bodem" value="Megadik"><br>
Dun: <input type="radio" name="bodem" value="Dun"><br>
Calzone: <input type="radio" name="bodem" value="Calzone"><br>
</p>
<p>
<input type="submit" name="submit[]" value="Koop Pizza">
</p>
</form>
<br/><br/>
<a href="http://phpopdracht.esy.es">Home</a>
</body>
</html>
这是我需要发生的process.php:
<html>
<?php
if(isset($_POST['bodem']) && ($_POST['check'])){
$bodem = $_POST["bodem"];
echo("Je koos een pizza met:<br/> ");
}
else{
echo("Geen pizza gekozen!");
}
$selected_radio = $_POST['bodem'];
if(isset($_POST['submit'])){}
if(!empty($_POST['check'])){}
foreach($_POST['check'] as $selected){
echo $selected."</br>";
}
//Toppings
if (($selected == 'Pepperoni')) {
echo "<IMG SRC=\"pepperoni.jpg\">";
}
if (($selected == 'Ananas')) {
echo "<IMG SRC=\"ananas.jpg\">";
}
if (($selected == 'Ansjovis')) {
echo "<IMG SRC=\"ansjovis.jpg\">";
}
if (($selected == 'Broccoli')) {
echo "<IMG SRC=\"broccoli.jpg\">";
}
//Bodems
if(($selected_radio == 'Megadik')) {
echo ("<p>En de bodem Megadik</p>");
echo "<IMG SRC=\"megadik.jpg\">";
}
if(($selected_radio == 'Dun')) {
echo ("<p>En de bodem Dun</p>");
echo "<IMG SRC=\"dun.jpg\">";
}
if(($selected_radio == 'Calzone')) {
echo ("<p>En de bodem Calzone</p>");
echo "<IMG SRC=\"calzone.png\">";
}
?>
<br/><br/>
<a href="http://phpopdracht.esy.es">Home</a>
</html>
对不起它用荷兰语。
答案 0 :(得分:1)
您收到此错误是因为您在循环中更改了$selected
的值,但在完成后在循环外部检查它:
只需在循环中应用图像,就可以让自己的生活更轻松:
foreach($_POST['check'] as $selected){
echo $selected."</br>";
echo "<IMG SRC=\"{$selected}.jpg\">";
}
以下是工作示例:https://eval.in/437716
答案 1 :(得分:1)
执行此代码时会发生什么:
foreach ($_POST['check'] as $selected){
echo $selected."</br>";
}
在每次迭代中,您都会回显该值。但是,当foreach
超过$selected
时,值是$_POST['check']
的最后一个值。因此,只会根据if
语句检查您的最后一个值。
答案是 - 将您的if
语句移到foreach
循环中。