是否有更好的方法来处理表单,我需要针对语言和公司保存link
和link 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="" />
可以在一个页面上显示多种语言和公司。
答案 0 :(得分:3)
使用something[]
作为字段名称。那么PHP将在$_POST['something']
(或$ _GET,以及$ _REQUEST - 显然)中创建一个数组,您可以在不使用丑陋的子字符串比较的情况下使用它。
您还可以在字段名称(name="something[42]"
)中指定数组索引。如果您有多个属于一起的字段,这可能是一个好主意。尽管订单应该是正确的(因此您可以foreach($_POST['field1'] as $idx => $val)
并使用_POST['field2'][$idx]
),如果索引也在HTML代码中,那么读取代码的人可能会更安全或更直观。