-1

それぞれのテキスト入力で SessionName、SessionDate、および SessionTime を表示するのに問題があります。何が起こるかというと、ユーザーはドロップダウン メニューからセッション (評価) を選択することになっています。ドロップダウン メニューを送信すると、セッションの詳細 (SessionName、SessionDate、SessionTime) がテキスト入力に表示されます。しかし、代わりに、以下の未定義の変数エラーを受け取ります。

Notice: 未定義の変数: dbSessionName in ...243 行目

Notice: 未定義の変数: dbSessionDate in ... 行 244

Notice: 未定義の変数: dbSessionTime in ... 行 245

SessionName、SessionTime、および SessionDate をそれぞれのテキスト入力に表示するにはどうすればよいですか?

以下はコードです:

$sessionquery = "
SELECT SessionId, SessionName, SessionDate, SessionTime, ModuleId
FROM Session
WHERE
(ModuleId = ?)
ORDER BY SessionDate, SessionTime 
";

$sessionqrystmt=$mysqli->prepare($sessionquery);
// You only need to call bind_param once
$sessionqrystmt->bind_param("s",$_POST['modules']);
// get result and assign variables (prefix with db)

$sessionqrystmt->execute(); 

$sessionqrystmt->bind_result($dbSessionId,$dbSessionName,$dbSessionDate,$dbSessionTime, $dbModuleId);

$sessionqrystmt->store_result();

$sessionnum = $sessionqrystmt->num_rows();   

if($sessionnum ==0){
echo "<p>Sorry, You have No Assessments under this Module</p>";
} else { 

$sessionHTML = '<select name="session" id="sessionsDrop">'.PHP_EOL;
$sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;           

while ( $sessionqrystmt->fetch() ) {
    $sessionHTML .= sprintf("<option value='%s'>%s - %s - %s</option>", $dbSessionId, $dbSessionName, $dbSessionDate, $dbSessionTime) . PHP_EOL;  
}

$sessionHTML .= '</select>';

$assessmentform = "<form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post' onsubmit='return sessionvalidation();'>
<p>Assessments: {$sessionHTML} </p>
<p><input id='sessionSubmit' type='submit' value='Submit Assessment' name='sessionSubmit' /></p>  
<div id='sessionAlert'></div>    
</form>";

echo $assessmentform;

}

}

if (isset($_POST['sessionSubmit'])) {   

$currentsession = "form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post'>
<p>Current Assessment's Date/Start Time:</p>
<p>Assessment: <input type='text' id='currentAssessment' name='Assessmentcurrent' readonly='readonly' value='{$dbSessionName}'/> </p> //Line 243
<p>Date: <input type='text' id='currentDate' name='Datecurrent' readonly='readonly' value='{$dbSessionDate}'/> </p> //Line 244
<p>Start Time: <input type='text' id='currentTime' name='Timecurrent' readonly='readonly' value='{$dbSessionTime}'/> </p> //Line 245
</form>
";  

echo $currentsession;

    }

アップデート:

以下のコードはそれを行うことができますか:

if (isset($_POST['sessionSubmit'])) {

    $sessionquery = "
    SELECT SessionId, SessionName, SessionDate, SessionTime, ModuleId
    FROM Session
    WHERE
    (ModuleId = ?)
    ORDER BY SessionDate, SessionTime 
    ";

    $sessionqrystmt=$mysqli->prepare($sessionquery);
    // You only need to call bind_param once
    $sessionqrystmt->bind_param("s",$_POST['modules']);
    // get result and assign variables (prefix with db)

    $sessionqrystmt->execute(); 

    $sessionqrystmt->bind_result($dbSessionId,$dbSessionName,$dbSessionDate,$dbSessionTime, $dbModuleId);

    $sessionqrystmt->store_result();

$currentsession = "<form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post'>
<p>Current Assessment's Date/Start Time:</p>
<p>Assessment: <input type='text' id='currentAssessment' name='Assessmentcurrent' readonly='readonly' value='{$dbSessionName}'/> </p>
<p>Date: <input type='text' id='currentDate' name='Datecurrent' readonly='readonly' value='{$dbSessionDate}'/> </p>
<p>Start Time: <input type='text' id='currentTime' name='Timecurrent' readonly='readonly' value='{$dbSessionTime}'/> </p>
<input type='hidden' id='hiddenId' name='hiddenAssessment' value='{$dbSessionId}'/>
</form>
";  

echo $currentsession;

    }

store_result(); は必要ですか? この状況で?

4

1 に答える 1

0

sessionデータベースから選択したセッションを取得するために、ポストされた値を実際に使用していません。

表示しているSQLは、selectボックスを生成sessionし、投稿されたフォームで選択したものを取得するために使用されます。別のデータベース呼び出しを

if (isset($_POST['sessionSubmit'])) {
  ...
}

セクションを使用して、以前に選択したセッションを取得します$_POST['session']。おそらく次のようなものです。

$sessionquery = "
SELECT SessionId, SessionName, SessionDate, SessionTime, ModuleId
FROM Session
WHERE
(SessionId = ?)
";
....
$sessionqrystmt->bind_param("i",$_POST['session']);    // assuming the session ID is an integer
于 2012-10-31T22:46:49.893 に答える