2017-07-16 67 views
0
 if (isset($_POST['enroll'])) { 
      $student_id  = intval($session->user_id); 
      $course_id  = $course_id; 
      $date  = date('Y-m-d'); 

我需要PDO功能,如果用戶已經COURSE_ID存在返回false。如何驗證用戶是否已經註冊的課程在PHP

***if ($enroll->student_id has this->course_id) { 
      $message = "<b>U already enrolled continue</b>"; 
    }else{*** 
       $enroll->user_id = $user_id; 
       $enroll->course_id = $course_id; 
       $enroll->en_date = $date; 
       $enroll->create(); 
//   } 

這是我的學生表列

  1. std_id
  2. FIRST_NAME

的,這是我的課程表

  1. COURSE_ID
  2. 課程名稱

我也有報名表

  1. ID
  2. student_id數據
  3. COURSE_ID

我需要驗證,如果用戶已經使用PHP PDO功能 也採取特定課程的學生人數。

+0

您需要在問題中添加一些代碼。你是否要求SQL查詢來獲得你需要的或者PDO代碼來處理它? – JimL

回答

1

您可以使用以下功能檢查用戶是否已經註冊。

function user_enroll($student_id, $course_id){ 
$stmt = $conn->prepare('SELECT * FROM enroll WHERE student_id=? AND course_id=?'); 
$stmt->bindParam(1, $student_id, PDO::PARAM_INT); 
$stmt->bindParam(2, $course_id, PDO::PARAM_INT); 
$stmt->execute(); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 

if($row) 
{ 
    return false; // course already taken 
} 
return true; // course not taken 

} 

要做到像返回用戶註冊或不註冊的學生和註冊的總人數指定課程。

function user_enroll($student_id, $course_id){ 
$stmt = $conn->prepare('SELECT * FROM enroll WHERE student_id=? AND course_id=?'); 
$stmt->bindParam(1, $student_id, PDO::PARAM_INT); 
$stmt->bindParam(2, $course_id, PDO::PARAM_INT); 
$stmt->execute(); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 

$total_enrolled_students = $pdo->query('select count(*) from enroll WHERE course_id='.$course_id)->fetchColumn(); 
$ret_data = array('user_enroll' => true,'total_std_enrolled'=>$total_enrolled_students); 

if($row) 
{ 
    $ret_data['user_enroll'] = false; 
    return $ret_data; // course already taken 
} 
return $ret_data; // course not taken 

所以這個函數返回兩個元素的數組。一個是user_enroll這是供學生註冊與否的,其他是total_std_enrolled這是在線課程的總人數。

+0

這將如何爲您提供每門課程的學生人數?其次,作爲一個最佳實踐,絕對不應該做*,而是獲取所需的列。 *總是一個沉重的查詢。 –

+0

您想要返回以上功能的給定課程的學生總數或其他功能返回每個課程的總學生數? –

+0

這個問題提到'如果用戶已經採取了課程'和'採取特定課程的學生人數' –

1

這個查詢驗證,如果學生已報名參加提到的課程:

SELECT id FROM enrolled_table WHERE student_id = STUDENT_ID_PARAMETER and course_id = COURSE_ID_PARAMETER 

而這個查詢會給你的學生人數每門課程:

SELECT count(id), course_id FROM enrolled_table 
WHERE student_id not null 
GROUP BY course_id 
ORDER BY count(id) DESC;