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


Task-list manager app in PHP doesn't show the list of tasks

我正在为我所在的类开发任务列表管理器。我必须包括会话,我需要将每个任务推送到一个数组中,并能够将其从数组中删除。

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

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>

在与会话进行任何交互之前,您需要调用session_start()。因此,如果文件是单独访问的,那么您需要同时访问这两个文件。如果task_list.php仅包含在index.php中,则将其移动到index.php的顶部即可。此外,在add操作的逻辑中,您没有向$_SESSION['tasks']数组添加任务的语法权限,而是用$new_task中的任何内容覆盖它。

这来自Murach的PHP书。这本书就像第十章一样,在读完之后就成了铺张。没有有效的解释或例子和问题,假设你已经知道PHP,因为它没有教你需要知道什么。