在PHP中回显多个复选框的图像?

时间:2015-09-22 20:10:21

标签: php checkbox

我正在制作一个带有披萨上浇头复选框的网站。 我有一个问题,每当我选择一个顶部它确实显示和顶部的图像,但如果我选择两个浇头它仍然只显示一个图像。 我怎样才能使它与多个复选框的图像相呼应?

这是我的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>

对不起它用荷兰语。

2 个答案:

答案 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循环中。