【问题标题】:How to identify a form field type in php如何在php中识别表单字段类型
【发布时间】:2016-02-28 01:43:39
【问题描述】:
<form name="form" action="" method="get">
  <input type="text" name="name" id="name" value="My name">
    <textarea name="about_me" id="about_me"></textarea>
    <input type="radio" name="gender" value="male" />
    <input type="radio" name="gender" value="female" />

    <select name="level">
        <option value="Beginner">Beginner</option>
        <option value="Intermediate">Intermediate</option>
        <option value="Expert">Expert </option>
    </select>
</form>

我有这样的表格,

我的表单域是动态添加的。 提交表单后,我需要识别字段类型,需要知道名称是文本框值,about_me 是文本区域输入,性别是单选选项,级别是下拉列表等。
这是在php中找出表单字段类型的任何方法吗?

【问题讨论】:

  • 附加名称属性和标识符以识别元素,如name="textfield_name"
  • 您只能获取通过 G​​ET 发送的名称而不是类型。你需要在你的名字前面加上 MyWay 所说的前缀。
  • @MyWay 我认为你现在建议的方式,但需要知道是否有任何其他方式来实现它。
  • 最简单的方法是 MyWay 的。作为替代方案,您可以提出反映名称和类型的隐藏输入字段(例如&lt;input type="hidden" name="fields[]" value="about_me:textarea"&gt;&lt;input type="hidden" name="fields[]" value="gender:radio"&gt;)。然而,这似乎有点矫枉过正。为什么首先需要类型?
  • 或者您可以指定一个数字作为前缀,而不是大字,然后将数字与控件类型匹配,例如 1 -> textfield, 2 -> textarea,... 等等name="1_name" 更简单!

标签: php forms


【解决方案1】:

首先:采用 MyWay 的方法。它直截了当而且非常简单。但是,如果您想构建更复杂的结构,可以使用以下代码。它将隐藏字段设置为数组并保存名称和类型,由: 分隔:

HTML 页面:

<form name="form" action="" method="get">

    <input type="hidden" name="fields[]" value="name:text">
    <input type="hidden" name="fields[]" value="about_me:textarea">
    <input type="hidden" name="fields[]" value="gender:radio">
    <input type="hidden" name="fields[]" value="level:select">

    <input type="text" name="name" id="name" value="My name">
    <textarea name="about_me" id="about_me"></textarea>
    <input type="radio" name="gender" value="male" />
    <input type="radio" name="gender" value="female" />

    <select name="level">
        <option value="Beginner">Beginner</option>
        <option value="Intermediate">Intermediate</option>
        <option value="Expert">Expert </option>
    </select>
</form>

然后,在您的 PHP 文件中:

$fields = $_POST["fields"];
foreach ($fields as $field) {
    list($name, $type) = explode(':', $field);
    $val = (!empty($_POST[$name]))?$_POST[$name]:"";
    if ($type == "textarea") {
        // do sth. useful with it
        // the value is in $val (if there's one)
    }
}

【讨论】:

    猜你喜欢
    • 2018-03-04
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多