更好的处理多个表单字段的方法

时间:2011-01-22 21:33:18

标签: php html forms

是否有更好的方法来处理表单,我需要针对语言和公司保存linklink text

以下示例有效,但我认为这很难。

我已将语言和公司ID添加到链接和链接文本字段的键中,作为将它们组合在一起并将其他信息传递到PHP并进入数据库的方法。

$newlinks = array();
foreach($_POST as $post_key => $post_value) {
  if (substr($post_key, 0, 7) == 'newlink') {
    $posted_link = explode('_', $post_key);
    $newlinks[$posted_link[1]][$posted_link[2]][$posted_link[0]] = $post_value;
    $newlinks[$posted_link[1]][$posted_link[2]]['language_id'] = $posted_link[1];
    $newlinks[$posted_link[1]][$posted_link[2]]['company_id'] = $posted_link[2];

  }
}

foreach($newlinks as $newlinklang) {
  foreach($newlinklang as $newlink) {
    if ($newlink['newlink'] != '' && $newlink['newlinkname'] != '') {
      $sql = "
        INSERT
          INTO
        ".$db_prefix."catalogue_links (
          link,
          link_name,
          language_id,
          company_id
        ) VALUES (
          '".$newlink['newlink']."',
          '".$newlink['newlinkname']."',
          '".$newlink['language_id']."',
          '".$newlink['company_id']."'
        ";
    }
  }
}

和HTML

<input type="text" name="newlink_1_1" value="" />
<input type="text" name="newlinkname_1_1" value="" />

可以在一个页面上显示多种语言和公司。

1 个答案:

答案 0 :(得分:3)

使用something[]作为字段名称。那么PHP将在$_POST['something'](或$ _GET,以及$ _REQUEST - 显然)中创建一个数组,您可以在不使用丑陋的子字符串比较的情况下使用它。

您还可以在字段名称(name="something[42]")中指定数组索引。如果您有多个属于一起的字段,这可能是一个好主意。尽管订单应该是正确的(因此您可以foreach($_POST['field1'] as $idx => $val)并使用_POST['field2'][$idx]),如果索引也在HTML代码中,那么读取代码的人可能会更安全或更直观。