无法从多个表单中获取$ _POST值

时间:2015-03-03 11:28:42

标签: php forms post if-statement

我遇到了一些问题,你们可以在我的代码中看到,我有一个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>

2 个答案:

答案 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 }