2

在随后的试验之后,我试图将元素添加到数组中,但到目前为止,只有一个值被添加到数组中。我已经用谷歌搜索并搜索了 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() 都会重新加载页面,并且以前的数据将不可用,所以从这个意义上说,我想我会为会话创建一个数组,然后在会话中推送数据,但这似乎不起作用。

如果有人对我能做什么有任何想法,我将不胜感激。谢谢你。

4

3 回答 3

2

您在代码顶部键入:

$_SESSION['task2'] = array();

您应该改用:

if (!isset($_SESSION['task2'])) {
    $_SESSION['task2'] = array();
}

否则,每次加载页面时都要清理它!

于 2012-09-08T21:51:07.733 回答
2

据我所知,这里有巨大的自动化潜力。您可以简单地执行一个 for 循环并从那里开始,而不是编写 40 个块。知道将 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;
        }

    }
于 2012-09-08T22:07:22.933 回答
0

蒂姆?我想指出一件事,虽然您的问题已得到解答,但它可能会为您节省大量复制/粘贴。

代码重复是程序员非常热衷于避免的事情,看起来你会复制粘贴 40 次,尽管从我在你的代码示例中看到的两次来看,它们几乎相同?

我无法理解其余的内容,但只想指出这可以以一种干净的方式完成。

干杯和gl

于 2012-09-08T22:10:25.663 回答