<?php
// Include database configuration
require_once '../admin/database/db_config.php';
// Include header
include_once 'includes/header.php';
// Handle review deletion
if (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
$review_id = $_GET['delete'];
$delete_query = "DELETE FROM course_reviews WHERE id = " . $review_id;
$delete_result = $conn->query($delete_query);
if ($delete_result) {
$delete_message = "Review deleted successfully!";
} else {
$delete_error = "Error deleting review: " . $conn->error;
}
}
// Handle adding a new review
if (isset($_POST['add_review'])) {
$course_id = $_POST['course_id'];
$user_id = $_POST['user_id'];
$rating = $_POST['rating'];
$comment = $_POST['comment'];
// Check if comment column exists
$columnExistsResult = $conn->query("SHOW COLUMNS FROM course_reviews LIKE 'comment'");
$commentColumnExists = ($columnExistsResult && $columnExistsResult->num_rows > 0);
// Prepare the query based on column existence
if ($commentColumnExists) {
$insert_query = "INSERT INTO course_reviews (course_id, user_id, rating, comment, created_at)
VALUES ('$course_id', '$user_id', '$rating', '$comment', NOW())";
} else {
$insert_query = "INSERT INTO course_reviews (course_id, user_id, rating, created_at)
VALUES ('$course_id', '$user_id', '$rating', NOW())";
}
$insert_result = $conn->query($insert_query);
if ($insert_result) {
$success_message = "Review added successfully!";
} else {
$error_message = "Error adding review: " . $conn->error;
}
}
// Check if course_reviews table exists
$table_exists = $conn->query("SHOW TABLES LIKE 'course_reviews'");
$course_reviews_exists = ($table_exists && $table_exists->num_rows > 0);
// Create table if it doesn't exist
if (!$course_reviews_exists && isset($_POST['create_table'])) {
$create_table_sql = "CREATE TABLE course_reviews (
id INT(11) NOT NULL AUTO_INCREMENT,
course_id INT(11) NOT NULL,
user_id INT(11) NOT NULL,
rating INT(1) NOT NULL,
comment TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_course_id (course_id),
KEY idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
$create_result = $conn->query($create_table_sql);
if ($create_result) {
$success_message = "Course reviews table created successfully!";
$course_reviews_exists = true;
} else {
$error_message = "Error creating course_reviews table: " . $conn->error;
}
}
// Get existing reviews if the table exists
$reviews = [];
if ($course_reviews_exists) {
$reviews_query = "SELECT cr.*, c.title as course_title, CONCAT(u.first_name, ' ', u.last_name) as user_name
FROM course_reviews cr
LEFT JOIN courses c ON cr.course_id = c.id
LEFT JOIN users u ON cr.user_id = u.id
ORDER BY cr.created_at DESC";
$reviews_result = $conn->query($reviews_query);
if ($reviews_result && $reviews_result->num_rows > 0) {
while ($row = $reviews_result->fetch_assoc()) {
$reviews[] = $row;
}
}
}
// Get courses for the add review form
$courses = [];
$courses_query = "SELECT id, title FROM courses ORDER BY title ASC";
$courses_result = $conn->query($courses_query);
if ($courses_result && $courses_result->num_rows > 0) {
while ($row = $courses_result->fetch_assoc()) {
$courses[] = $row;
}
}
// Get users for the add review form
$users = [];
$users_query = "SELECT id, first_name, last_name FROM users ORDER BY first_name ASC";
$users_result = $conn->query($users_query);
if ($users_result && $users_result->num_rows > 0) {
while ($row = $users_result->fetch_assoc()) {
$users[] = $row;
}
}
?>
<div class="container-fluid">
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Manage Course Reviews</h1>
</div>
<?php if (isset($success_message)): ?>
<div class="alert alert-success"><?php echo $success_message; ?></div>
<?php endif; ?>
<?php if (isset($error_message)): ?>
<div class="alert alert-danger"><?php echo $error_message; ?></div>
<?php endif; ?>
<?php if (isset($delete_message)): ?>
<div class="alert alert-success"><?php echo $delete_message; ?></div>
<?php endif; ?>
<?php if (isset($delete_error)): ?>
<div class="alert alert-danger"><?php echo $delete_error; ?></div>
<?php endif; ?>
<?php if (!$course_reviews_exists): ?>
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Create Reviews Table</h6>
</div>
<div class="card-body">
<p>The course_reviews table does not exist in the database. Would you like to create it?</p>
<form method="post" action="">
<button type="submit" name="create_table" class="btn btn-primary">Create Table</button>
</form>
</div>
</div>
<?php else: ?>
<!-- Add Review Card -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Add New Review</h6>
</div>
<div class="card-body">
<form method="post" action="">
<div class="form-row">
<div class="form-group col-md-4">
<label for="course_id">Course</label>
<select class="form-control" id="course_id" name="course_id" required>
<option value="">Select Course</option>
<?php foreach ($courses as $course): ?>
<option value="<?php echo $course['id']; ?>"><?php echo $course['title']; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="form-group col-md-4">
<label for="user_id">User</label>
<select class="form-control" id="user_id" name="user_id" required>
<option value="">Select User</option>
<?php foreach ($users as $user): ?>
<option value="<?php echo $user['id']; ?>"><?php echo $user['first_name'] . ' ' . $user['last_name']; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="form-group col-md-4">
<label for="rating">Rating</label>
<select class="form-control" id="rating" name="rating" required>
<?php for ($i = 5; $i >= 1; $i--): ?>
<option value="<?php echo $i; ?>"><?php echo $i; ?> Stars</option>
<?php endfor; ?>
</select>
</div>
</div>
<div class="form-group">
<label for="comment">Review Comment</label>
<textarea class="form-control" id="comment" name="comment" rows="3" required></textarea>
</div>
<button type="submit" name="add_review" class="btn btn-primary">Add Review</button>
</form>
</div>
</div>
<!-- Reviews List -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">All Reviews</h6>
</div>
<div class="card-body">
<?php if (empty($reviews)): ?>
<div class="alert alert-info">No reviews found in the database.</div>
<?php else: ?>
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>ID</th>
<th>Course</th>
<th>User</th>
<th>Rating</th>
<th>Comment</th>
<th>Date</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($reviews as $review): ?>
<tr>
<td><?php echo $review['id']; ?></td>
<td><?php echo $review['course_title'] ?? 'Unknown Course'; ?></td>
<td><?php echo $review['user_name'] ?? 'Unknown User'; ?></td>
<td>
<?php for ($i = 1; $i <= 5; $i++): ?>
<?php if ($i <= $review['rating']): ?>
<i class="fas fa-star text-warning"></i>
<?php else: ?>
<i class="far fa-star text-muted"></i>
<?php endif; ?>
<?php endfor; ?>
</td>
<td><?php echo isset($review['comment']) ? htmlspecialchars($review['comment']) : ''; ?></td>
<td><?php echo date('M d, Y', strtotime($review['created_at'])); ?></td>
<td>
<a href="course_reviews.php?delete=<?php echo $review['id']; ?>" class="btn btn-danger btn-sm" onclick="return confirm('Are you sure you want to delete this review?')">
<i class="fas fa-trash"></i>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
</div>
<?php
// Include footer
include_once 'includes/footer.php';
?>