PHP somo la 97: Jinsi ya kuchakata data zaidi kwa kutumia ORM
Katika somo hili utakwenda kujifunz akuchakata data zaidi kw akutumia ORM kama ku join table
Hapa ni hatua za kuunda somo linalofuata kwa ajili ya kuongeza jedwali la transactions pamoja na faili la transactions.php ili kuonyesha orodha ya wateja na bidhaa walizonunua pamoja na bei zao.
Hatua 1: Kuingiza Jedwali la transactions kwenye Hifadhidata
Kwanza, tutahitaji kuunda jedwali jipya la transactions kwenye hifadhidata yako. Jedwali hili litakuwa na uhusiano (foreign keys) kwa jedwali la customers na products ili kurekodi bidhaa na wateja wanaohusiana.
CREATE TABLE transactions (
id INT AUTO_INCREMENT PRIMARY KEY,
customer INT NOT NULL,
product INT NOT NULL,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (customer) REFERENCES customers(id),
FOREIGN KEY (product) REFERENCES products(id)
);
Maelezo ya Fields:
- id: ID ya kila transaction (inajijenga kiotomatiki).
- customer: Hii ni
customer_idkutoka kwenye jedwali lacustomers. - product: Hii ni
product_idkutoka kwenye jedwali laproducts. - created: Hii inarekodi wakati wa kutokea kwa transaction (inaonekana kiotomatiki kama
CURRENT_TIMESTAMP).
Hatua 2: Kuunda Faili la transactions.php
Sasa tutaunda faili la transactions.php ambalo litachukua taarifa za wateja na bidhaa walizonunua pamoja na bei zao. Kwenye faili hili, tutachukua taarifa kutoka kwenye jedwali la transactions na kuonyesha orodha ya wateja na bidhaa walizonunua.
<?php
require_once 'dbclass.php';
require_once "model.php";
// Anza ORM kwa ajili ya transactions
$transactionORM = new Model('transactions');
$productORM = new Model('products');
$customerORM = new Model('customers');
$error = "";
// Pata transactions zote
$transactions = $transactionORM->all();
?>
<!DOCTYPE html>
<html lang="sw">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Orodha ya Miamala</title>
</head>
<body>
<h2>Orodha ya Miamala</h2>
<?php if (!empty($transactions)): ?>
<table border="1">
<tr>
<th>ID ya Transaction</th>
<th>Jina la Mteja</th>
<th>Jina la Bidhaa</th>
<th>Bei</th>
<th>Tarehe</th>
</tr>
<?php foreach ($transactions as $transaction): ?>
<?php
// Pata mteja na bidhaa kwa kutumia IDs
$customer = $customerORM->find($transaction['customer']);
$product = $productORM->find($transaction['product']);
?>
<tr>
<td><?= htmlspecialchars($transaction['id']); ?></td>
<td><?= htmlspecialchars($customer['name']); ?></td>
<td><?= htmlspecialchars($product['name']); ?></td>
<td><?= htmlspecialchars($product['price']); ?></td>
<td><?= htmlspecialchars($transaction['created']); ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php else: ?>
<p>Hakuna miamala iliyorekodiwa.</p>
<?php endif; ?>
</body>
</html>
Maelezo ya Code:
-
ORM kwa Transactions, Customers, na Products: Tumetumia ORM kwa
transactions,customers, naproductsili tupate taarifa za wateja na bidhaa zinazohusiana na transaction. -
Pata Miamala: Tunachukua taarifa zote za miamala kutoka kwenye jedwali la transactions kwa kutumia
$transactionORM->all(). -
Pata Mteja na Bidhaa kwa ID: Kwa kila transaction, tunatumia IDs za mteja na bidhaa ili kupata majina yao kutoka kwenye jedwali la customers na products.
-
Onyesha Orodha ya Miamala: Tunatengeneza meza ili kuonyesha ID ya Transaction, Jina la Mteja, Jina la Bidhaa, Bei ya Bidhaa, na Tarehe ya Transaction.
-
Ujumbe wa Makosa: Ikiwa hakuna miamala iliyorekodiwa, itaonyesha ujumbe wa "Hakuna miamala iliyorekodiwa."
Hatua 3: Kuhakikisha Uhusiano Kati ya Jedwali la transactions, products, na customers
Hakikisha kuwa unatumia foreign keys ili kuunganisha jedwali la transactions na ya products na customers kwa kutumia IDs. Hii itahakikisha kuwa data ya miamala ni sahihi na ina uhusiano na bidhaa na wateja waliopo kwenye hifadhidata yako.
Hatua 4: Kuongeza Miamala
Katika sehemu ya kuongeza miamala, tunaweza kutoa fomu ya kuongeza miamala, ambapo mteja atachagua bidhaa na itarekodiwa kwenye jedwali la transactions.
<?php
// Kushughulikia fomu ya kuongeza transaction
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST['action']) && $_POST['action'] === 'create') {
$customer_id = $_POST['customer_id'];
$product_id = $_POST['product_id'];
if (!empty($customer_id) && !empty($product_id)) {
$data = [
'customer' => $customer_id,
'product' => $product_id
];
if ($transactionORM->create($data)) {
header("Location: transactions.php");
exit();
} else {
$error = "Imeshindikana kuongeza transaction.";
}
} else {
$error = "Tafadhali chagua mteja na bidhaa.";
}
}
?>
<form action="" method="post">
<input type="hidden" name="action" value="create">
<label for="customer_id">Chagua Mteja:</label>
<select name="customer_id" required>
<?php
$customers = $customerORM->all();
foreach ($customers as $customer) {
...Umeionaje Makala hii.. ?
Share On:
👉1 kitabu cha Simulizi 👉2 Simulizi za Hadithi Audio 👉3 Bongolite - Game zone - Play free game 👉4 ai web app 👉5 Madrasa kiganjani 👉6 Kitau cha Fiqh
Post zinazofanana:
PHP - somo la 16: Jinsi ya kufuta tabale na database kwa kutumia php
Katika somo hili utajifunza jinsi ya kufuta table ya databse kwa kutumia PHP. Pia utajifunza jinsi ya kututa database yeto
Soma Zaidi...PHP somo la 86: JInsi ya ku decode json yaani kubadili json kuwa php data kama array ana object
Katika somo hili utakwend akujifunza jinsi ya kubadili json data na kuwaphp array ama php object. Kwa ufupi tunakwend aku decode json data kuwa phparray amaobject
Soma Zaidi...PHP -somo la 33: Matumizi ya while loop kwenye PHP
Katika somo hili utajifunza jinsi ya kuandika while loop kwenye PHP
Soma Zaidi...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 26: Jinsi ya kutengeneza system ya ku chat kw akutumia PHP
Katika somo hili utajifunza jinsi ya kutengeneza system ambayo mta atajisajili pamoja na kuchat na watumiaji wengine
Soma Zaidi...PHP somo la 70: jinsi ya kutuma email yenye html, picha na attachment
Katika somo hili utakwenda kujifunza jinsi ya kutuma email ambayo ina HTML, pia utajifunza kutuma email yenye picha na attachment nyinginezo kama pdf
Soma Zaidi...