如何在不使用会话、JSON、Ajax、隐藏输入或其他文件的情况下在用户提交后保存表单的 POST 数据
How to save POST data of a form after user submission without using Sessions, JSON, Ajax, Hidden input or another file
首先,我会很真诚,我是一名学生,我被要求完成一项对我来说似乎不可能完成的任务。我不喜欢提问,因为一般来说,我总是能够通过搜索和学习来解决我的编码问题,但这是我第一次担任这个职位。
我需要创建一个 php 文件,其中包含一个表单,其中包含用户填写的两个输入项。一旦他点击提交,网站将在其顶部显示这两个值。到这里我还没有遇到问题,但是问题来了,下次用户发送另一个提交时,不是清除最后 2 个值并显示 2 个新值,而是现在需要显示 4 个值。
我知道这可以通过 JSON、使用会话、Ajax、隐藏输入或使用另一个文件(如果可以的话,我会决定使用最后一个文件) ),但老师说我们必须在同一个 html 文件上执行此操作,而不使用前面列出的任何方法。他说这可以通过存储数据的数组来完成,但正如我将在我的示例中展示的那样,当我这样做时,当用户单击提交时,数组值将被删除并从零开始创建。我知道最合乎逻辑的做法是问他,但我已经这样做了 4 次,他真的拒绝帮助我,所以我真的不知道该怎么做,除了在这里问。我应该指出答案必须是服务器端,因为主题是“服务器端编程”。
感谢您的帮助,在此先抱歉,因为我相信这最终会成为一个很容易回答的愚蠢问题。
为了简单起见,我删除了与格式有关的所有内容。这是代码:
<?php
if (isset($_POST['activity']) && isset($_POST['time'])){
$agenda = array();
$activity = $_POST['activity'];
$time = $_POST['time'];
$text = $activity." ".$time;
array_push($agenda, $text);
foreach ($agenda as $arrayData){
print implode('", "', $agenda);
}
}
?>
<html>
<head>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<label for="Activity">Activity</label><br>
<input name= "activity" type="text"><br><br>
<label for="Time">Time</label><br>
<input name= "time" type="time"><br><br>
<input type="submit">
</form>
</body>
</html>
老实说,你的问题不是很清楚,但我可能已经为你找到了一些有用的东西。
<?php
$formaction = $_SERVER['PHP_SELF'];
if (isset($_POST['activity']) && isset($_POST['time'])){
$agenda = array();
//if the parameter was passed in the action url
if(isset($_GET['agenda'])) {
$agenda = explode(", ", $_GET['agenda']);
}
//set activity time
$text = $_POST['activity']." ".$_POST['time'];
//push into existing array the new values
array_push($agenda, $text);
//print everything
print implode(", ", $agenda);
//update the form action variable
$formaction = $_SERVER['PHP_SELF'] . "?agenda=" . implode(", ", $agenda);
}
?>
<html>
<head>
</head>
<body>
<form action="<?php echo $formaction; ?>" method="POST">
<label for="Activity">Activity</label><br>
<input name= "activity" type="text"><br><br>
<label for="Time">Time</label><br>
<input name= "time" type="time"><br><br>
<input type="submit">
</form>
</body>
</html>
摘要
由于您无法将发布的值保存到 SESSION vars 或 HIDDEN 输入中,下一个最好的办法是将发布表单的先前结果附加到表单的操作中 url。
发布表单时,我们验证查询字符串 agenda
是否存在,如果存在,我们将其分解为名为 $agenda
的数组。然后我们连接 $_POST['activity']
和 $_POST['time']
值并将其推送到 $agenda array
。然后我们打印 array $agenda
并更新 $formaction
变量以包含添加到数组的新值。
在 HTML 部分,我们将 <form action=""
设置为 <form action="<?php echo $formaction; ?>
首先,我会很真诚,我是一名学生,我被要求完成一项对我来说似乎不可能完成的任务。我不喜欢提问,因为一般来说,我总是能够通过搜索和学习来解决我的编码问题,但这是我第一次担任这个职位。
我需要创建一个 php 文件,其中包含一个表单,其中包含用户填写的两个输入项。一旦他点击提交,网站将在其顶部显示这两个值。到这里我还没有遇到问题,但是问题来了,下次用户发送另一个提交时,不是清除最后 2 个值并显示 2 个新值,而是现在需要显示 4 个值。
我知道这可以通过 JSON、使用会话、Ajax、隐藏输入或使用另一个文件(如果可以的话,我会决定使用最后一个文件) ),但老师说我们必须在同一个 html 文件上执行此操作,而不使用前面列出的任何方法。他说这可以通过存储数据的数组来完成,但正如我将在我的示例中展示的那样,当我这样做时,当用户单击提交时,数组值将被删除并从零开始创建。我知道最合乎逻辑的做法是问他,但我已经这样做了 4 次,他真的拒绝帮助我,所以我真的不知道该怎么做,除了在这里问。我应该指出答案必须是服务器端,因为主题是“服务器端编程”。
感谢您的帮助,在此先抱歉,因为我相信这最终会成为一个很容易回答的愚蠢问题。
为了简单起见,我删除了与格式有关的所有内容。这是代码:
<?php
if (isset($_POST['activity']) && isset($_POST['time'])){
$agenda = array();
$activity = $_POST['activity'];
$time = $_POST['time'];
$text = $activity." ".$time;
array_push($agenda, $text);
foreach ($agenda as $arrayData){
print implode('", "', $agenda);
}
}
?>
<html>
<head>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<label for="Activity">Activity</label><br>
<input name= "activity" type="text"><br><br>
<label for="Time">Time</label><br>
<input name= "time" type="time"><br><br>
<input type="submit">
</form>
</body>
</html>
老实说,你的问题不是很清楚,但我可能已经为你找到了一些有用的东西。
<?php
$formaction = $_SERVER['PHP_SELF'];
if (isset($_POST['activity']) && isset($_POST['time'])){
$agenda = array();
//if the parameter was passed in the action url
if(isset($_GET['agenda'])) {
$agenda = explode(", ", $_GET['agenda']);
}
//set activity time
$text = $_POST['activity']." ".$_POST['time'];
//push into existing array the new values
array_push($agenda, $text);
//print everything
print implode(", ", $agenda);
//update the form action variable
$formaction = $_SERVER['PHP_SELF'] . "?agenda=" . implode(", ", $agenda);
}
?>
<html>
<head>
</head>
<body>
<form action="<?php echo $formaction; ?>" method="POST">
<label for="Activity">Activity</label><br>
<input name= "activity" type="text"><br><br>
<label for="Time">Time</label><br>
<input name= "time" type="time"><br><br>
<input type="submit">
</form>
</body>
</html>
摘要
由于您无法将发布的值保存到 SESSION vars 或 HIDDEN 输入中,下一个最好的办法是将发布表单的先前结果附加到表单的操作中 url。
发布表单时,我们验证查询字符串 agenda
是否存在,如果存在,我们将其分解为名为 $agenda
的数组。然后我们连接 $_POST['activity']
和 $_POST['time']
值并将其推送到 $agenda array
。然后我们打印 array $agenda
并更新 $formaction
变量以包含添加到数组的新值。
在 HTML 部分,我们将 <form action=""
设置为 <form action="<?php echo $formaction; ?>