2012-04-03 12 views
1

Ich habe ein paar Seiten in meiner Anwendung. Auf der ersten Seite (create_session.php), die sich unten befindet, übergibt der Benutzer das Formular und geht auf die nächste Seite (QandATable.php). JetztSo beheben Sie diese 2 Hinweise, die ich erhalte

<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> 

wenn $ _POST [ ‚sessionNum‘] gleich 1 ist, dann ist es nur 1-Prüfung, aber wenn es mehr als 1 ist, dann gibt es mehrere Untersuchungen, die ist, wo das Problem auftritt.

Sagen wir, ich wollte 2 Prüfungen und ich schicke das Formular an die QandATable.php, dann hat die erste Prüfung keine Probleme, aber nachdem ich die erste Prüfung abgeschlossen habe und dann das Formular abschicken (Dieses Formular würde sich selbst vorlegen), Dann bekomme ich für die zweite Prüfung plötzlich Benachrichtigungen für alle $ _POST, die ich im Code unten habe.

<?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); 

}

Nun, wenn ich 1 Sitzung haben (Prüfung), dann funktioniert es gut. Das Problem ist, dass wenn ich 2 Sitzungen (Prüfungen) oder mehr habe. Nachdem ich die erste Prüfung abgeschlossen habe, sage ich 'QandATable.php', um die Seite an sich selbst zu submioten, damit der Benutzer die zweite Prüfung auf derselben Seite machen kann. Das Problem ist, dass, nachdem ich die erste Prüfung und gehe auf der Seite für die zweite Prüfung einreichen, erhalte ich 2 undefinierte Index Hinweise für diese 2 Zeilen unter denen in dem PHP-Code wird über:

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

Hinweis oben ist nicht definiert index 'durationChoose'.

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

Hinweis oben ist undefined index 'sessionNum'.

Warum bekomme ich diese 2 Hinweise und wie kann ich es beheben?

Antwort

0

Wahrscheinlich wollten Sie $ _SESSION anstelle von $ _POST in den beiden Anweisungen verwenden, mit denen Sie Probleme haben. Ich sehe kein Include für create_session.php und ich sehe, dass Sie die $ _POST von create_session in die $ _SESSION-Variable kopiert haben, so nehme ich an, dass das Formular für die 2. Sitzung nicht dasselbe ist wie create_session.php.

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

und

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