Mwongozo Kamili wa CRUD System (Create, Read, Update, Delete) kwa PHP na MySQL – Hatua kwa Hatua)
Jifunze kwa kina jinsi ya kutengeneza CRUD system (Create, Read, Update, Delete) kwa kutumia PHP na MySQL. Mwongozo kamili wenye mifano ya vitendo, security, na best practices.
🟢 1. Utangulizi
Baada ya kuelewa jinsi ya kuunganisha PHP na MySQL, hatua inayofuata muhimu sana ni kujifunza CRUD system.
CRUD ni kifupi cha:
C → Create (kuingiza data)
R → Read (kusoma data)
U → Update (kuhariri data)
D → Delete (kufuta data)
Hizi ndio operations 4 muhimu zinazotumika karibu kwenye kila system duniani:
✔ mfumo wa shule
✔ mfumo wa accounting
✔ mfumo wa hospitali
✔ mfumo wa blog
✔ mfumo wa login/register
🔹 2. CRUD System ni Nini?
CRUD system ni mfumo unaokuwezesha:
kuongeza taarifa mpya
kuonyesha taarifa zilizopo
kubadilisha taarifa
kufuta taarifa
Mfano kwenye mfumo wa shule:
Operation Mfano
Create Kusajili mwanafunzi
Read Kuona orodha ya wanafunzi
Update Kubadilisha jina la mwanafunzi
Delete Kufuta mwanafunzi
🔹 3. Vitu Tunavyotengeneza Kwenye Blog Hii
Tutatengeneza system ya:
👉 Student Management System
Yenye uwezo wa:
✔ Add student
✔ View students
✔ Edit student
✔ Delete student
🔹 4. Kuandaa Database
📌 Tengeneza database:
CREATE DATABASE school_crud;
📌 Tengeneza table:
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
student_name VARCHAR(100),
gender VARCHAR(20),
class_name VARCHAR(50),
phone VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
🔹 5. Folder Structure
crud_system/
│
├── db.php
├── index.php
├── add.php
├── edit.php
├── delete.php
└── view.php
🔹 6. Database Connection (db.php)
<?php
$conn = mysqli_connect("localhost", "root", "", "school_crud");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
?>
🔹 7. CREATE – Kuongeza Data (add.php)
<?php
include 'db.php';
if (isset($_POST['save'])) {
$name = $_POST['name'];
$gender = $_POST['gender'];
$class = $_POST['class'];
$phone = $_POST['phone'];
$stmt = $conn->prepare("INSERT INTO students (student_name, gender, class_name, phone) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $name, $gender, $class, $phone);
if ($stmt->execute()) {
echo "Student added successfully!";
} else {
echo "Error!";
}
}
?>
<form method="POST">
<input type="text" name="name" placeholder="Student Name" required><br>
<input type="text" name="gender" placeholder="Gender"><br>
<input type="text" name="class" placeholder="Class"><br>
<input type="text" name="phone" placeholder="Phone"><br>
<button name="save">Save</button>
</form>
🔹 8. Maelezo ya CREATE
$_POST inachukua data kutoka form
prepare() inalinda dhidi ya SQL Injection
bind_param() inaunganisha variables na query
execute() ina-run query
🔹 9. READ – Kuonyesha Data (view.php)
<?php
include 'db.php';
$result = mysqli_query($conn, "SELECT * FROM students ORDER BY id DESC");
?>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Gender</th>
<th>Class</th>
<th>Phone</th>
<th>Action</th>
</tr>
<?php while($row = mysqli_fetch_assoc($result)) { ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo htmlspecialchars($row['student_name']); ?></td>
<td><?php echo htmlspecialchars($row['gender']); ?></td>
<td><?php echo htmlspecialchars($row['class_name']); ?></td>
<td><?php echo htmlspecialchars($row['phone']); ?></td>
<td>
<a href="edit.php?id=<?php echo $row['id']; ?>">Edit</a>
<a href="delete.php?id=<?php echo $row['id']; ?>">Delete</a>
</td>
</tr>
<?php } ?>
</table>
🔹 10. Maelezo ya READ
SELECT * inachukua data zote
mysqli_fetch_assoc() inatoa data row kwa row
htmlspecialchars() inalinda dhidi ya XSS
🔹 11. UPDATE – Ku-edit Data (edit.php)
<?php
include 'db.php';
$id = $_GET['id'];
$result = mysqli_query($conn, "SELECT * FROM students WHERE id=$id");
$row = mysqli_fetch_assoc($result);
if (isset($_POST['update'])) {
$name = $_POST['name'];
$gender = $_POST['gender'];
$class = $_POST['class'];
$phone = $_POST['phone'];
$stmt = $conn->prepare("UPDATE students SET student_name=?, gender=?, class_name=?, phone=? WHERE id=?");
$stmt->bind_param("ssssi", $name, $gender, $class, $phone, $id);
if ($stmt->execute()) {
echo "Updated successfully!";
}
}
?>
<form method="POST">
<input type="text" name="name" value="<?php echo $row['student_name']; ?>"><br>
<input type="text" name="gender" value="<?php echo $row['gender']; ?>"><br>
<input type="text" name="class" value="<?php echo $row['class_name']; ?>"><br>
<input type="text" name="phone" value="<?php echo $row['phone']; ?>"><br>
<button name="update">Update</button>
</form>
🔹 12. Maelezo ya UPDATE
Tunachukua id kutoka URL
Tunachukua data ya student
Tunajaza form kwa data zilizopo
Tunafanya update kupitia prepared statement
🔹 13. DELETE – Kufuta Data (delete.php)
<?php
include 'db.php';
$id = $_GET['id'];
$stmt = $conn->prepare("DELETE FROM students WHERE id=?");
$stmt->bind_param("i", $id);
if ($stmt->execute()) {
header("Location: view.php");
}
?>
🔹 14. Maelezo ya DELETE
Inachukua id
Inafuta record husika
Inarudisha user kwenye page ya list
🔹 15. Navigation (index.php)
<h2>CRUD System</h2>
<a href="add.php">Add Student</a><br>
<a href="view.php">View Students</a>
🔹 16. Kuboresha UI kwa Bootstrap
Unaweza kuongeza Bootstrap:
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
Faida:
✔ UI nzuri
✔ responsive
✔ professional
🔹 17. Security Muhimu Sana
1. SQL Injection
Usitumie:
$sql = "INSERT INTO students VALUES ('$name')";
Tumia:
$stmt = $conn->prepare(...);
2. XSS Attack
Tumia:
htmlspecialchars($row['student_name']);
3. Validation
if(empty($name)){
echo "Name required";
}
🔹 18. Best Practices
✔ Tumia prepared statements
✔ Tumia include db.php
✔ Tumia validation
✔ Tumia redirect baada ya delete
✔ Tumia Bootstrap
🔹 19. Advanced Features (Next Level)
Baada ya CRUD basic, unaweza kuongeza:
Search system
Pagination
Login system
Roles (Admin, Teacher, Student)
File upload
Reports
🔹 20. Mfano wa Real System (Project Yako)
Kwa system yako ya shule:
CRUD inaweza kuwa:
✔ Add student
✔ Add marks
✔ Update marks
✔ Delete marks
✔ View reports
🔚 Hitimisho
CRUD ni moyo wa kila system inayotumia MySQL.
Ukielewa CRUD:
✔ unaweza kutengeneza mfumo wowote
✔ unaweza kufanya automation ya data
✔ unaweza ku-build professional systems
🚀 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.