Katika somo hili utakwenda Jinsi ya kutengeneza ORM inayofanya CDRUDE operation.
Katika somo hili, tutajifunza jinsi ya kuandika programu ya CRUD (Create, Read, Update, Delete) kwa kutumia Object-Relational Mapping (ORM) katika PHP. ORM ni njia ya kuwasiliana na database kwa kutumia madarasa na vitu badala ya maandiko ya moja kwa moja ya SQL.
Tunaingiza mafaili mawili muhimu katika programu hii:
create
, all
, find
, update
, na delete
kwenye jedwali la database.Model Class (model.php
):
Database::getInstance()->getConnection()
.id
kama kipengele cha kipekee.id
.id
.Index File (index.php
):
model.php
)<?php
class Model {
protected $db;
protected $table;
public function __construct($table) {
$this->db = Database::getInstance()->getConnection();
$this->table = $table; // Dynamically set the table name
}
public function create($data) {
// Automatically generate insert query from data
$columns = implode(", ", array_keys($data));
$placeholders = implode(", ", array_fill(0, count($data), "?"));
$stmt = $this->db->prepare("INSERT INTO {$this->table} ($columns) VALUES ($placeholders)");
// Bind parameters dynamically
$stmt->bind_param(str_repeat("s", count($data)), ...array_values($data));
return $stmt->execute();
}
public function all() {
$stmt = $this->db->prepare("SELECT * FROM {$this->table}");
$stmt->execute();
return $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
}
public function find($id) {
$stmt = $this->db->prepare("SELECT * FROM {$this->table} WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
return $stmt->get_result()->fetch_assoc();
}
public function update($id, $data) {
$setClause = "";
$types = "s"; // Start with "i" for id (integer)
// Build the set clause and types string
foreach ($data as $key => $value) {
$setClause .= "$key = ?, ";
$types .= "s"; // Assuming all values in $data are strings
}
$setClause = rtrim($setClause, ", ");
// Prepare the SQL statement
$stmt = $this->db->prepare("UPDATE {$this->table} SET $setClause WHERE id = ?");
// Merge the values of $data with the id
$params = array_merge(array_values($data), [$id]);
// Bind parameters dynamically with the correct number of type specifiers
$stmt->bind_param($types, ...$params); // $types now includes "i" for id and "s" for each field in $data
return $stmt->execute();
}
public function delete($id) {
$stmt = $this->db->prepare("DELETE FROM {$this->table} WHERE id = ?");
$stmt->bind_param("i", $id);
return $stmt->execute();
}
}
?>
index.php
)<?php
require_once 'dbclass.php';
require_once "model.php";
// Initialize ORM
$customerORM = new Model('customers');
$error = "";
// Handle form submission for adding a new customer
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST['action']) && $_POST['action'] === 'create') {
$name = trim($_POST['name']);
$email = trim($_POST['email']);
if (!empty($name) && !empty($email)) {
$data = [
'name' => $name,
'email' => $email
];
if ($customerORM->create($data)) {
header("Location: index.php");
exit();
} else {
$error = "Failed to add customer.";
}
} else {
$error = "Please fill in all fields.";
}
}
// Handle form submission for updating a customer
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST['action']) && $_POST['action'] === 'update') {
$id = $_POST['id'];
$name = trim($_POST['name']);
$email = trim($_POST['email']);
if (!empty($name) && !empty($email)) {
$data = [
'name' => $name,
'email' => $email
];
if ($customerORM->update($id, $data)) {
header("Location: index.php");
exit();
} else {
$error = "Failed to update customer.";
}
} else {
$error = "Please fill in all fields.";
}
}
// Handle delete operation
if (isset($_GET['delete'])) {
$id = $_GET['delete'];
if ($customerORM->delete($id)) {
header("Location: index.php");
exit();
} else {
$error = "Failed to delete customer.";
}
}
// Fetch all customers
$customers = $customerORM->all();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Customer List</title>
</head>
<body>
<h2>Customer List</h2>
<?php if (!empty($customers)): ?>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Actions</th>
</tr>
<?php foreach ($customers as $customer): ?>
<tr>
<td><?= ht">
...
Jifunze zaidi, na wasiliana nasi ukiwa na App yetu. Bofya link hapo chini kuweza kuipakua.
Download NowUmeionaje Makala hii.. ?
Katika somo hili utakwenda kujifunza kuhusu access modifier ili kuweza kuthibiti nama ya kuzitumia properties kwenye class.
Soma Zaidi...Katika somo hili utakwenda kujifunza jinsi ya kusoma data kutoka kwenye database kwa kutumia PHP.
Soma Zaidi...Katika somo hii utakwenda kujifunza aina za http header na server variable. Hapa tutakwenda kuchambuwa mgawanyiko wa httpheader na kazi zake.
Soma Zaidi...Katika somo hili utajifnza jinsi ya kufanya prepared statement kama njia ya kuzuia sql ingection kwenye PHP blog
Soma Zaidi...Katika project hii utakwenda kujifunza jinsi ya kufanya CRUDE operation kwa kutumia PHP OOP na MySQL database.
Soma Zaidi...Katika somo hili utakwenda kujifunza concept mpya ya abstract class na abstract method kwenye OOP.
Soma Zaidi...katika post hii utajifunza jinsi ya kutengeneza ukurasa wa dashboard kwa ajili ya kutibti post
Soma Zaidi...Katika somo hili utakwenda kujifunza jinsi ya kufanya encryption na decryption kwa kutumia PHP. hii itakusaidia kuongeza usalama kwenye taarifa za watu
Soma Zaidi...Katika somo hili utakwenda kujifunza jinsi ya kutumia constatnt kwenye class.
Soma Zaidi...Katika somo hili utajifunza jinsi ya kutengeneza system ambayo mta atajisajili pamoja na kuchat na watumiaji wengine
Soma Zaidi...