2017-04-17 9 views
0

ここに問題があります。まず、私がここでやっているのは学生のための科目登録システムです。私は同じ学生を何度も繰り返し登録することを制限するコードの一部を設定しました。しかし、悲しいことに、それは私に逆の効果をもたらしました。私の誤りは、学生が科目を登録したときに他の生徒がその特定の科目を以前に登録していなくても登録できないということです。どんな助けでも大歓迎です。件名登録に誤りがあります

<?php 

    if(!isset($_POST['submit'])){ 
     exit('Unauthorized access!'); 
    } 

     $name = $_POST['name']; 
     $studentid = $_POST['studentid']; 
     $program = $_POST['program']; 
     $fintake = $_POST['fintake']; 
     $courseid = $_POST['courseid']; 

     include("include/config.php"); 

    //this could be the problem,i'm not sure 
     $check_query = mysqli_query($link, "SELECT r_id FROM course_registration WHERE r_cid='$courseid' limit 1"); 

     if(mysqli_fetch_array($check_query)) 
     { 
      echo 'Error:Course ID:',$courseid,' already exists. <a href="javascript:history.back(-1);">Return</a>'; 
      exit; 
     } 

     $result = mysqli_query($link, "SELECT * FROM course_list WHERE c_cid = '$courseid'"); 

     if(mysqli_fetch_array($result)) 
     { 

      $sql = "INSERT INTO course_registration (r_name,r_sid,r_program,r_fintake,r_cid) VALUES('$name','$studentid','$program','$fintake','$courseid')"; 

      if(mysqli_query($link,$sql)) 
      { 
      exit('Success! Register course successfully. <a href="index.php">Homepage</a>'); 
      } 
      else 
      { 
      echo 'Sorry! Add data failed:',mysqli_error($link),'<br />'; 
      echo 'Click here <a href="javascript:history.back(-1);">Return</a> retry'; 
      } 
     } 
     else 
     { 
      echo 'Sorry! Wrong course id.','<br />'; 
      echo 'Click here <a href="javascript:history.back(-1);">Return</a> retry'; 
     } 
    ?> 

データベース:course_registration

r_id r_name    r_sid r_program r_fintake r_cid 
1 TAN KOON ENG  0187904 DIP-CS  01-2015 DTP-3033 
2 TAN KOON ENG  0187904 DIP-CS  01-2015 DCS-22104 
3 CRISTIANO RONALDO 0190007 DIP-GT  09-2016 DGP-2254 
4 CRISTIANO RONALDO 0190007 DIP-GT  09-2016 DGA-1224 
+0

where where studentid = $ studenidも追加します。 – JYoThI

答えて

0

は、特定のstudentのために存在しているので、あなたが与えられた場合には、この

SELECT r_id FROM course_registration WHERE r_cid='$courseid' AND r_sid='$studentid'" 
+0

は働いていないのはどちらですか?これは主題を見つけ出す方法であり、学生はすでにテーブルに存在しています。 – JYoThI

+0

この問題の解決を手伝ってくれてありがとう!!! –

+0

私の答えが有用な場合は緑のチックでそれをマークすると、将来のユーザーの参照に役立ちます@StevenChen – JYoThI

0

あなたは、これが
$ check_query = mysqli_query($リンク、「 course_registration WHERE r_cid = '$のcourseid' からR_IDを選択して追加してstudentid試すことができ、 r_sid = '$ studentid' "); courseidをされてチェックすることがテーブルに存在するが、courseidをチェックする必要があるあなたの

+0

mysqli_fetch_array($ check_query)の代わりにtry(mysqli_num_rows($ check_query)> 0)と書かれています。これは役に立ちます。 –

+0

この問題の解決を手伝ってくれてありがとう!!! –

0

ようwhere clauseを追加する必要がある、あなたは、データベース内のコースIDをチェックしています1に制限するだけで、あなたのケースではエラーが報告されます。生徒がコースに登録されているかどうかを確認する。 courseidで学生IDもチェックする必要があります。おそらく、このクエリはあなたに役立つかもしれません:

SELECT r_id FROM course_registration WHERE r_sid='$studentid' AND r_cid='$courseid'" 
+0

この問題の解決を手伝ってくれてありがとう!!! –

関連する問題