我有一个表单,当用户输入内容时,它会出现在屏幕上。我保留了用户在名为$output
的变量中输入的文本,然后我尝试将每个$output
放入一个名为$arrayText
的数组中,我的目标是让用户键入某个内容单击一个按钮,然后用户的文本出现在屏幕上,当他第二次尝试时,第一个文本仍在那里,而新的文本将在下一行。但是,它仅适用于第一次。它第二次用旧的替换第二个文本,这是我的代码
if (isset($_POST['putContents'])) {
$output = $_POST['contents'];
test();
}
function test()
{
static $arrayText = array();
global $output;
$arrayText[]= $output;
for($i = 0; $i < count($arrayText); $i++){
echo $arrayText[$i];
echo "<br>";
}
}
}
?>
感谢您提前提供任何帮助
答案 0 :(得分:0)
通过第二次执行你的脚本你的$ _POST将只有你上一次提交的值,在你的情况下将覆盖你的数组。
如果您想要存储超出当前流程的数据,您必须将日期存储在除$ _POST全局之外的其他位置。
我建议您使用会话,因为数据库查询肯定会超出您的需求。 使用:
session_name("admin");
session_start();
if(empty($_SESSION["yourOldText"])) $_SESSION["yourOldText"]=$_POST["userinput"];
如果您想访问旧数据,则可以使用$_SESSION["yourOldText"]
答案 1 :(得分:0)
每次按下提交按钮后,您都无法逐行“收集”用户输入到数组中。必须在某处保留(存储)这些行。您可以按照建议将每一行存储为数据库或会话cookie中的记录。我会通过将输入的行存储在表单内的隐藏输入标记中来保持状态:
<input type="hidden" name="line[0]" value="What the user typed in first" />
<input type="hidden" name="line[1]" value="The second line that was typed in" />
<input type="text" name="contents" value="" />