PHP中的任务列表管理器应用程序不显示任务列表

时间:2012-03-09 14:26:29

标签: php

我正在为我所在班级的任务列表管理器工作。我必须包含会话,我需要将每个任务推送到一个数组中,并能够从数组中删除它。

我认为我正确地做到了,但是当我运行程序时,任务列表显示为空。我想我可能没有正确地将任务添加到任务列表数组中,我真的想要一副新的眼睛来看一看,因为也许你会看到我没有的。

的index.php

<?php
if (isset($_POST['tasklist'])) {
$task_list = $_POST['tasklist'];
} else {
$task_list = array();
}

// put the array in a session variable
$_SESSION['tasks']=$task_list;
$_SESSION['errors']=$errors;

//start the session to last one year
$lifetime = 60 * 60 * 24 * 365;     // 1 year in seconds
ini_set('session.gc_maxlifetime', $lifetime);
//session_set_cookie_params($lifetime, '/');
session_start();

$errors = array();

switch( $_POST['action'] ) {
    case 'add':
    $new_task = $_POST['newtask'];
    if (empty($new_task)) {
        $_SESSION['errors'] = 'The new task cannot be empty.';
    } else {
        $_SESSION['tasks'] = $new_task;
    }
    break;
case 'delete':
    $task_index = $_POST['taskid'];
    unset($task_list[$task_index]);
    $_SESSION['tasks'] = array_values($_SESSION['tasks']);
    break;
}



include('task_list.php');
?>

task_list.php

   <?php
   session_start(); // Access the current session.

?>
</head>
<body>
<div id="page">
<div id="header">
    <h1>Task List Manager</h1>
</div>
<div id="main">

<!-- part 1: the errors -->
<?php if (count($_SESSION['errors']) > 0) : ?>
<h2>Errors</h2>
<ul>
    <?php foreach($_SESSION['errors'] as $error) : ?>
        <li><?php echo $error; ?></li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

<!-- part 2: the tasks -->
<h2>Tasks</h2>
<?php if (count($_SESSION['tasks']) == 0) : ?>
    <p>There are no tasks in the task list.</p>
<?php else: ?>
    <ul>
    <?php foreach($_SESSION['tasks'] as $id => $task) : ?>
        <li><?php echo $id + 1 . '. ' . $task; ?></li>
    <?php endforeach; ?>
    </ul>
<?php endif; ?>
<br />

<!-- part 3: the add form -->
<h2>Add Task</h2>
<form action="." method="post" >
    <?php foreach($_SESSION['tasks'] as $task) :
      array_push($_SESSION['tasks'],$task);
     endforeach; ?>
    <!--<input type="hidden" name="action" value="add"/> -->
    <label>Task:</label>
    <input type="text" name="<?php $_SESSION['tasks'] ?>" id="newtask" value="<?php     echo $task; ?>" /> <br />
    <label>&nbsp;</label>
    <input type="submit" value="Add Task"/>
</form>
<br />


<!-- part 4: the delete form -->
<?php if (count($_SESSION['tasks']) > 0) : ?>
<h2>Delete Task</h2>
<form action="." method="post" >
    <?php foreach($_SESSION['tasks'] as $task) :
      $_SESSION['tasks']=array_diff($_SESSION['tasks'],$task);
     endforeach; ?>
    <!--<input type="hidden" name="action" value="delete"/> -->
    <label>Task:</label>
    <select name="taskid">
        <?php foreach($_SESSION['tasks'] as $id => $task) : ?>
            <option value="<?php echo $id; ?>">
                <?php echo $task; ?>
            </option>
        <?php endforeach; ?>
    </select>
    <br />
    <label>&nbsp;</label>
    <input type="submit" value="Delete Task"/>
</form>
<?php endif; ?>

</div><!-- end main -->
</div><!-- end page -->
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您需要在与会话进行任何互动之前致电session_start()。因此,如果文件是单独访问的,那么你需要它们。如果task_list.php中仅包含index.php,则只需将其移至index.php的顶部。此外,在add操作的逻辑中,您没有正确的语法将任务添加到$_SESSION['tasks']数组,而是使用$new_task中的任何内容覆盖它。

答案 1 :(得分:0)

这是来自Murach的PHP书。这本书像第10章一样变成了下铺。没有有效的解释或示例和问题假设您已经了解PHP,因为它不会教您需要知道的内容。