【问题标题】:PHP and HTML Checkboxes using POST使用 POST 的 PHP 和 HTML 复选框
【发布时间】:2011-02-28 17:20:07
【问题描述】:

我有一个 php 文件,它列出了目录中的所有文件,每个文件旁边都有复选框:

<html
<body>
<P>List of files:</p>

<form action="submitfiles.php" method="post">

<?php
 if ($handle = opendir('./files')) {

   while (false !== ($file = readdir($handle)))
   {
          if ($file != "." && $file != "..")
          {
            $thelist .= '<a href="'.'./files/'.$file.'">'.$file.'</a>';
            $thelist .= '<br>';

            $s = '<input type="checkbox" name="'.$file.'" value="yes"/><a href="'.'./files/'.$file.'">'.$file.'</a>';
            echo $s;
            echo '<br';
          }
   }
  closedir($handle);
  }
?>
</body>

<input type="submit" name="formSubmit" value="Submit"/>
</form>

</html>

然后,我有一个 submitfiles.php,它遍历所有文件,并获取每个复选框的 $_POST 值。

<?php


 if ($handle = opendir('./files')) {
   while (false !== ($file = readdir($handle)))
   {
          if ($file != "." && $file != "..")
          {

                echo 'Value is ' . $_POST['$file'] . '<br>';
                echo $file . '<br>';

          }
   }
  closedir($handle);
  }

?>

即使我选中了一个复选框,我的 php 文件中的“Value is”行总是打印一个空白。意思是,没有一个复选框被赋予一个值。我如何让这个工作?如果我选中了一个复选框,我希望它打印“Value is yes”,但它没有。

【问题讨论】:

  • 您是否尝试过进行var_dump 的 POST 以查看您实际接收到的内容作为submitfiles.php 的输入?您确定 $file 作为名称属性有效吗?
  • 你的bodyform被纠缠了。这里是&lt;body&gt;&lt;form&gt;...&lt;/body&gt;&lt;/form&gt;

标签: php html post checkbox


【解决方案1】:

好的 - 您的代码中存在轻微的脱节...

这里是复选框:

<input type="checkbox" name="'.$file.'" value="yes"/>

这是你的尝试:

$_POST['$file']

复选框的名称不是“$file”——它是变量 $file 的值...

所以尝试将它们更改为...

<input type="checkbox" name="file[]" value="yes"/>

让他们像这样......

$FileCheckBoxes = $_POST['file'];

现在 $FileCheckBoxes 将包含 已检查的列表

【讨论】:

    【解决方案2】:

    你想要有复选框来输出一个数组。

    <input type="checkbox" name="assigned_name[]" value="1"> Item 1
    <input type="checkbox" name="assigned_name[]" value="2"> Item 2
    

    【讨论】:

      【解决方案3】:

      上线

      echo 'Value is ' . $_POST['$file'] . '&lt;br&gt;';

      在 submitfiles.php 中,尽量不要在 $file 周围使用引号,如下所示:

      echo 'Value is ' . $_POST[$file] . '&lt;br&gt;';

      使用单引号会强制 PHP 不计算 $file 的值。在http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single阅读单引号

      【讨论】:

        【解决方案4】:

        问题出在这一行:

        echo 'Value is ' . $_POST['$file'] . '<br>';
        

        删除数组键周围的单引号(或使用双引号):

        echo 'Value is ' . $_POST[$file] . '<br>';
        

        当您使用单引号时,变量 $file 将作为字符串传递。你可以在这里阅读更多关于为什么这是真的:http://php.net/string/

        【讨论】:

          猜你喜欢
          • 2016-08-24
          • 2012-08-16
          • 2010-12-21
          • 2011-09-25
          相关资源
          最近更新 更多