无法从多种形式获取 $_POST 值
Cant get $_POST values from multiple forms
我遇到了一点问题,你们可以在我的代码中看到,我有一个 foreach 循环遍历我的 img 文件夹,显示所有图像,我遗漏了图像的正确样式,因为问题是每个图像中的形式。
我需要从无线电输入中获取值,因此我可以告诉我的其他脚本 select 来自数据库的所有信息,其中 ID 与输入具有相同的值。
我需要一个 if 语句,这样如果没有任何设置,我可以显示一些内容,说明您需要 select 收音机才能收听任何电台。
但是我的 if 语句一直显示 'error',即使我点击了按钮
我希望有人能帮助我:)
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>
我已经删除了我以前的解决方案。我只是看到你没有实际的单选按钮,而是隐藏的元素,所以按钮基本上就是收音机。
这会稍微改变它,因为您实际上有我之前提出的替代建议:按钮本身用作单选按钮,可以立即 post 选择的选项。
要解决您的问题,您可以使用 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
在这个例子中,我将表单标签从循环中移除,因为严格来说你只需要一个表单。但是由于现在根本没有单选按钮,您也可以为每个按钮创建一个表单。它仍然有效。
对了,我看到你在评论中提到了一个数据库。当然我没有考虑到这一点,因为你没有在问题中提到这一点。无论如何,它应该不会改变基本概念,只是确定'value'的方式。
首先,单选标记中的值代码始终为 1。因此,如果选择任何单选按钮,您将始终获得 1。取而代之的是,值子句应包含文件名。这样您就可以知道选择了哪个图像(单选按钮)。
对于所选图像(单选按钮)的none,您可以使用
if (!isset($_POST['radio']))<br>{<br>//php code }
我遇到了一点问题,你们可以在我的代码中看到,我有一个 foreach 循环遍历我的 img 文件夹,显示所有图像,我遗漏了图像的正确样式,因为问题是每个图像中的形式。
我需要从无线电输入中获取值,因此我可以告诉我的其他脚本 select 来自数据库的所有信息,其中 ID 与输入具有相同的值。
我需要一个 if 语句,这样如果没有任何设置,我可以显示一些内容,说明您需要 select 收音机才能收听任何电台。
但是我的 if 语句一直显示 'error',即使我点击了按钮
我希望有人能帮助我:)
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>
我已经删除了我以前的解决方案。我只是看到你没有实际的单选按钮,而是隐藏的元素,所以按钮基本上就是收音机。 这会稍微改变它,因为您实际上有我之前提出的替代建议:按钮本身用作单选按钮,可以立即 post 选择的选项。
要解决您的问题,您可以使用 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
在这个例子中,我将表单标签从循环中移除,因为严格来说你只需要一个表单。但是由于现在根本没有单选按钮,您也可以为每个按钮创建一个表单。它仍然有效。
对了,我看到你在评论中提到了一个数据库。当然我没有考虑到这一点,因为你没有在问题中提到这一点。无论如何,它应该不会改变基本概念,只是确定'value'的方式。
首先,单选标记中的值代码始终为 1。因此,如果选择任何单选按钮,您将始终获得 1。取而代之的是,值子句应包含文件名。这样您就可以知道选择了哪个图像(单选按钮)。
对于所选图像(单选按钮)的none,您可以使用
if (!isset($_POST['radio']))<br>{<br>//php code }