【问题标题】:PHP multiple radio buttonsPHP 多个单选按钮
【发布时间】:2010-12-11 23:48:54
【问题描述】:

如何处理页面中的所有单选按钮?

<input type="radio" name="radio_1" value="some" />
<input type="radio" name="radio_1" value="some other" />

<input type="radio" name="radio_2" value="some" />
<input type="radio" name="radio_2" value="some other" />

这个按钮将被动态添加,所以我不知道单选按钮的名称(以及按钮的数量)。有没有办法通过 for 循环或类似的方法获取所有无线电值?谢谢

【问题讨论】:

    标签: php button radio-button


    【解决方案1】:

    使用foreach 循环

    <?php
    foreach ( $_POST as $key => $val )
        echo "$key -> $val\n";
    ?>
    

    $key 将是所选选项的名称,$val 是值。

    【讨论】:

    • 你能解释一下你是怎么做到的吗?我试图从选中的按钮中获取值,我有数百个。我怎么知道检查了哪些?
    【解决方案2】:

    由于浏览器只会将您的所有输入更改为 HTTP 格式的表单数据,因此您将无法区分来自单选按钮与文本框或其他输入的数据。

    如果命名约定与您的示例相同,则循环直到找不到值:

    <?
      for ($idx = 1; $idx <= 1000; $idx++) {
        if (isset($_REQUEST["radio_$idx"])) {
          // handle value
        }
      }
    ?>
    

    编辑或者,如果您的表单是动态生成的,您可以将它创建的单选按钮的数量写为表单中的隐藏字段。

    如果您能够更改正在生成的表单,您可以编写一个隐藏输入,提供您要查找的所有单选按钮的列表。在编写单选按钮时,只需为您创建的所有名称制作一个以分号分隔的列表。完成后,将其写入隐藏输入。像这样的:

    在源表单上:

    <input type="hidden" name="radio_button_list" value="some_value;other_value" />
    

    然后在你的处理程序中:

    <?
      $list = explode(';', $_REQUEST['radio_button_list']);
      foreach ($list as $name) {
        $value = $_REQUEST[$name];
        // handle name & value
      }
    ?>
    

    【讨论】:

    • 我猜你的意思是 $_POST 并且循环不是很有效。更好地循环 $_POST 并检查模式
    • 没错,它可以是 $_GET 或 _POST,具体取决于表单的创建方式。无论哪种情况,结果都是一样的。
    • 或 $_REQUEST,如果您不在乎它是如何收到的。
    • 好的,但是如果收音机名称完全不同,例如“some_value”、“other_value”、“even_more_values”。我能做点什么吗?
    • 您需要有一些可以键入的东西才能知道您正在查看的是单选按钮名称,而不是其他一些输入类型。
    【解决方案3】:

    jheddings 的例子说明了一切。但是,您永远不会获得 all 按钮的名称/值 - 只会从每个组中选择一个。如果您确实需要 all 值,则必须使用 Javascript。

    【讨论】:

    • 好点...我确实假设 OP 想要所有选定的值,而不是可能的值。
    • yap...只是选定的值
    猜你喜欢
    • 2013-07-18
    • 2014-01-24
    • 2019-10-04
    • 2012-04-18
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多