每次更新表单时,如何阻止PHP替换变量?

时间:2010-02-15 01:42:26

标签: php variables list

基本问题 - 我有一个带有提交按钮的文本区域,该按钮链接到变量$ListItem

在页面下方,我想在$ListItem中打印<li>,每次在文本区域输入新内容时,我想为其分配一个新变量($ListItem2或许? )然后将其打印在前一个下面。

使用我当前的代码,每次在文本区域中输入新字符串时,它都会替换现有变量:

<?php
$ListItem = $_POST["ListItem"];
?>

<form method="post" action="<?php echo $PHP_SELF;?>">
<textarea name="ListItem" cols=80 rows=6></textarea> <br />
<input type="submit" value="Submit"> <br />
</form>

<li><?php echo $ListItem; ?></li>

我是否必须使用数据库?

2 个答案:

答案 0 :(得分:5)

您可以将其弹出到会话中存储的数组中:

$_SESSION["vars"][] = $_POST["ListItem"];

这将通过未来的提交保留完整的历史记录。打印它们就像在会话数组中循环一样简单:

foreach ($_SESSION["vars"] as $var) {
  echo "<p>{$var}</p>";
}

请记住在开始其他任何事情之前开始会话:

session_start();

详细说明(评论中要求)

我的回答中的第一项是将另一个项目附加到数组上的示例。如果我们从一个空数组开始:

$myArr = array();

我们可以使用以下语法添加新条目:

$myArr[] = "Foo";
$myArr[] = "Bar";

我们的数组现在有两个项目。这与执行此操作相同:

$myArr = array("Foo", "Bar");

使用双括号方法是将更多项目放入数组的快速方法,同时保留目前开始的内容。还有其他方法可以执行此操作,例如,您可以使用array_push()函数:

array_push($myArr, "Foo");

这与我们之前的例子完全相同,所以它没有提供太大的区别。现在回过头来看,我们注意到我们的数组存储在SESSION数组中。这是一个数组,可用于存储在用户访问您的网站时经常使用的数据。它通常是将奇怪的数据存储在数据库中并对每个请求进行调用的更好的替代方法。

同样,我们有一个数组:

$_SESSION["vars"] = array();

基本上我们所做的就是在数组中设置一个数组,由关键字“vars”处理。关键很重要,因此我们可以在以后快速参考这些数据。回到我们的第一行代码,您现在可以更好地了解我们正在做的事情:

$_SESSION["vars"][] = $_POST["ListItem"];

所以这一切都是将$_POST["ListItem"]的新值添加到$_SESSION["vars"]中存储的数组中,以后可以检索它。

答案 1 :(得分:1)

全局会话数组

我会将文本区域数据附加到全局会话数组。

最终你会想要使用数据库。