Jinsi ya Kutengeneza Exam Results CRUD System
Exam Results CRUD System inawawezesha walimu au admin:
Kuongeza matokeo ya mwanafunzi.
Kuona orodha ya matokeo.
Kuhariri au kufuta matokeo (CRUD).
Kuonyesha statistics au averages (baadaye).
Mfumo huu utatumia:
PDO + Prepared Statements (salama)
Password Hashing kwa user login (ikiwa kuna authentication)
Bootstrap (optional) kwa interface nzuri
âš™ï¸ 2. Database Setup
Tengeneza database na table ya exam_results:
CREATE DATABASE school_db;
USE school_db;
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
class VARCHAR(50) NOT NULL
);
CREATE TABLE exam_results (
id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT NOT NULL,
subject VARCHAR(50) NOT NULL,
marks INT NOT NULL,
exam_date DATE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE
);
💡 Maelezo:
student_id ni foreign key kuunganisha na students.
ON DELETE CASCADE inahakikisha matokeo ya mwanafunzi yanafutwa ikiwa mwanafunzi anaondolewa.
âš™ï¸ 3. Database Connection (config.php)
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("⌠Connection failed: " . $e->getMessage());
}
?>
âž• 4. Add Exam Result (add_result.php)
query("SELECT * FROM students ORDER BY name ASC");
$students = $studentsStmt->fetchAll(PDO::FETCH_ASSOC);
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$student_id = $_POST['student_id'];
$subject = trim($_POST['subject']);
$marks = $_POST['marks'];
$exam_date = $_POST['exam_date'];
$stmt = $pdo->prepare("INSERT INTO exam_results (student_id, subject, marks, exam_date) VALUES (:student_id, :subject, :marks, :exam_date)");
$stmt->execute([
'student_id' => $student_id,
'subject' => $subject,
'marks' => $marks,
'exam_date' => $exam_date
]);
echo "
✅ Exam result added successfully!
";
}
?>
âž• Add Exam Result
🔙 Back to Results📄 5. View Exam Results (results.php)
query("SELECT er.id, s.name, s.class, er.subject, er.marks, er.exam_date
FROM exam_results er
JOIN students s ON er.student_id = s.id
ORDER BY er.exam_date DESC");
?>
📋 Exam Results
âž• Add Result| ID | Student | Class | Subject | Marks | Exam Date | Actions |
|---|---|---|---|---|---|---|
| = $row['id'] ?> | = htmlspecialchars($row['name']) ?> | = $row['class'] ?> | = htmlspecialchars($row['subject']) ?> | = $row['marks'] ?> | = $row['exam_date'] ?> | âœï¸ Edit | ðŸ—‘ï¸ Delete |
âœï¸ 6. Edit Exam Result (edit_result.php)
prepare("SELECT * FROM exam_results WHERE id=:id");
$stmt->execute(['id'=>$id]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
// Get students for dropdown
$studentsStmt = $pdo->query("SELECT * FROM students ORDER BY name ASC");
$students = $studentsStmt->fetchAll(PDO::FETCH_ASSOC);
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$stmt = $pdo->prepare("UPDATE exam_results SET student_id=:student_id, subject=:subject, marks=:marks, exam_date=:exam_date WHERE id=:id");
$stmt->execute([
'student_id'=>$_POST['student_id'],
'subject'=>$_POST['subject'],
'marks'=>$_POST['marks'],
'exam_date'=>$_POST['exam_date'],
'id'=>$id
]);
echo "
✅ Exam result updated successfully!
";
}
?>
âœï¸ Edit Exam Result
🔙 Back to Results⌠7. Delete Exam Result (delete_result.php)
prepare("DELETE FROM exam_results WHERE id=:id");
$stmt->execute(['id'=>$id]);
header("Location: results.php");
exit;
?>
🧠8. Vidokezo vya Security
PDO + Prepared Statements – Kuzuia SQL Injection.
Input Validation – Hakikisha marks ni nambari sahihi.
Authentication – Zuia users wasio admin ku-access system.
HTTPS – Linda data ya mtumiaji wakati inapotumwa.
CSRF Protection – Kuongeza token kwa forms ili kuzuia attacks.
✅ 9. Hitimisho
Mfumo huu ni msingi wa Exam Results CRUD System.
Admin au teacher anaweza ku-add, edit, delete, na view results kwa urahisi.
PDO na prepared statements zinaboresha security na data integrity.
🔗 Tembelea:
Kwa mafunzo zaidi ya PHP, PDO, MySQL, na web systems development.
🚀 Unahitaji mfumo au website ya biashara?
Chagua huduma hapa chini kisha mteja bofya moja kwa moja kwenda kwenye ukurasa wa huduma au kuwasiliana nasi kwa WhatsApp.