无法从多种形式获取 $_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 }