How to develop Projects(OLP) Using PHP and Mysql
Part 10
9️⃣ Online Learning Platform
✅ Module 2: Add Lessons / Course Content
🎯 Purpose:
Allow teachers to add video lessons or structured content under each course.
Functionalities:
- ✅ Add lessons (video, text, PDF, etc.) to courses
- ✅ Edit lesson details
- ✅ Delete lessons
- ✅ View lessons as a list under each course
- ✅ Maintain lesson order (sequence)
Project Structure:
│── /lessons/
│ ├── add_lesson.php # Add a lesson to a course
│ ├── edit_lesson.php # Edit lesson content
│ ├── delete_lesson.php # Delete a lesson
│ ├── lesson_list.php # List all lessons in a course
│ ├── view_lesson.php # View single lesson
Database Table:
CREATE TABLE lessons (
id INT AUTO_INCREMENT PRIMARY KEY,
course_id INT NOT NULL,
title VARCHAR(255) NOT NULL,
content TEXT, -- lesson description or HTML content
video_url VARCHAR(255), -- YouTube or local storage path
file_url VARCHAR(255), -- for PDFs or extra files
lesson_order INT DEFAULT 1, -- for sequencing
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE
);
✅ /lessons/add_lesson.php
<?php
include '../db.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$course_id = $_POST['course_id'];
$title = mysqli_real_escape_string($conn, $_POST['title']);
$content = mysqli_real_escape_string($conn, $_POST['content']);
$video_url = mysqli_real_escape_string($conn, $_POST['video_url']);
$file_url = mysqli_real_escape_string($conn, $_POST['file_url']);
$lesson_order = $_POST['lesson_order'];
$sql = "INSERT INTO lessons (course_id, title, content, video_url, file_url, lesson_order)
VALUES ('$course_id', '$title', '$content', '$video_url', '$file_url', '$lesson_order')";
if (mysqli_query($conn, $sql)) {
echo "Lesson added successfully!";
} else {
echo "Error: " . mysqli_error($conn);
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Add New Lesson</title>
</head>
<body>
<h2>Add New Lesson</h2>
<form action="" method="POST">
<label for="course_id">Course ID:</label><br>
<input type="number" name="course_id" id="course_id" required><br><br>
<label for="title">Lesson Title:</label><br>
<input type="text" name="title" id="title" required><br><br>
<label for="content">Lesson Content:</label><br>
<textarea name="content" id="content" rows="5" cols="40"></textarea><br><br>
<label for="video_url">Video URL:</label><br>
<input type="text" name="video_url" id="video_url"><br><br>
<label for="file_url">File URL:</label><br>
<input type="text" name="file_url" id="file_url"><br><br>
<label for="lesson_order">Lesson Order:</label><br>
<input type="number" name="lesson_order" id="lesson_order" value="1"><br><br>
<input type="submit" value="Add Lesson">
</form>
</body>
</html>
✅ /lessons/edit_lesson.php
<?php
include '../db.php';
$lesson = [
'id' => '',
'title' => '',
'content' => '',
'video_url' => '',
'file_url' => '',
'lesson_order' => ''
];
if (isset($_GET['lesson_id'])) {
$lesson_id = $_GET['lesson_id'];
$result = mysqli_query($conn, "SELECT * FROM lessons WHERE id='$lesson_id'");
if ($result && mysqli_num_rows($result) > 0) {
$lesson = mysqli_fetch_assoc($result);
} else {
echo "Lesson not found!";
}
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$lesson_id = $_POST['lesson_id'];
$title = mysqli_real_escape_string($conn, $_POST['title']);
$content = mysqli_real_escape_string($conn, $_POST['content']);
$video_url = mysqli_real_escape_string($conn, $_POST['video_url']);
$file_url = mysqli_real_escape_string($conn, $_POST['file_url']);
$lesson_order = $_POST['lesson_order'];
$sql = "UPDATE lessons
SET title='$title', content='$content', video_url='$video_url', file_url='$file_url', lesson_order='$lesson_order'
WHERE id='$lesson_id'";
if (mysqli_query($conn, $sql)) {
echo "Lesson updated successfully!";
} else {
echo "Error: " . mysqli_error($conn);
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Edit Lesson</title>
</head>
<body>
<h2>Edit Lesson</h2>
<form method="POST" action="">
<input type="hidden" name="lesson_id" value="<?php echo htmlspecialchars($lesson['id']); ?>">
<label for="title">Lesson Title:</label><br>
<input type="text" name="title" id="title" value="<?php echo htmlspecialchars($lesson['title']); ?>" required><br><br>
<label for="content">Lesson Content:</label><br>
<textarea name="content" id="content" rows="5" cols="40"><?php echo htmlspecialchars($lesson['content']); ?></textarea><br><br>
<label for="video_url">Video URL:</label><br>
<input type="text" name="video_url" id="video_url" value="<?php echo htmlspecialchars($lesson['video_url']); ?>"><br><br>
<label for="file_url">File URL:</label><br>
<input type="text" name="file_url" id="file_url" value="<?php echo htmlspecialchars($lesson['file_url']); ?>"><br><br>
<label for="lesson_order">Lesson Order:</label><br>
<input type="number" name="lesson_order" id="lesson_order" value="<?php echo htmlspecialchars($lesson['lesson_order']); ?>"><br><br>
<input type="submit" value="Update Lesson">
</form>
</body>
</html>
✅ /lessons/delete_lesson.php
<?php
include '../db.php';
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$lesson_id =
$_POST['lesson_id'];
$sql = "DELETE
FROM lessons WHERE id='$lesson_id'";
if (mysqli_query($conn,
$sql)) {
echo "Lesson
deleted successfully!";
} else {
echo "Error:
" . mysqli_error($conn);
}
}
?>
✅ /lessons/lesson_list.php
<?php
include '../db.php';
if (isset($_GET['course_id'])) {
$course_id =
$_GET['course_id'];
$sql = "SELECT
* FROM lessons WHERE course_id='$course_id' ORDER BY lesson_order ASC";
$result = mysqli_query($conn,
$sql);
echo "<h2>Lessons
List</h2><ul>";
while ($row
= mysqli_fetch_assoc($result)) {
echo "<li><strong>{$row['lesson_order']}.
{$row['title']}</strong><br>";
echo "Video:
<a href='{$row['video_url']}'
target='_blank'>Watch</a><br>";
echo "File:
<a href='{$row['file_url']}' download>Download</a><br>";
echo "<a
href='view_lesson.php?lesson_id={$row['id']}'>View
Details</a></li><hr>";
}
echo "</ul>";
} else {
echo "Course
ID not specified.";
}
?>
✅ /lessons/view_lesson.php
<?php
include '../db.php';
if (isset($_GET['lesson_id'])) {
$lesson_id =
$_GET['lesson_id'];
$sql = "SELECT
* FROM lessons WHERE id='$lesson_id'";
$result = mysqli_query($conn,
$sql);
$lesson = mysqli_fetch_assoc($result);
echo "<h2>{$lesson['title']}</h2>";
echo "<p><strong>Content:</strong><br>{$lesson['content']}</p>";
if (!empty($lesson['video_url']))
{
echo "<p><strong>Video:</strong><br><a
href='{$lesson['video_url']}' target='_blank'>Watch
Video</a></p>";
}
if (!empty($lesson['file_url']))
{
echo "<p><strong>File:</strong><br><a
href='{$lesson['file_url']}' download>Download
File</a></p>";
}
} else {
echo "Lesson
ID not found.";
}
?>