我试图在后续试验后向数组中添加元素,但到目前为止,只有一个值被添加到数组中。我在谷歌上搜索了stackoverflow,我似乎只得到了一半的信息,除非我实施错了。
大约有40个文件,需要一个接一个地提交,然后将每个试验的值存储在数据库中。
到目前为止,这就是我所做的。
$_SESSION['task2'] = array();
//Submit Trial 1
if (isset($_POST['submit_task_01'])) {
$trial1_ac_sec = cleanInput($_POST['clockInputTask_01ac']);
$trial1_est_sec = cleanInput($_POST['clockInputTask_01']);
$trial1_ac = round(($trial1_ac_sec * 42.67), 2);
$trial1_est = round(($trial1_est_sec * 42.67), 2);
$trial1_judgErr = $trial1_ac - $trial1_est;
$trial_1error = round($trial1_judgErr, 2);
array_push($_SESSION['task2'],$trial_1error);
header("location: Trial_2.php");
}
//Submit Trial 2
if (isset($_POST['submit_task_02'])) {
$trial2_ac_sec = cleanInput($_POST['clockInputTask_02ac']);
$trial2_est_sec = cleanInput($_POST['clockInputTask_02']);
$trial2_ac = round(($trial2_ac_sec * 42.67), 2);
$trial2_est = round(($trial2_est_sec * 42.67), 2);
$trial2_judgErr = $trial2_ac - $trial2_est;
$trial_2error = round($trial2_judgErr, 2);
array_push($_SESSION['task2'],$trial_2error);
header("location: newEmptyPHPWebPage.php");
}
... and so on.. up until 40
我只是想知道我做错了什么,我知道每次isset()都会重新加载页面,而以前的数据将不可用,所以从这个意义上说,我想我应该为会话创建一个数组,然后在会话中推送数据,但这似乎不起作用。
如果有人对我能做什么有任何想法,我将不胜感激。谢谢。
您在代码顶部键入:
$_SESSION['task2'] = array();
您应该使用:
if (!isset($_SESSION['task2'])) {
$_SESSION['task2'] = array();
}
否则,每次加载页面时都要清理它!
据我所见,这里有巨大的自动化潜力。与其写40个这样的块,你可以简单地做一个for循环,然后从那里开始。知道40个值中的哪一个被添加到数组中也很有趣(我必须在这里问它,因为出于某种原因,StackOverflow不允许我发布评论
// If no Session found, start it.
if (!isset($_SESSION)) {
session_start();
}
if(!isset($_SESSION['task2']) {
$_SESSION['task2'] = array();
}
// For 40 times
for ($i = 0; $i < 40; $i++) {
// If i is smaller then ten, prepend 0
if ($i < 10) {
$task = '0' . $i;
} else {
$task = $i;
}
// if current task is set
if (isset($_POST['submit_task_' . $task])) {
$trial_ac_sec = cleanInput($_POST['clockInputTask_' . $task . 'ac']);
$trial_est_sec = cleanInput($_POST['clockInputTask_' . $task]);
$trial_ac = round(($trial_ac_sec * 42.67), 2);
$trial_est = round(($trial_est_sec * 42.67), 2);
$trial_judgErr = $trial_ac - $trial_est;
$trial_error = round($trial_judgErr, 2);
array_push($_SESSION['task2'], $trial_error);
getCorrectPage($i);
}
}
function getCorrectPage($task) {
// Look what's in task, go to the case that matches
switch ($task) {
case 1 :
header("location: Trial_2.php");
break;
case 2 :
header("location: newEmptyPHPWebPage.php");
break;
case 3 :
header("location: Trial_3.php");
break;
// AND SO FORTH...
default :
echo 'No Correct Page for task ' . $task;
break;
}
}
Tim?我想指出的一点是,尽管您的问题已经得到了解决,但它可能会为您节省大量的复制/粘贴工作。
代码重复是程序员非常热衷于避免的事情,看起来你会复制粘贴40次,尽管从我在你的代码示例中看到的两次来看,它们几乎完全相同?
我无法理解其余的,但我只想指出,这可以以一种干净的方式完成。
干杯和gl