我遇到了一些问题,你们可以在我的代码中看到,我有一个foreach循环遍历我的img文件夹,显示所有图像,我遗漏了图像的正确样式,因为问题是每张图片中的形式。
我需要从无线电输入中获取值,所以我可以告诉我的其他脚本从DB中选择ID与输入值相同的所有信息。
我需要一个if语句,这样如果没有设置,我可以显示一些内容,说你需要选择一个收音机才能收听任何电台。
但我的if语句仍然显示'错误',即使我点击了按钮
我希望有人可以帮助我:)
if(isset($_POST['submitRadio')):
$test = $_POST['radio'];
echo $test;
else:
echo 'error';
endif;
foreach(glob('img/radios/big/*.png') as path):
printf('
<form method="post">
<input class="hidden" type="text" name="radio" value="1">
<input type="submit" name="submitRadio" value="Go!">
</form>
');
endforeach;
在做了GolezTrol告诉我的事情之后:
<div class="row text-center">
<?php
$sql = "SELECT * FROM radio";
$stmt = $Db->dbh->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
if(isset($_POST['submitRadio'])):
$test = $_POST['submitRadio'];
echo $test;
else:
echo 'error';
endif;
?>
<form method="post">
<?
foreach($result as $radio):
printf('
<button type="submit"
name="submitRadio"
value="'.$radio['id'].'">
Go!
</button>
');
?>
</form>
答案 0 :(得分:2)
我已删除了之前的解决方案。我只是看到你没有实际的单选按钮但隐藏的元素,所以基本上按钮是无线电。 这改变了一点,因为你实际上有我之前提出的替代建议:按钮本身作为radiobuttons工作,立即发布所选的选项。
要解决您的问题,您可以使用button
代替input
来提交表单。在一个按钮中,您可以使标题和值彼此不同,因此您只需将id
(或文件名,或任何您需要的)放在按钮的值中,并且不需要隐藏的输入。按钮标记的内容是它获得的标题,因此代码可能如下所示:
if(isset($_POST['selectedFile')):
$test = $_POST['selectedFile'];
echo $test;
else:
echo 'error';
endif;
?><form method="post"><? // Open the form outside of the loop
foreach(glob('img/radios/big/*.png') as path):
// Not sure what you want to do here. Put the filename instead of
// "1" in the value?
$filename = basename($path, '.png');
?>
<button type="submit"
name="selectedFile"
value="<?=$filename?>">
Go!
</button>
<?
endforeach;
?></form><? // Close the form
在这个例子中,我已经将表单标签拉出循环,因为严格来说你只需要一个表单。但由于现在根本没有单选按钮,每个按钮也可以有一个表格。它仍然有效。
顺便说一句,我看到你在评论中提到了一个数据库。当然,我没有考虑到这一点,因为你在问题中没有提到这一点。无论如何,它不应该改变基本概念,只能改变“价值”的方式。确定了。
答案 1 :(得分:0)
首先,radio标签中的值代码始终为1.因此,如果选择了任何单选按钮,您将始终获得1.而value子句应该具有文件名。这样你就可以知道选择了哪个图像(单选按钮)。
如果没有选择任何图像(单选按钮),您可以使用
if (!isset($_POST['radio']))<br>{<br>//php code }