我的应用程序中有几页。在用户下方的第一页(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条通知以及如何解决?
答案 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)