0

ユーザーがドロップダウン メニューからオプションを選択しない場合、「コースを選択してください」というエラー メッセージは表示されません。なぜメッセージが表示されないのか、ドロップダウンオプションが選択されているかどうかを確認できるようにするためにphp検証を正しく行っているかどうかを確認できますか?

以下はコードです:

 $sql = "SELECT CourseId, CourseNo, CourseName FROM Course ORDER BY CourseNo"; 

 $sqlstmt=$mysqli->prepare($sql);

 $sqlstmt->execute(); 

 $sqlstmt->bind_result($dbCourseId, $dbCourseNo, $dbCourseName);

 $courses = array(); // easier if you don't use generic names for data 

 $courseHTML = "";  
 $courseHTML .= '<select name="courses" id="coursesDrop">'.PHP_EOL; 
 $courseHTML .= '<option value="">Please Select</option>'.PHP_EOL;  

 while($sqlstmt->fetch()) 
 { 
     $courseno = $dbCourseNo;
     $course = $dbCourseId;
     $coursename = $dbCourseName; 
     $courseHTML .= "<option value='".$course."'>" . $courseno . " - " . $coursename . "</option>".PHP_EOL;  
  } 

  $courseHTML .= '</select>'; 

  $submittedCourseId = (isset($_POST['courses'])) ? $_POST['courses'] : '';
  $errormsg = (isset($errormsg)) ? $errormsg : '';

        ?>
    <h1>CREATING A NEW ASSESSMENT</h1>

        <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
        <table>
        <tr>
        <th>Course: <?php echo $courseHTML; ?><input id="courseSubmit" type="submit" value="Submit" name="submit" /></th>
        </tr>
        <tr>
        <td id="errormsg"><?php echo $errormsg; ?></td>
        </tr>
        </table>
        </form>

        <?php

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


$submittedCourseId = $_POST['courses'];

if($submittedCourseId){

?>

//need to do functions here

<?php
 }
 else{
$errormsg = "Please Select a Course";
}
?>
4

2 に答える 2

2

$errormsgHTMLが出力された後に入力されています。したがって、$errormsg出力時は常に空白になります。

于 2012-11-30T21:28:22.120 に答える
1

ページが読み込まれた時点では、$errormsg はまだ設定されていません。HTMLの前に検証を取得してみてください

于 2012-11-30T21:30:12.120 に答える