4

我不知道给这个问题取什么标题。这是我的目标:

在第一页,我有一个从数据库生成的表单。它循环通过将计数变量分配给字段的 id(即:header_1、header_2、header_3...)

现在,字段的数量可能会有所不同,因为我需要能够添加额外信息(即:header_4、header_5)。

当我提交表单时,如何为每个字段创建一个变量?

$header1 = $_POST['header_1']

本质上,我正在寻找一种基于数组(或基于变量的变量)的方法来简化这样的事情:

$sql="UPDATE about SET about_header = '$head1', about_content = '$post1' WHERE about_id = '$id1'";
$result = mysql_query($sql);
$sql="UPDATE about SET about_header = '$head2', about_content = '$post2' WHERE about_id = '$id2'";
$result = mysql_query($sql);
$sql="UPDATE about SET about_header = '$head3', about_content = '$post3' WHERE about_id = '$id3'";
$result = mysql_query($sql);

我想像这样的查询会起作用,但我不确定如何处理我需要帮助构建的信息数组。

$y=1;
$sql="UPDATE about SET about_header = '$head$y', about_content = '$post$y' WHERE about_id = '$id$y'";

我希望我解释得足够好。任何帮助都会很棒。谢谢!

4

2 回答 2

6

你有没有尝试过类似的东西:

<input name="header[]" />
<input name="header[]" />
<input name="header[]" />

这将在 PHP 端创建一个多维数组,您可以轻松地循环访问它。

echo $_POST['header'][0];
echo $_POST['header'][1];
echo $_POST['header'][2];

为此使用准备好的语句也会更快,尽管您必须切换到使用诸如 PDO 之类的东西来进行数据库交互。这是使用上面显示的代码进行循环的示例。

$fieldCount = count($_POST['header']);
for ($i = 0; $i < $fieldCount; $i++) {
   $sql = 'UPDATE about SET about_header = \''.$_POST['header'][$i].'\', about_content = \''.$_POST['post'][$i].'\' WHERE about_id = \''.$_POST['id'][$i].'\'';
   mysql_query($sql);
}
于 2012-04-05T15:16:30.767 回答
1
<input type="text" name="head[]" />
<input type="text" name="head[]" />
<input type="text" name="head[]" />

<?php
foreach ($_POST['head'] as $head) {
    // ....
}
?>

像这样命名您的输入(注意数组符号)将产生

$_POST == array( 'head' => array(
  0 => FIRST TEXT DATA,
  1 => SECOND TEXT DATA,
  2 => THIRD TEXT DATA
))
于 2012-04-05T15:17:18.267 回答