PHP somo la 96: Jinsi ya kutengeneza ORM inayofanya CDRUDE operation

Katika somo hili utakwenda Jinsi ya kutengeneza ORM inayofanya CDRUDE operation.

Ufafanuzi wa Code na Structure zake

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:

  1. Model - Hii ni darasa la ORM linaloshughulikia mawasiliano na database. Inasaidia kutekeleza operesheni za CRUD kama create, all, find, update, na delete kwenye jedwali la database.
  2. index.php - Hii ni script kuu inayoshughulikia maombi kutoka kwa mtumiaji. Inasoma data kutoka kwa fomu na kuihifadhi kwenye database au kuonyesha taarifa kutoka kwa database.

Code Structure

  1. Model Class (model.php):

    • Database Connection: Darasa linahusisha uunganisho na database kwa kutumia Database::getInstance()->getConnection().
    • CRUD Methods: Kuna njia tano za kufanya operesheni za CRUD:
      • create($data): Inatumika kuingiza data mpya kwenye database.
      • all(): Inarejesha orodha ya taarifa zote kutoka kwenye jedwali.
      • find($id): Inapata taarifa moja kwa kutumia id kama kipengele cha kipekee.
      • update($id, $data): Inasasisha data ya mteja kwa kutumia id.
      • delete($id): Inafuta data ya mteja kwa kutumia id.
  2. Index File (index.php):

    • Form Handling: Inasimamia fomu za kuongeza, kusasisha, na kufuta wateja.
    • Displaying Data: Inawaonyesha wateja wote waliopo katika database na inatoa chaguo za kuhariri au kufuta.
    • Error Handling: Inajali hali ya kosa, kama vile kutokamilika kwa fomu au kushindwa kwa operesheni.

Code Kamili

1. Model Class (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();
    }
}
?>

2. Index File (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">
...

Jiunge nasi WhatsApp kupata update zetu

Zoezi la Maswali

Nyuma Endelea


Umeionaje Makala hii.. ?

Nzuri            Mbaya            Save
Author: Rajabu image Tarehe: 1970-01-01 03:33:45 Topic: PHP Main: ICT File: Download PDF Views 322

Share On:

Facebook WhatsApp
Sponsored links
👉1 Madrasa kiganjani    👉2 Dua za Mitume na Manabii    👉3 kitabu cha Simulizi    👉4 Simulizi za Hadithi Audio    👉5 Sira ya Mtume Muhammad (s.a.w)    👉6 Bongolite - Game zone - Play free game   

Post zinazofanana:

PHP somo la 68: Jinsi ya kutuma email kwa kutumia PHPMailer

Katika somo hili utakwenda kujifunza jisniya kutuma email kwa kutumia PHPMailer kwenye project ya PHP. Katika somo hili tutakwend akutuma email kwa kutumia localhost.

Soma Zaidi...
PHP - somo la 44: Nini cURL na ni yapi matumizi yake?

Katika somo hilibutajifunza maana ya cURL pamoja na matumini yake

Soma Zaidi...
Jinsi ya kupata location ya mtu lwa kutumia IP address

Katika post hii utajifunza jinsi ya kupata taarifa muhimu za mtumiaji kw akutumia Ip address yake.

Soma Zaidi...
PHP somo la 95: Jinsi ya kutengeneza customer ORM

Katika somo hili uttakwend akujifunz ajinsi ambavyo utaweza kutengeneza simple ORM yakwako mwenyewe

Soma Zaidi...
PHP somo la 85: Jinsi ya utengeneza json data kwa utumia php

Katika somo hili utakwenda kujifunza Jinsi ya utengeneza json data kwa utumia php

Soma Zaidi...
PHP - somo la 42: Jinsi ya kufanya encryption na de cryption kwa kutumia PHP

Katika somo hili utakwenda kujifunza jinsi ya kufanya encryption na decryption kwa kutumia PHP. hii itakusaidia kuongeza usalama kwenye taarifa za watu

Soma Zaidi...
PHP - somo la 4: Aina za data zinazotumika kwenye PHP

Katika somo hili utakwenda kujifunza aina za data ambazo hutumika kwenye PHP

Soma Zaidi...
PHP - somo la 47: Jifunze kuhusu sql injection na kuizuia

Katika somo hili utajwenda kujifunza jinsi ya kuzuia hacking kwenye website yako

Soma Zaidi...
PHP BLOG - somo la 8: Jinsi ya kufuta post kwenye database

katika post hii utajifunza jinsi ya kufuta post kwenye database. pia utajifunza jinsi ya kufuta picha kwenye server

Soma Zaidi...
PHP - somo la 10: Jinsi ya kundika condition statement if, ifelse na switch case

Katika somo hili utakwenda kujifunza kuhusu condition statements if, ifelse na switch case. Hata utajifunza jnsi ya kuziandika na zinavyofanya kazi

Soma Zaidi...