How to develop Projects (OLP)
Using PHP and Mysql
Part 12
✅ Next Module: Student Performance
Analytics
🎯
Purpose:
To provide students and instructors with insights into learning progress, quiz
performance, and overall course success.
✅
Functionalities to Implement:
For Students:
- View Performance Reports:
Access a summary of their quiz performance, lesson completion, and overall
progress.
- Track Individual Quiz Performance:
View scores, correct/incorrect answers, and overall performance per quiz.
For
Instructors:
- Monitor Student Performance:
View detailed analytics on student progress, quiz results, and performance
across lessons/modules.
- Generate Reports:
Generate detailed reports based on student performance and progress
metrics, either per student or for all students in a module.
Suggested File/Folder Structure:
/analytics/
├── student_performance.php
# Student performance summary
├── quiz_results.php
# Quiz results per student
├── instructor_dashboard.php
# Instructor’s dashboard for monitoring performance
├── generate_report.php
# Generate detailed performance report
Suggested Database Tables:
1. student_performance
(Stores performance summary for each student.)
CREATE
TABLE student_performance (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
module_id
INT
NOT
NULL,
completed_lessons
INT
DEFAULT
0,
total_lessons
INT
NOT
NULL,
quiz_score
DECIMAL(
5,
2)
DEFAULT
0.00,
-- Average score across quizzes
progress_percentage
DECIMAL(
5,
2)
NOT
NULL,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (module_id)
REFERENCES modules(id)
);
2. quiz_scores
(Stores scores for each quiz attempt.)
CREATE
TABLE quiz_scores (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
quiz_id
INT
NOT
NULL,
score
DECIMAL(
5,
2)
NOT
NULL,
attempted_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (quiz_id)
REFERENCES quizzes(id)
);
3. performance_reports
(Stores generated performance reports.)
CREATE
TABLE performance_reports (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
report_data TEXT,
generated_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id)
);
Suggested Logic:
1. Student
Performance (student_performance.php)
o Display
the student's overall progress (e.g., percentage of completed lessons, quiz
scores).
o Query
student_performance
table to get performance metrics for the student.
Example:
$student_id =
$_SESSION[
'student_id'];
// Assume student_id is stored in session
$sql =
"SELECT * FROM student_performance WHERE student_id = ?";
$result =
$db->
query(
$sql);
$performance =
$result->
fetch_assoc();
echo
"Progress: " .
$performance[
'progress_percentage'] .
"%";
echo
"Completed Lessons: " .
$performance[
'completed_lessons'] .
" / " .
$performance[
'total_lessons'];
echo
"Quiz Score: " .
$performance[
'quiz_score'] .
"/100";
2. Quiz
Performance (quiz_results.php)
o Display
the student's individual quiz results (correct/incorrect answers, overall
score).
o Query
quiz_scores
table to retrieve results for the student.
Example:
$quiz_id =
$_GET[
'quiz_id'];
// Get quiz_id from URL or form submission
$sql =
"SELECT * FROM quiz_scores WHERE student_id = ? AND quiz_id = ?";
$result =
$db->
query(
$sql);
$quiz_result =
$result->
fetch_assoc();
echo
"Score: " .
$quiz_result[
'score'] .
"/100";
3. Instructor
Dashboard (instructor_dashboard.php)
o Display
an overview of all students’ progress in a module/course.
o Provide
the ability to drill down into individual students’ performance.
o Query
student_performance
table to retrieve summary data for all students.
Example:
$sql =
"SELECT student_id, progress_percentage, quiz_score FROM student_performance WHERE module_id = ?";
$result =
$db->
query(
$sql);
while (
$row =
$result->
fetch_assoc()) {
echo
"Student ID: " .
$row[
'student_id'] .
" Progress: " .
$row[
'progress_percentage'] .
"% Quiz Score: " .
$row[
'quiz_score'] .
"<br>";
}
4. Generate
Performance Report (generate_report.php)
o Allow
instructors to generate detailed reports for specific students or for the
entire class.
o Store
the report in performance_reports
table.
Example:
$student_id =
$_GET[
'student_id'];
$sql =
"SELECT * FROM student_performance WHERE student_id = ?";
$result =
$db->
query(
$sql);
$student_performance =
$result->
fetch_assoc();
$report_data =
"Student ID: " .
$student_performance[
'student_id'] .
"\n";
$report_data .=
"Progress: " .
$student_performance[
'progress_percentage'] .
"%\n";
$report_data .=
"Completed Lessons: " .
$student_performance[
'completed_lessons'] .
"\n";
$report_data .=
"Quiz Score: " .
$student_performance[
'quiz_score'] .
"\n";
// Insert the report into the database
$sql_insert =
"INSERT INTO performance_reports (student_id, report_data) VALUES (?, ?)";
$stmt =
$db->
prepare(
$sql_insert);
$stmt->
bind_param(
"is",
$student_id,
$report_data);
$stmt->
execute();
Sample Queries:
1. Fetch
Student’s Performance Summary
SELECT completed_lessons, total_lessons, quiz_score, progress_percentage
FROM student_performance
WHERE student_id
= ?
AND module_id
= ?;
2. Fetch
Quiz Score for a Student
SELECT score
FROM quiz_scores
WHERE student_id
= ?
AND quiz_id
= ?;
3. Generate
Performance Report for a Student
INSERT
INTO performance_reports (student_id, report_data)
VALUES (?, ?);
Next Steps:
- Implement Performance Tracking
Logic: Build the queries to calculate and
display performance, then integrate them into the frontend.
- Frontend Design:
Create the UI to display performance summaries and individual quiz
results.
- Testing:
Test the performance analytics for various user roles (students and
instructors), ensuring that the data is accurate.
✅ Next Module: Course Completion and
Certification
🎯
Purpose:
To allow students to complete the course and receive a certificate upon
successful completion. This module should handle marking the course as finished
and generating a certificate for the student.
✅
Functionalities to Implement:
For Students:
- Complete Course:
Mark the course as completed when all lessons are finished.
- Download Certificate:
Generate and download a certificate of completion once the course is
complete.
For
Instructors:
- Approve Completion:
Optionally, instructors can approve or manually mark a course as completed
for a student.
- Generate Certificates:
Instructors can generate certificates for students who have completed the
course.
Suggested File/Folder Structure:
/certificate/
├── complete_course.php
# Marks the course as completed for the student
├── certificate_template.php
# Template for the course completion certificate
├── generate_certificate.php
# Generates and allows downloading of the certificate
├── instructor_approve.php
# Allows instructors to approve course completion for students
Suggested Database Tables:
1. course_completions
(Tracks whether a student has completed the course or is still in progress.)
CREATE
TABLE course_completions (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
course_id
INT
NOT
NULL,
completed_at
TIMESTAMP
NULL,
certificate_downloaded
BOOLEAN
DEFAULT
FALSE,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (course_id)
REFERENCES courses(id)
);
2. certificates
(Stores generated certificates for students.)
CREATE
TABLE certificates (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
course_id
INT
NOT
NULL,
certificate_url
VARCHAR(
255),
generated_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (course_id)
REFERENCES courses(id)
);
Suggested Logic:
1. Complete
Course (complete_course.php)
o Marks
the course as completed when all lessons are finished and updates the course_completions
table.
Example:
$student_id =
$_SESSION[
'student_id'];
// Assume student ID is stored in session
$course_id =
$_GET[
'course_id'];
// Assume course ID is passed in the URL
// Check if all lessons are completed
$sql =
"SELECT COUNT(*) AS completed_lessons FROM lesson_progress WHERE student_id = ? AND course_id = ? AND status = 'Completed'";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"ii",
$student_id,
$course_id);
$stmt->
execute();
$result =
$stmt->
get_result();
$row =
$result->
fetch_assoc();
// If all lessons are completed
$total_lessons =
getTotalLessonsForCourse(
$course_id);
// Custom function to fetch total lessons for the course
if (
$row[
'completed_lessons'] ==
$total_lessons) {
// Update course completion status
$update_sql =
"UPDATE course_completions SET completed_at = NOW() WHERE student_id = ? AND course_id = ?";
$stmt =
$db->
prepare(
$update_sql);
$stmt->
bind_param(
"ii",
$student_id,
$course_id);
$stmt->
execute();
echo
"Course completed! You can now download your certificate.";
}
else {
echo
"Please complete all lessons to finish the course.";
}
2. Generate
Certificate (generate_certificate.php)
o Generates
a certificate for the student and allows them to download it once they have
completed the course.
o You
can create a certificate template using HTML/CSS or a PDF library (like TCPDF
or FPDF
)
to generate a downloadable certificate.
Example
(HTML template for certificate):
$student_id =
$_SESSION[
'student_id'];
$course_id =
$_GET[
'course_id'];
// Check if the student has completed the course
$sql =
"SELECT * FROM course_completions WHERE student_id = ? AND course_id = ? AND completed_at IS NOT NULL";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"ii",
$student_id,
$course_id);
$stmt->
execute();
$result =
$stmt->
get_result();
if (
$result->num_rows >
0) {
// Fetch student and course data
$student_data =
getStudentData(
$student_id);
// Custom function to get student details
$course_data =
getCourseData(
$course_id);
// Custom function to get course details
// Generate certificate (you can use a PDF library for this)
$certificate_data =
"<h1>Certificate of Completion</h1>";
$certificate_data .=
"<p>This is to certify that <b>" .
$student_data[
'name'] .
"</b> has successfully completed the course <b>" .
$course_data[
'title'] .
"</b>.</p>";
$certificate_data .=
"<p>Completed on: " .
date(
"F j, Y") .
"</p>";
// Save certificate details in the database
$certificate_url =
saveCertificate(
$student_id,
$course_id,
$certificate_data);
// Custom function to save certificate
echo
"<a href='" .
$certificate_url .
"'>Download your certificate</a>";
}
else {
echo
"You must complete the course before downloading your certificate.";
}
3. Instructor
Approve Completion (instructor_approve.php)
o Allows
instructors to manually approve or mark a course as completed for a student if
necessary.
o Optionally,
this could trigger a notification to the student once approved.
Example:
$student_id =
$_GET[
'student_id'];
$course_id =
$_GET[
'course_id'];
// Check if the instructor has the permission to approve
if (
isInstructor(
$user_id)) {
// Custom function to check instructor's role
$sql =
"UPDATE course_completions SET completed_at = NOW() WHERE student_id = ? AND course_id = ?";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"ii",
$student_id,
$course_id);
$stmt->
execute();
echo
"Course marked as completed for the student!";
}
else {
echo
"You do not have permission to approve completion for this student.";
}
✅ Next Module: Student Interaction and Feedback
🎯
Purpose:
To allow students to interact with instructors and fellow students through
feedback mechanisms, course ratings, and discussion forums. This module will
help enhance the learning experience by enabling students to provide feedback
on lessons and interact with peers.
✅
Functionalities to Implement:
For
Students:
- Rate Lessons/Courses:
Students can rate lessons or the entire course.
- Provide Feedback:
Students can provide textual feedback on individual lessons or the course
in general.
- Discussion Forum:
Students can post questions and respond to others’ questions on lessons or
course material.
For
Instructors:
- View Feedback:
Instructors can view feedback on their lessons and courses.
- Moderate Forum:
Instructors can moderate forum discussions (approve, delete, or respond).
- Course Rating:
Instructors can see the average rating of their course or lessons.
Suggested File/Folder Structure:
/feedback/
├── lesson_rating.php
# Page to rate a lesson
├── course_rating.php
# Page to rate the entire course
├── submit_feedback.php
# Submit textual feedback for lessons or course
├── discussion_forum.php
# Discussion forum for lessons
├── view_feedback.php
# Instructors view feedback
├── moderate_forum.php
# Instructors moderate the forum
Suggested Database Tables:
1. lesson_ratings
(Stores ratings given by students for individual lessons.)
CREATE
TABLE lesson_ratings (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
lesson_id
INT
NOT
NULL,
rating
INT
NOT
NULL,
-- Rating on a scale of 1 to 5
feedback TEXT,
created_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (lesson_id)
REFERENCES lessons(id)
);
2. course_ratings
(Stores ratings given by students for the entire course.)
CREATE
TABLE course_ratings (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
course_id
INT
NOT
NULL,
rating
INT
NOT
NULL,
-- Rating on a scale of 1 to 5
feedback TEXT,
created_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (course_id)
REFERENCES courses(id)
);
3. discussion_forum
(Stores forum posts and replies for course-related discussions.)
CREATE
TABLE discussion_forum (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
course_id
INT
NOT
NULL,
post_content TEXT
NOT
NULL,
parent_post_id
INT
NULL,
-- For replies to posts, NULL for original posts
created_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (course_id)
REFERENCES courses(id),
FOREIGN KEY (parent_post_id)
REFERENCES discussion_forum(id)
);
4. forum_moderation
(Stores moderation actions for posts and comments.)
CREATE
TABLE forum_moderation (
id
INT AUTO_INCREMENT
PRIMARY KEY,
moderator_id
INT
NOT
NULL,
post_id
INT
NOT
NULL,
action ENUM(
'Approved',
'Deleted')
NOT
NULL,
action_taken_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (moderator_id)
REFERENCES users(id),
FOREIGN KEY (post_id)
REFERENCES discussion_forum(id)
);
Suggested Logic:
1. Rate
a Lesson (lesson_rating.php)
o Allows
students to rate a lesson on a scale of 1 to 5 and provide feedback.
Example:
$lesson_id =
$_GET[
'lesson_id'];
// Assume lesson ID is passed in the URL
$student_id =
$_SESSION[
'student_id'];
// Assume student ID is stored in session
$rating =
$_POST[
'rating'];
// Rating submitted by the student
$feedback =
$_POST[
'feedback'];
// Feedback submitted by the student
// Insert rating and feedback into the database
$sql =
"INSERT INTO lesson_ratings (student_id, lesson_id, rating, feedback) VALUES (?, ?, ?, ?)";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"iiis",
$student_id,
$lesson_id,
$rating,
$feedback);
$stmt->
execute();
echo
"Thank you for your feedback!";
2. Rate
the Entire Course (course_rating.php)
o Allows
students to rate the entire course on a scale of 1 to 5 and provide feedback.
Example:
$course_id =
$_GET[
'course_id'];
// Assume course ID is passed in the URL
$student_id =
$_SESSION[
'student_id'];
// Assume student ID is stored in session
$rating =
$_POST[
'rating'];
// Rating submitted by the student
$feedback =
$_POST[
'feedback'];
// Feedback submitted by the student
// Insert rating and feedback into the database
$sql =
"INSERT INTO course_ratings (student_id, course_id, rating, feedback) VALUES (?, ?, ?, ?)";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"iiis",
$student_id,
$course_id,
$rating,
$feedback);
$stmt->
execute();
echo
"Thank you for your feedback!";
3. Discussion
Forum (discussion_forum.php)
o Allows
students to post questions and responses related to the lessons or course.
Example:
$course_id =
$_GET[
'course_id'];
// Assume course ID is passed in the URL
$student_id =
$_SESSION[
'student_id'];
// Assume student ID is stored in session
$post_content =
$_POST[
'post_content'];
// Forum post submitted by the student
// Insert post into the database
$sql =
"INSERT INTO discussion_forum (student_id, course_id, post_content) VALUES (?, ?, ?)";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"iis",
$student_id,
$course_id,
$post_content);
$stmt->
execute();
echo
"Your post has been submitted!";
4. Instructor
Moderation (moderate_forum.php)
o Allows
instructors to moderate forum posts (approve or delete posts).
Example:
$post_id =
$_GET[
'post_id'];
// Assume post ID is passed in the URL
$action =
$_POST[
'action'];
// Action (approve or delete) submitted by the instructor
$moderator_id =
$_SESSION[
'user_id'];
// Assume instructor's ID is stored in session
// Insert moderation action into the database
$sql =
"INSERT INTO forum_moderation (moderator_id, post_id, action) VALUES (?, ?, ?)";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"iis",
$moderator_id,
$post_id,
$action);
$stmt->
execute();
if (
$action ==
'Approved') {
echo
"The post has been approved.";
}
else {
echo
"The post has been deleted.";
}
Sample Queries:
1. Retrieve
Lesson Ratings
SELECT
AVG(rating)
AS average_rating
FROM lesson_ratings
WHERE lesson_id
= ?;
2. Retrieve
Course Ratings
SELECT
AVG(rating)
AS average_rating
FROM course_ratings
WHERE course_id
= ?;
3. Get
Discussion Forum Posts
SELECT
*
FROM discussion_forum
WHERE course_id
= ?
ORDER
BY created_at
DESC;
4. Get
Moderation History
SELECT
*
FROM forum_moderation
WHERE post_id
= ?;
✅ Next Module: Certification and
Achievement Tracking
🎯
Purpose:
To provide students with certificates upon successful completion of courses and
track their achievements across different modules, lessons, and quizzes. This
module aims to motivate students by recognizing their progress and
accomplishments.
✅
Functionalities to Implement:
For
Students:
- Earn Certificates:
Students can earn a certificate upon completing all lessons, quizzes, and
assessments within a course/module.
- View Achievements:
Students can view their achievements, including the number of completed
lessons, passed quizzes, and certificates earned.
For
Instructors:
- Issue Certificates:
Instructors can issue certificates to students after reviewing their
progress.
- Monitor Student Progress:
Instructors can monitor how far each student is in completing lessons,
quizzes, and their achievements.
- Customizable Certificates:
Instructors can create customizable certificates (e.g., with logos,
signatures, course completion details).
Suggested File/Folder Structure:
/certificates/
├── issue_certificate.php
# Instructors issue certificates
├── view_certificates.php
# Students view their earned certificates
├── achievement_tracker.php
# Students track their learning achievements
├── generate_certificate.php
# Generate certificate dynamically (PDF or image)
Suggested Database Tables:
1. certificates
(Stores information about certificates issued to students.)
CREATE
TABLE certificates (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
course_id
INT
NOT
NULL,
issued_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
certificate_url
VARCHAR(
255),
-- URL to the certificate (if saved as a file)
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (course_id)
REFERENCES courses(id)
);
2. student_achievements
(Stores student achievements, such as completed lessons, passed quizzes, etc.)
CREATE
TABLE student_achievements (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
course_id
INT
NOT
NULL,
lesson_id
INT
NOT
NULL,
achievement_type ENUM(
'Lesson Completion',
'Quiz Passed')
NOT
NULL,
achievement_date
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (course_id)
REFERENCES courses(id),
FOREIGN KEY (lesson_id)
REFERENCES lessons(id)
);
3. lesson_completion
(Stores information on which lessons are completed by the student.)
CREATE
TABLE lesson_completion (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
lesson_id
INT
NOT
NULL,
completed_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (lesson_id)
REFERENCES lessons(id)
);
4. quiz_results
(Stores quiz results for students.)
CREATE
TABLE quiz_results (
id
INT AUTO_INCREMENT
PRIMARY KEY,
student_id
INT
NOT
NULL,
quiz_id
INT
NOT
NULL,
score
INT
NOT
NULL,
-- Score out of total possible points
passed
BOOLEAN
DEFAULT
FALSE,
-- Whether the student passed the quiz
completed_at
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP,
FOREIGN KEY (student_id)
REFERENCES users(id),
FOREIGN KEY (quiz_id)
REFERENCES quizzes(id)
);
Suggested Logic:
1. Issue
Certificate (issue_certificate.php)
o Allows
instructors to issue certificates to students who have completed the course and
its associated lessons and quizzes.
Example:
$student_id =
$_GET[
'student_id'];
// Student ID passed in the URL
$course_id =
$_GET[
'course_id'];
// Course ID passed in the URL
$completion_check =
checkStudentCompletion(
$student_id,
$course_id);
// Check if student completed all lessons and quizzes
if (
$completion_check) {
// Generate a certificate (could be a PDF or an image)
$certificate_url =
generateCertificate(
$student_id,
$course_id);
// Insert certificate information into the database
$sql =
"INSERT INTO certificates (student_id, course_id, certificate_url) VALUES (?, ?, ?)";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"iis",
$student_id,
$course_id,
$certificate_url);
$stmt->
execute();
echo
"Certificate issued successfully!";
}
else {
echo
"Student has not completed all required lessons or quizzes.";
}
function
checkStudentCompletion(
$student_id,
$course_id) {
// Logic to check if the student has completed all lessons and quizzes
// This can involve checking the lesson_completion and quiz_results tables
return
true;
// Simplified for this example
}
2. View
Certificates (view_certificates.php)
o Allows
students to view their certificates if they have earned any.
Example:
$student_id =
$_SESSION[
'student_id'];
// Student's ID from session
$sql =
"SELECT * FROM certificates WHERE student_id = ?";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"i",
$student_id);
$stmt->
execute();
$result =
$stmt->
get_result();
if (
$result->num_rows >
0) {
while (
$certificate =
$result->
fetch_assoc()) {
echo
"Certificate for Course ID: " .
$certificate[
'course_id'] .
" - <a href='" .
$certificate[
'certificate_url'] .
"'>View Certificate</a><br>";
}
}
else {
echo
"No certificates found.";
}
3. Track
Achievements (achievement_tracker.php)
o Allows
students to track their achievements, such as lesson completions and quiz
results.
Example:
$student_id =
$_SESSION[
'student_id'];
// Student's ID from session
$sql =
"SELECT * FROM student_achievements WHERE student_id = ?";
$stmt =
$db->
prepare(
$sql);
$stmt->
bind_param(
"i",
$student_id);
$stmt->
execute();
$result =
$stmt->
get_result();
if (
$result->num_rows >
0) {
while (
$achievement =
$result->
fetch_assoc()) {
echo
"Achievement Type: " .
$achievement[
'achievement_type'] .
" - Date: " .
$achievement[
'achievement_date'] .
"<br>";
}
}
else {
echo
"No achievements found.";
}
4. Generate
Certificate (generate_certificate.php)
o Dynamically
generate a certificate for the student in PDF or image format (e.g., using
libraries like TCPDF or GD).
Example
(simplified):
function
generateCertificate(
$student_id,
$course_id) {
$certificate_url =
"/certificates/certificate_" .
$student_id .
"_" .
$course_id .
".pdf";
// Generate a PDF certificate using a library like TCPDF
// Here, we are simulating the PDF generation logic
$pdf =
new
TCPDF();
$pdf->
AddPage();
$pdf->
SetFont(
'helvetica',
'',
12);
$pdf->
Write(
0,
"Certificate of Completion\n\nCourse: " .
$course_id .
"\nStudent: " .
$student_id);
$pdf->
Output(
$certificate_url,
'F');
return
$certificate_url;
}