0

以下のすべてのエラーのリストを表示したいのですが、一度に 1 つのエラーしか表示されません。コードにエラーのリストが表示されない理由を知っている人はいますか? 以下は、エラーを格納する配列を表示するコード、エラーがない場合に何が起こるかを示すコード、およびエラーがある場合に何が起こるかを示すコードです。

    <?php 

  $getcourseid = (isset($_POST['courseid'])) ? $_POST['courseid'] : '';
  $getcoursename = (isset($_POST['coursename'])) ? $_POST['coursename'] : '';
  $getduration = (isset($_POST['duration'])) ? $_POST['duration'] : '';

        $errors = array();


                  if (!$getcourseid){
                      $errors[] = "You must enter in Course's ID";
              }else if (!$getcoursename){
                  $errors[] = "You must enter in Course's Name";
              }else if (!$getduration){
                      $errors[] = "You must select Course's Duration";
                  }   

          if(!$errors) {

         $insertsql = "
        INSERT INTO Course
            (CourseNo, CourseName, Duration)
          VALUES
            (?, ?, ?)
        ";
        if (!$insert = $mysqli->prepare($insertsql)) {
          // Handle errors with prepare operation here
        }                                           

        $insert->bind_param("sss", $getcourseid, $getcoursename, $getduration);

        $insert->execute();

        if ($insert->errno) {
          // Handle query error here
        }

        $insert->close();

         // don't use $mysqli->prepare here
    $query = "SELECT CourseNo FROM Course WHERE CourseNo = ?";
    // prepare query
    $stmt=$mysqli->prepare($query);
    // You only need to call bind_param once
    $stmt->bind_param("s",$getcourseid);
    // execute query
    $stmt->execute(); 
    // get result and assign variables (prefix with db)
    $stmt->bind_result($dbCourseId);
    //get number of rows
    $stmt->store_result();
    $numrows = $stmt->num_rows();  

              }  



            if(empty($errors)) {
                if ($numrows == 1){
               $errormsg = "<span style='color: green'>Course " . $getcourseid .  " - "  . $getcoursename . " has been Created</span>";
               $getcourseid = "";
               $getcoursename = "";
               $getduration = "";
            }else{
                $errormsg = "An error has occured, Course has not been Created";
            }
            } else {
                if (count($errors) > 0)
                {
                    foreach ($errors AS $Errors)
                    {
                        $errormsg = "{$Errors} <br>"; 
                    }
                }
            }     
        ?>

**ADDITIONAL QUESTION:**



    $form = "
    <form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'>
      <table>
      <tr>
      <td></td>
      <td id='errormsg'>$errormsg</td>
      </tr>
      <tr>
      <td>Course ID:</td>
      <td><input type='text' name='courseid' value='$getcourseid' /></td>
      </tr>
      <tr>
      <td>Course Name:</td>
      <td><input type='text' id='nameofcourse' name='coursename' value='$getcoursename' /></td>
      </tr>
      <tr>
      <td>Duration (Years):</td>
      <td>{$durationHTML}</td>
      </tr>
      <tr>
      <td></td>
      <td><input type='submit' value='Create Course' name='createbtn' /></td>
      </tr>
      </table>
      </form>";

      echo $form;

上記のフォームは、この質問の上部にある php コードの下にあります。今起こっていることは、検証エラーのリストがすべてフォームの上部に表示されていることです。しかし、私が本当に望んでいるのは、各検証エラーが参照しているフォーム機能の下にあることです。

たとえば、コース ID のテキスト入力を入力していない場合、コース ID のテキスト入力の"You must enter in Course's ID"下に検証エラーを表示する必要があります。

コース名のテキスト入力を入力していない場合は、検証エラー"You must enter in Course's Name"をコース名のテキスト入力の下に表示する必要があります。

これを行うには、コードで何を変更する必要がありますか?

4

3 に答える 3

1

試す

      if (!$getcourseid){
          $errors[] = "You must enter in Course's ID";
       } 
     if (!$getcoursename){
         $errors[] = "You must enter in Course's Name";
      }
      if (!$getduration){
          $errors[] = "You must select Course's Duration";
      } 
于 2012-12-09T06:16:20.793 に答える
1
if (!$getcourseid)
{
   $errors[] = "You must enter in Course's ID";
} 
if (!$getcoursename)
{
   $errors[] = "You must enter in Course's Name";
} 
if (!$getduration)
{
   $errors[] = "You must select Course's Duration";
}     
于 2012-12-09T06:17:41.667 に答える
1

私はあなたが理解する必要がある期間に関連するコードを完成させていません.私はあなたに入力のコースIDとコース名の両方のためのロジックをここに与えました.

    <?php 


    $errors = array();
    $getcourseid    = "";
    $getcoursename  = "";
    $errormsg = "";
        if($_POST)
        {
            $getcourseid    = $_POST['courseid'];
            $getcoursename  = $_POST['coursename'];
            if (!$getcourseid){
                  $errors['course_id'] = "You must enter in Course's ID";
            }if (!$getcoursename){
              $errors['course_name'] = "You must enter in Course's Name";
            }
        }



      if(!$errors && $_POST) {

     $insertsql = "
    INSERT INTO Course
        (CourseNo, CourseName, Duration)
      VALUES
        (?, ?, ?)
    ";
    if (!$insert = $mysqli->prepare($insertsql)) {
      // Handle errors with prepare operation here
    }                                           

    $insert->bind_param("sss", $getcourseid, $getcoursename, $getduration);

    $insert->execute();

    if ($insert->errno) {
      // Handle query error here
    }

    $insert->close();

     // don't use $mysqli->prepare here
$query = "SELECT CourseNo FROM Course WHERE CourseNo = ?";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("s",$getcourseid);
// execute query
$stmt->execute(); 
// get result and assign variables (prefix with db)
$stmt->bind_result($dbCourseId);
//get number of rows
$stmt->store_result();
$numrows = $stmt->num_rows();  

          }  

$getcourseid = (!empty($getcourseid))?$getcourseid:"";
$getcoursename = (!empty($getcoursename))?$getcoursename:"";
$durationHTML  = (!empty($durationHTML))?$durationHTML:"";


$error_c_id = (!empty($errors['course_id']))?$errors['course_id']:"";
$error_c_name = (!empty($errors['course_name']))?$errors['course_name']:"";

$form = "
<form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'>
  <table>
  <tr>
  <td>Course ID:</td>
  <td><input type='text' name='courseid' value='".$getcourseid."' />".$error_c_id."</td>
  </tr>
  <tr>
  <td>Course Name:</td>
  <td><input type='text' id='nameofcourse' name='coursename' value='".$getcoursename."' />".$error_c_name."</td>
  </tr>
  <tr>
  <td>Duration (Years):</td>
  <td>{$durationHTML}</td>
  </tr>
  <tr>
  <td></td>
  <td><input type='submit' value='Create Course' name='createbtn' /></td>
  </tr>
  </table>
  </form>";

  echo $form;
?>
于 2012-12-09T07:11:18.950 に答える