2017-07-16 66 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;