2017-04-17 91 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

add where clause studentid = $ studenid。 – JYoThI

回答

0

你检查courseid是存在于表,但需要检查courseid是存在于特定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($链接,“选择R_ID FROM course_registration添加和studentid WHERE R_CID = '$ courseid' AND r_sid = '$ studentid'“);

+0

尝试(mysqli_num_rows($ check_query)> 0)代替mysqli_fetch_array($ check_query)我认为这会有帮助 –

+0

谢谢你帮助我解决这个问题! –

0

添加where clause在您的特定情况下,要检查数据库的过程中ID并且仅限于1,因此它会在您的情况中报告错误。检查一个学生是否参加了课程。你还必须用courseid检查学号。也许,这个查询可能对你有帮助:

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

谢谢你帮助我解决这个问题! –