【问题标题】:Cant get $_POST values from multiple forms无法从多个表单中获取 $_POST 值
【发布时间】:2015-03-03 11:28:42
【问题描述】:

我遇到了一些问题,正如你们在我的代码中看到的那样,我有一个 foreach 循环遍历我的 img 文件夹,显示所有图像,我忽略了图像的正确样式,因为问题是每张图片中的表格。

我需要从无线电输入中获取值,因此我可以告诉我的其他脚本从数据库中选择 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>

【问题讨论】:

  • 在顶部执行 var_dump($_POST) 以查看表单中发布的内容
  • HTML 表单基础知识 101:提交的数据中仅包含 选中 单选按钮。你的没有被检查 - 所以没有 name=value 对被发送给他们。

标签: php forms post if-statement


【解决方案1】:

我已经删除了我之前的解决方案。我只是看到你没有实际的单选按钮,而是隐藏元素,所以基本上按钮是单选。 这会稍微改变它,因为您实际上有我之前提出的替代建议:按钮本身作为单选按钮工作,可以立即发布所选选项。

要解决您的问题,您可以使用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

在这个例子中,我将表单标签从循环中拉出来,因为严格来说你只需要一个表单。但是由于现在根本没有单选按钮,所以每个按钮也可以有一个表单。它仍然可以工作。

顺便说一句,我看到你在评论中提到了一个数据库。当然我没有考虑到这一点,因为你没有在问题中提到这一点。无论如何,它不应该改变基本概念,只是确定“价值”的方式。

【讨论】:

  • 我现在就试试吧,顺便说一句,我需要将我的脚本放在表单下方或上方还是根本不重要?
  • 你的意思是'if'检查?没关系,尽管我可以想象如果发布了一个值,您根本不想显示表单。在这种情况下,我会在上面说,所以你可以跳过生成表单。
  • 好吧,您正在使用文件名,但我将使用数据库和 ID,我将 foreach 整个数据库,我想我的数据库首先运行 :)
  • 哇,我只看到你没有单选按钮,而是隐藏元素,所以基本上按钮就是收音机。这会稍微改变它,因为您实际上有我提出的替代建议。我要改变的是把值(文件名?)如果你给我一点时间,我也会在代码示例中解决这个问题。
  • 我得到了这个工作,但现在页面刷新了,这不是我想要的,因为它会跳回页面顶部,有什么解决方案吗?查看我的帖子的编辑
【解决方案2】:

首先,单选标记中的值代码始终为 1。因此,如果选择了任何单选按钮,您将始终得到 1。相反,值子句应具有文件名。这样您就可以知道选择了哪个图像(单选按钮)。

对于未选择任何图像(单选按钮),您可以使用

if (!isset($_POST['radio']))<br>{<br>//php code }                    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多