1

ユーザーがフォームを送信するときにエラーがあるかどうかをphpがチェックする場所があるこの検証を完了するための助けが必要です:

$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();  

          }

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

私の質問は、エラーがなくデータベースが正常に完了した場合に成功メッセージを表示したい、またはフォームがエラーなしで完了したがデータベースが完了できなかった場合にエラーメッセージを表示したいということです。$errormsgまた、変数へのすべてのメッセージを表示したいですか? どうすればそれができるのか聞いてもいいですか?

以下は私が達成したいものですが、上記のコードが正しいかどうかはわかりません:

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

           }
4

2 に答える 2

1

ロジックは次のようになります。エラーの配列があると仮定すると、単純にこれを行うことができます

if(empty($errormsg)) {
   //Go Ahead
} elseif(!empty($errormsg)) {
  //if(isset($errormsg['index'])) {
     echo 'Error'; 
  }
}

詳細な説明

次のような3つのエラーがあるとします

$errors[0] = 'Username is invalid';
$errors[1] = 'Password is invalid';
$errors[2] = 'Third error';

if(empty($errors)) {
   //Go Ahead
} else {
    if(isset($errors[0])) {
       echo $errors[0]; 
    } elseif (isset($errors[1])) {
       echo $errors[1];
    } elseif (isset($errors[1])) {
       echo $errors[1]; 
    }
}
于 2012-12-08T15:58:49.097 に答える
1

jQueryで試してください:

test.php で

...
$data['status'] = 1; // Status of the operation (1: Ok, 0: Error)
$data['msg'] = $msg; // Error message or success
header('Content-Type: application/json');
echo json_encode($data);

test.js で:

$("#send").click(function () {
    $.post('test.php', $('#yourForm').serialize(), function(data){
        if(data.status == 1){
            $('#result').show().addClass('success').html(data.msg);
        }
        else{
            $('#result').show().addClass('error').html(data.msg);
        }
    }, "json");
    return false;
});

test.html で:

<form method="post" id="yourForm">
...
<input id="send" type="button"/>
<span id="result"></span>
</form>

test.css で:

.success{
    color: blue;
}
.error{
    color: red;
}

それが多少役立つことを願っています。

よろしく。

于 2012-12-08T16:26:31.927 に答える