如何解决我收到的这两个通知

时间:2012-04-03 16:07:49

标签: php

我的应用程序中有几页。在用户下方的第一页(create_session.php)中提交表单并转到下一页(QandATable.php)。

<form action="QandATable.php" method="post" id="sessionForm">

<p>
    <strong>
        Your Session ID: 
    </strong>
    <span id="idFont">
        <?php echo $id; ?>
    </span>
</p>
<input type="hidden" name="id" value="<?php echo $id; ?>" />

<p>
    <strong>
        Number of Sessions:
    </strong> 
    <input type="text" id="sessionNo" name="sessionNum" />
<p>
    <strong>
        Start Time:
    </strong> 
    <input type="text" id="timepicker" name="durationChosen" readonly="readonly" />

<p>
    <input class="questionBtn" type="submit" value="Prepare Questions" name="prequestion"/>
</p> 

</form>

现在如果$ _POST ['sessionNum']等于1,那么只有1个考试,但如果它超过1,那么有多个考试就是问题发生的地方。

让我说我想要2门考试并将表格提交给QandATable.php,然后第一次考试没有问题,但是在我完成第一次考试然后提交表格(此表格将提交给自己),然后对于第二次考试,我突然收到下面代码中所有$ _POST的通知。

<?php
session_start();

if (isset($_POST['id'])) 
{
    $_SESSION['id'] = $_POST['id'];
}


if (isset($_POST['durationChosen'])) 
{
    $_SESSION['durationChosen'] = $_POST['durationChosen'];
}

if (isset($_POST['sessionNum'])) 
{
    $_SESSION['sessionNum'] = $_POST['sessionNum'];
}



if($_SERVER['REQUEST_METHOD'] == 'POST')

{

$time = str_replace(array(' Hrs ', ' Mins ', ' Secs'), array(':', ':', ''), $_POST['durationChosen']);

  $insert = array();

  for ($i = 1, $n = $_POST['sessionNum']; $i <= $n; ++$i)
  {
    $insert[] = "'". mysql_real_escape_string( $_POST['id'] ) . ($n == 1 ? '' : $i) . "','". mysql_real_escape_string( $_POST['textWeight'] ) ."','". mysql_real_escape_string( $time ) ."'";
  }

  $sql = "INSERT INTO Session (SessionId, SessionTime, SessionDate, SessionWeight, SessionDuration, TotalMarks, ModuleId, TeacherId, Room) 
  VALUES (" . implode('), (', $insert) . ")";


  mysql_query($sql);

}

现在,如果我有一个会话(考试),那么它工作正常。问题是,如果我有2个课程(考试)或更多。在我完成第一次考试之后,我告诉'QandATable.php'将页面转发给自己,这样用户就可以在同一页面上进行第二次考试。问题是,在我提交第一次考试并进入第二次考试的页面后,我得到2个未定义的索引通知,这两行代码在上面的php代码中:

$time = str_replace(array(' Hrs ', ' Mins ', ' Secs'), array(':', ':', ''), $_POST['durationChosen']);

上面注意到未定义的索引'durationChosen'。

for ($i = 1, $n = $_POST['sessionNum']; $i <= $n; ++$i)

上面提到的是未定义的索引'sessionNum'。

为什么我会收到这2条通知以及如何解决?

1 个答案:

答案 0 :(得分:0)

你可能打算在你遇到问题的两个语句中使用$ _SESSION而不是$ _POST。我没有看到create_session.php的include,我看到你将$ _POST从create_session复制到$ _SESSION变量,所以我假设第二个会话的表单与create_session.php不同。

$time = str_replace(array(' Hrs ', ' Mins ', ' Secs'), array(':', ':', ''), $_SESSION['durationChosen']);

for ($i = 1, $n = $_SESSION['sessionNum']; $i <= $n; ++$i)
相关问题