PROJECT YA CRUDE OPERATION KWA KUTUMIA OOP

Katika project hii utakwenda kujifunza jinsi ya kufanya CRUDE operation kwa kutumia PHP OOP na MySQL database. 

 

CRUDE ki kifupisho cha maneno CREATE, READ, UPDATE, DELETE. haya ni matendo muhimu manne kwenye database. Ili uweze kutumia database ni azima uyajuwe matendo haya. Code za project hii pia unawez akuzi download kwenye maktaba yetu hapa


 

Create hii inahusika na kuingiza taarifa kwenye database. Ni sawa na kutumia neno INSERT kama linavyotumika kwenye sql.

Read hii inahusika na kusoma data wenye database

Update hii inahusika na ku edit taarifa, yaani kuziboresha ama kuzibadili. Ni sawa na kutumia neno UPDATE kwenye sql.

 

Delete hii inahusika na kufuta taarifa kwenye data kwenye database. Ni sawa na kutumia DELETE kwenye sql.

 

Sasa katika project hii nimekuandalia matokeo ya wanafunzi waliofanya mtihani. Sasa tunakwenda kutumia OOP ili kuweza ku access database ili tuweze kufanya matendo hayo matatu yalotaja.

 

Database yetu nimeiita matokeo na table yenye wanafunzi nimeiita majibu. Table ina column tatu ambazo ni id, jina, alama. Id ni primary key na ni auto increment column. Project yetu ina mafaili 6 ambayo ni:-

  1. read.php
  2. edit.php 
  3. delete.php
  4. add.php
  5. Wanafuzi_class.php
  6. style.css


 

Database:

Unaweza kutengeneza database kwa maelezo niliokupa hapo awali amba pia unaweza ku run code hizo hapo chini za sql ili kutengeneza table na kuweka baadhi ya data. Hakikisha uwe umeshatengeneza database yenye jina matokeo:

CREATE TABLE `majibu` (

  `id` int(11) NOT NULL,

  `jina` varchar(255) NOT NULL,

  `alama` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;


 

INSERT INTO `majibu` (`id`, `jina`, `alama`) VALUES

(1, 'Jumanya', 50),

(2, 'Halima', 32),

(3, 'Daudi', 26),

(4, 'Saidi', 28),

(6, 'kasimu', 32),

(7, 'John ', 40),

(19, 'kwaya', 26);

ALTER TABLE `majibu`

  ADD PRIMARY KEY (`id`);

ALTER TABLE `majibu`

  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

 

wanafunzi_class.php

Tengeneza faili kisha liiite wanafunzi_class.php kisha pest code hizo hapo chini:-

<?php

class wanafunzi

{

   private $host = 'localhost';

   private $username = 'root';

   private $password = '';

   private $database = 'matokeo';

   public $db;

   public function __construct()

   {

       if (!isset($this->db)) {

           try {

               $this->db = new mysqli($this->host, $this->username, $this->password, $this->database);

           } catch (Exception $e) {

               $error = $e->getMessage();

               echo $error;

           }

       }

   }

   public function majina_ya_wanafunzi()

   {

       $select = "SELECT * FROM `majibu`";

       $result = mysqli_query($this->db, $select);

       return mysqli_fetch_all($result);

   }

   public function to_be_edited($pupil_id)

   {

       $pupil_id = mysqli_real_escape_string($this->db, $pupil_id);

       $select = "SELECT * FROM `majibu` where id = $pupil_id";

       $result = mysqli_query($this->db, $select);

       return mysqli_fetch_all($result);

   }

   public function insertData($jina, $matokeo)

   {

       $jina = mysqli_real_escape_string($this->db, $jina);

       $matokeo = mysqli_real_escape_string($this->db, $matokeo);

       $insert = "INSERT INTO `majibu` (`jina`, `alama`) VALUES ('$jina', '$matokeo')";

       $result = mysqli_query($this->db, $insert);

       return $result;

   }

   public function editData($id, $jina, $matokeo)

   {

       $id = mysqli_real_escape_string($this->db, $id);

       $jina = mysqli_real_escape_string($this->db, $jina);

       $matokeo = mysqli_real_escape_string($this->db, $matokeo);

       $update = "UPDATE `majibu` SET `jina`='$jina', `alama`='$matokeo' WHERE `id`='$id'";

       $result = mysqli_query($this->db, $update);

       return $result;

   }

   public function deleteData($id)

   {

       $id = mysqli_real_escape_string($this->db, $id);

       $delete = "delete from majibu WHERE `id`='$id'";

       $result = mysqli_query($this->db, $delete);

       return $result;

   }

}

$db = new wanafunzi();


 

read.php

Tengeneza faili lenye jina read.php kisha pest code hizo hapo chini

 

<?php

require_once 'wanafunzi_class.php';

?>

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <link rel="stylesheet" href="style.css">

   <title>Majibu Data</title>

</head>

<body>

<?php

echo '<table border="1" class="center">';

echo '<a href="add.php"><h1>Add data</h1></a>';

echo '<tr><th>ID</th>

<th>Name</th>

<th>Alama</th>

<th>Edit</th>

<th>Delete</th>

</tr>';

$majina = $db->majina_ya_wanafunzi();

foreach ($majina as $jina) {

   $options = $db->majina_ya_wanafunzi();

  //echo $jina[0] . ' ' . $jina[1] . '<br>';

           echo '<tr>';

           echo '<td>' .$jina[0]  . '</td>';

           echo '<td>' . $jina[1] . '</td>';

           echo '<td>' . $jina[2] . '</td>';

           echo '<td><a href="edit.php?id='.$jina[0].'">✏</a> </td>';

           echo '<td><a href="delete.php?id='.$jina[0].'">❌</a> </td>';

           echo '</tr>';

}

echo '</table>';

?>

</body>

</html>

 

delete.php

Tengeneza faili lenye jina la delete.php kisha pest code hizo hapo chini:-

<?php

require_once 'wanafunzi_class.php';

// Check if the form for editing is submitted

if (isset($_GET['id'])) {

   $id_to_delete = $_GET['id'];

   $deleteResult = $db->deleteData($id_to_delete);

 

   if ($deleteResult) {

       echo "<h1 align='center'>Data deleted successfully!</h1>";

       echo '<script>function quiz (){window.location.replace("read.php")}var myTimeout = setTimeout(quiz, 500)</script>';

   } else {

       echo "Error editing data.";

   }

}


 

edit.php

Tengeneza faili lenye jina la edit.php kisha pest code hizo hapo chini

<?php

require_once 'wanafunzi_class.php';

// Check if the form for editing is submitted

if (isset($_POST['edit_submit'])) {

   $id_to_edit = $_POST['edit_id'];

   $edited_jina = $_POST['edited_jina'];

   $edited_matokeo = $_POST['edited_alama'];

 

   // Edit data

   $editResult = $db->editData($id_to_edit, $edited_jina, $edited_matokeo);

 

   if ($editResult) {

       echo "<h1>Data edited successfully!</h1>";

       echo '<script>function quiz (){window.location.replace("read.php")}var myTimeout = setTimeout(quiz, 500)</script>';

   } else {

       echo "Error editing data.";

   }

}

$majina = $db->to_be_edited($_GET['id']);

foreach ($majina as $jina) {

$options = $db->majina_ya_wanafunzi();

 

?>

<br><br><br>

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Styled Form</title>

   <link rel="stylesheet" href="style.css">

</head>

<body>

 

<form action="" method="post">

   <!-- Fields for editing -->

   <input type="hidden" name="edit_id" id="edit_id" value="<?php echo $jina[0]?>">

   <label for="edited_jina">Edited Jina</label><br>

   <input type="text" name="edited_jina" id="edited_jina" value="<?php echo $jina[1]?>"><br><br>

   <label for="edited_alama">Edited Alama</label><br>

   <input type="number" name="edited_alama" id="edited_alama" value="<?php echo $jina[2]?>"><br><br>

 

   <!-- Submit button for editing -->

   <input type="submit" name="edit_submit" value="Save">

</form>

</body>

</html>

<?php }

 

style.css

Tengeneza fali lenye jina la style.css kisha pest code hizo hapo chini

body {

   font-family: 'Arial', sans-serif;

   background-color: #f4f4f4;

}

 

form {

   max-width: 400px;

   margin: 20px auto;

   background-color: #fff;

   padding: 20px;

   border-radius: 10px;

   box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);

}

 

label {

   font-weight: bold;

   display: block;

   margin-bottom: 5px;

}

 

input {

   width: 100%;

   padding: 8px;

   margin-bottom: 10px;

   box-sizing: border-box;

}

 

input[type="submit"] {

   background-color: #3498db;

   color: #fff;

   cursor: pointer;

   border: none;

   padding: 10px;

   border-radius: 5px;

}

 

input[type="submit"]:hover {

   background-color: #2980b9;

}

h1{

   text-align: center;

   collapse: green;

}

table, th, td {

    border: 1px solid black;

    border-radius: 10px;

}

 

table.center {

   margin-left: auto;

   margin-right: auto;

}

 

Mwisho:

Mpaka kufikia hapo rasmi somo la OOP limesha kamilika. Hata hivyo course inayofuata ni PDO yaan Php Data Object. Somo hili lina mahusiano mazuri sana na somo la OOP. hivyo ni matumaini yangu kuwa unalifuahia.