FAUSTINE MWOYA November 12, 2025 2 min read

Jinsi ya Kutengeneza Students Management System

Students Management System (SMS) ni mfumo unaowawezesha walimu/administrators:

Kuongeza, kuhariri, na kufuta wanafunzi (CRUD).

Kuangalia orodha ya wanafunzi kwa darasa, jinsia, au score.

Kuonyesha statistics za shule.

Mfumo huu utakuwa secure kwa kutumia PDO, na utumie prepared statements kuzuia SQL Injection.

⚙️ 2. Muundo wa Project

Tengeneza folder la project, mfano: students_management/

students_management/
├── config.php
├── index.php ← View students
├── add_student.php ← Add student
├── edit_student.php ← Edit student
├── delete_student.php ← Delete student
└── logout.php

🧩 3. Database Setup
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,
gender ENUM('Male','Female') NOT NULL,
age INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

💡 Maelezo:

ENUM inasaidia kuweka jinsia.

created_at inarekodi wakati mwanafunzi aliongezwa.

⚙️ 4. Database Connection (config.php)
<?php
$dsn = "mysql:host=localhost;dbname=school_db;charset=utf8mb4";
$username = "root";
$password = "";

try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("❌ Connection failed: " . $e->getMessage());
}
?>

➕ 5. Add Student (add_student.php)
<?php
include 'config.php';

if($_SERVER['REQUEST_METHOD'] === 'POST'){
$name = trim($_POST['name']);
$class = trim($_POST['class']);
$gender = $_POST['gender'];
$age = $_POST['age'];

$stmt = $pdo->prepare("INSERT INTO students (name, class, gender, age) VALUES (:name, :class, :gender, :age)");
$stmt->execute([
'name'=>$name,
'class'=>$class,
'gender'=>$gender,
'age'=>$age
]);

echo "<p style='color:green;'>✅ Student added successfully!</p>";
}
?>

<h2>➕ Add Student</h2>
<form method="POST">
<input type="text" name="name" placeholder="Name" required><br><br>
<input type="text" name="class" placeholder="Class" required><br><br>
<select name="gender" required>
<option value="">Select Gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
</select><br><br>
<input type="number" name="age" placeholder="Age" required><br><br>
<button type="submit">Add Student</button>
</form>
<a href="index.php">🔙 Back to Students List</a>

📄 6. View Students (index.php)
<?php
include 'config.php';

$stmt = $pdo->query("SELECT * FROM students ORDER BY id DESC");
?>

<h2>📋 Students List</h2>
<a href="add_student.php">➕ Add Student</a><br><br>
<table border="1" cellpadding="8">
<tr>
<th>ID</th>
<th>Name</th>
<th>Class</th>
<th>Gender</th>
<th>Age</th>
<th>Actions</th>
</tr>

<?php
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo "<tr>
<td>{$row['id']}</td>
<td>{$row['name']}</td>
<td>{$row['class']}</td>
<td>{$row['gender']}</td>
<td>{$row['age']}</td>
<td>
<a href='edit_student.php?id={$row['id']}'>✏️ Edit</a> |
<a href='delete_student.php?id={$row['id']}' onclick='return confirm(\"Are you sure?\")'>🗑️ Delete</a>
</td>
</tr>";
}
?>
</table>

✏️ 7. Edit Student (edit_student.php)
<?php
include 'config.php';
$id = $_GET['id'];

$stmt = $pdo->prepare("SELECT * FROM students WHERE id = :id");
$stmt->execute(['id'=>$id]);
$student = $stmt->fetch(PDO::FETCH_ASSOC);

if(!$student){
die("❌ Student not found!");
}

if($_SERVER['REQUEST_METHOD'] === 'POST'){
$stmt = $pdo->prepare("UPDATE students SET name=:name, class=:class, gender=:gender, age=:age WHERE id=:id");
$stmt->execute([
'name'=>$_POST['name'],
'class'=>$_POST['class'],
'gender'=>$_POST['gender'],
'age'=>$_POST['age'],
'id'=>$id
]);
echo "<p style='color:green;'>✅ Student updated successfully!</p>";
}
?>

<h2>✏️ Edit Student</h2>
<form method="POST">
<input type="text" name="name" value="<?= htmlspecialchars($student['name']) ?>" required><br><br>
<input type="text" name="class" value="<?= htmlspecialchars($student['class']) ?>" required><br><br>
<select name="gender" required>
<option value="Male" <?= $student['gender']=='Male'?'selected':'' ?>>Male</option>
<option value="Female" <?= $student['gender']=='Female'?'selected':'' ?>>Female</option>
</select><br><br>
<input type="number" name="age" value="<?= $student['age'] ?>" required><br><br>
<button type="submit">Update Student</button>
</form>
<a href="index.php">🔙 Back to Students List</a>

❌ 8. Delete Student (delete_student.php)
<?php
include 'config.php';
$id = $_GET['id'];

$stmt = $pdo->prepare("DELETE FROM students WHERE id=:id");
$stmt->execute(['id'=>$id]);

header("Location: index.php");
exit;
?>

🧠 9. Vidokezo vya Security na Maboresho

PDO + Prepared Statements – Salama dhidi ya SQL Injection.

Input Validation – Hakikisha data sahihi inapoingizwa.

Pagination & Search – Kwa data nyingi, ongeza pagination na search box.

Session & Authentication – Zuia user asiye admin kuingia system.

Frontend Design – Tumia Bootstrap au TailwindCSS kuboresha UI.

✅ 10. Hitimisho

Mfumo huu ni msingi wa Students Management System.

Unaweza kuongeza modules za grades, attendance, reports kwa urahisi.

PDO + prepared statements inaboresha security na kudhibiti data salama.

🔗 Tembelea:

👉 https://www.faulink.com/

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.

Share this post

Comments

13
test April 26, 2026 at 9:02 pm
test'
test' April 26, 2026 at 9:02 pm
test
test April 26, 2026 at 9:02 pm
test'
test April 26, 2026 at 9:02 pm
test
test' April 26, 2026 at 9:02 pm
test
test April 26, 2026 at 9:02 pm
test
test April 23, 2026 at 10:07 am
test'
test' April 23, 2026 at 10:07 am
test
test April 23, 2026 at 10:07 am
test
test April 21, 2026 at 5:35 am
test'
test' April 21, 2026 at 5:35 am
test
test April 21, 2026 at 5:35 am
test
test' April 7, 2026 at 6:42 pm
test

Continue Reading

Subscribe

Get new updates

Jiunge upokee posts mpya, tutorials, na updates za mifumo moja kwa moja kwenye email yako.

Faulink Support