Cách thêm dữ liệu vào file JSON bằng PHP



Cách nối dữ liệu biểu mẫu vào tệp JSON bằng ngôn ngữ lập trình PHP. Tôi đã tạo một biểu mẫu HTML, tôi muốn thêm dữ liệu biểu mẫu vào một tệp json. Đối với điều này, tôi đã sử dụng file_get_contents() và file_put_contents(). Hàm File_get_contents() lấy nội dung tệp json và với sự trợ giúp của php, tôi đã chuyển đổi nội dung đó thành định dạng mảng bằng cách sử dụng hàm json_decode(). Sau này, bây giờ tôi muốn thêm dữ liệu biểu mẫu vào mảng này. Đối với điều này, tôi đã lưu trữ dữ liệu biểu mẫu thành một mảng khi người dùng gửi biểu mẫu, thì tại thời điểm đó dữ liệu biểu mẫu sẽ lưu trữ thành mảng. Sau này, tôi nối thêm mảng dữ liệu biểu mẫu này vào mảng mà tôi đã chuyển đổi từ tệp json. Bây giờ dữ liệu Biểu mẫu được thêm vào mảng, vì vậy tôi chuyển đổi mảng thành định dạng json bằng cách sử dụng hàm json_encode(). Bây giờ tất cả dữ liệu được chuyển đổi thành định dạng json, vì vậy cuối cùng tôi đã sử dụng hàm file_put_contents(). Với sự trợ giúp của chức năng này, tôi đã ghi đè lên dữ liệu json này vào tệp.

Mã nguồn

append_json_data. php

 Enter Name";  
      }  
      else if(empty($_POST["gender"]))  
      {  
           $error = "";  
      }  
      else if(empty($_POST["designation"]))  
      {  
           $error = "";  
      }  
      else  
      {  
           if(file_exists('employee_data.json'))  
           {  
                $current_data = file_get_contents('employee_data.json');  
                $array_data = json_decode($current_data, true);  
                $extra = array(  
                     'name'               =>     $_POST['name'],  
                     'gender'          =>     $_POST["gender"],  
                     'designation'     =>     $_POST["designation"]  
                );  
                $array_data[] = $extra;  
                $final_data = json_encode($array_data);  
                if(file_put_contents('employee_data.json', $final_data))  
                {  
                     $message = "

  • Chia sẻ cái này.   
  • Facebook
  • Twitter
  • Google+
  • Tình cờ gặp
  • đào

Các hoạt động CRUD trong ứng dụng web được sử dụng để quản lý dữ liệu động. Nói chung, dữ liệu được lưu trữ và thao tác trong cơ sở dữ liệu. Ngoài ra còn có một cách khác để thực hiện các thao tác CRUD mà không cần cơ sở dữ liệu. Nếu bạn có bất kỳ hạn chế nào với cơ sở dữ liệu, định dạng JSON là tùy chọn tốt nhất để xây dựng ứng dụng CRUD bằng tệp JSON thay vì cơ sở dữ liệu

Các thao tác CRUD của PHP với cơ sở dữ liệu MySQL là cách tốt nhất để tạo (chèn), đọc (chọn), cập nhật và xóa các bản ghi trong ứng dụng web. Tệp JSON có thể được sử dụng để tích hợp chức năng CRUD trong PHP thay vì cơ sở dữ liệu như MySQL. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách tạo một ứng dụng CRUD đơn giản để liệt kê, xem, thêm, chỉnh sửa và xóa các bản ghi bằng tệp JSON bằng PHP

Chúng tôi sẽ triển khai chức năng sau để xây dựng tập lệnh PHP CRUD mẫu với JSON

  • Lấy dữ liệu của thành viên từ tệp JSON và liệt kê nó trên trang web
  • Thêm và chèn dữ liệu thành viên vào tệp JSON bằng PHP
  • Chỉnh sửa và cập nhật dữ liệu thành viên trong tệp JSON
  • Xóa dữ liệu thành viên khỏi tệp JSON

Trước khi bắt đầu tạo ứng dụng CRUD với tệp JSON và PHP, hãy xem cấu trúc tệp

php_crud_with_json/
├── index.php
├── addEdit.php
├── userAction.php
├── Json.class.php
├── json_files/
├── bootstrap/
│   └── bootstrap.min.css
├── css/
│   └── style.css
└── images/

Tạo tệp JSON

Vì tệp JSON sẽ được sử dụng để lưu trữ dữ liệu mà không sử dụng bất kỳ cơ sở dữ liệu nào, nên cần có tệp JSON. Trong thư mục “json_files/”, các tệp JSON sẽ được tạo động để lưu trữ thông tin của thành viên

  • Tên (
    php_crud_with_json/
    ├── index.php
    ├── addEdit.php
    ├── userAction.php
    ├── Json.class.php
    ├── json_files/
    ├── bootstrap/
    │   └── bootstrap.min.css
    ├── css/
    │   └── style.css
    └── images/
    
    5)
  • Email (
    php_crud_with_json/
    ├── index.php
    ├── addEdit.php
    ├── userAction.php
    ├── Json.class.php
    ├── json_files/
    ├── bootstrap/
    │   └── bootstrap.min.css
    ├── css/
    │   └── style.css
    └── images/
    
    6)
  • Điện thoại (
    php_crud_with_json/
    ├── index.php
    ├── addEdit.php
    ├── userAction.php
    ├── Json.class.php
    ├── json_files/
    ├── bootstrap/
    │   └── bootstrap.min.css
    ├── css/
    │   └── style.css
    └── images/
    
    7)
  • Quốc gia (
    php_crud_with_json/
    ├── index.php
    ├── addEdit.php
    ├── userAction.php
    ├── Json.class.php
    ├── json_files/
    ├── bootstrap/
    │   └── bootstrap.min.css
    ├── css/
    │   └── style.css
    └── images/
    
    8)

Định dạng dữ liệu được lưu trữ trong tệp JSON sẽ như bên dưới

[
  {
    "name": "John Doe",
    "email": "[email protected]",
    "phone": "123-456-7890",
    "country": "USA",
    "id": 1646116158
  }
]

Lớp xử lý JSON (Json. lớp. php)

Lớp Json là một thư viện PHP tùy chỉnh xử lý tất cả các hoạt động liên quan đến CRUD (tìm nạp, chèn, cập nhật và xóa) bằng tệp JSON. Chỉ định thư mục nơi tệp JSON sẽ được lưu trữ và tên của tệp JSON ($jsonFile)

  • getRows() – Tìm nạp các bản ghi từ tệp JSON bằng hàm file_get_contents() trong PHP
    • Hàm usort() trong PHP dùng để sắp xếp dữ liệu mảng theo thứ tự giảm dần
  • getSingle() – Lấy một bản ghi từ dữ liệu JSON theo ID sử dụng hàm array_filter() trong PHP
  • insert() – Lưu trữ dữ liệu vào tệp JSON bằng hàm file_put_contents() trong PHP
  • update() – Cập nhật dữ liệu hiện có theo ID trong tệp JSON
  • delete() – Xóa bản ghi khỏi tệp JSON theo ID
/*
 * JSON Class
 * This class is used for json file related (connect, insert, update, and delete) operations
 * @author    CodexWorld.com
 * @url        http://www.codexworld.com
 * @license    http://www.codexworld.com/license
 */
class Json{
    private $jsonFile = "json_files/data.json";

    public function getRows(){
        if(file_exists($this->jsonFile)){
            $jsonData = file_get_contents($this->jsonFile);
            $data = json_decode($jsonData, true);

            if(!empty($data)){
                usort($data, function($a, $b) {
                    return $b['id'] - $a['id'];
                });
            }

            return !empty($data)?$data:false;
        }
        return false;
    }

    public function getSingle($id){
        $jsonData = file_get_contents($this->jsonFile);
        $data = json_decode($jsonData, true);
        $singleData = array_filter($data, function ($var) use ($id) {
            return (!empty($var['id']) && $var['id'] == $id);
        });
        $singleData = array_values($singleData)[0];
        return !empty($singleData)?$singleData:false;
    }

    public function insert($newData){
        if(!empty($newData)){
            $id = time();
            $newData['id'] = $id;

            $jsonData = file_get_contents($this->jsonFile);
            $data = json_decode($jsonData, true);

            $data = !empty($data)?array_filter($data):$data;
            if(!empty($data)){
                array_push($data, $newData);
            }else{
                $data[] = $newData;
            }
            $insert = file_put_contents($this->jsonFile, json_encode($data));

            return $insert?$id:false;
        }else{
            return false;
        }
    }

    public function update($upData, $id){
        if(!empty($upData) && is_array($upData) && !empty($id)){
            $jsonData = file_get_contents($this->jsonFile);
            $data = json_decode($jsonData, true);

            foreach ($data as $key => $value) {
                if ($value['id'] == $id) {
                    if(isset($upData['name'])){
                        $data[$key]['name'] = $upData['name'];
                    }
                    if(isset($upData['email'])){
                        $data[$key]['email'] = $upData['email'];
                    }
                    if(isset($upData['phone'])){
                        $data[$key]['phone'] = $upData['phone'];
                    }
                    if(isset($upData['country'])){
                        $data[$key]['country'] = $upData['country'];
                    }
                }
            }
            $update = file_put_contents($this->jsonFile, json_encode($data));

            return $update?true:false;
        }else{
            return false;
        }
    }

    public function delete($id){
        $jsonData = file_get_contents($this->jsonFile);
        $data = json_decode($jsonData, true);

        $newData = array_filter($data, function ($var) use ($id) {
            return ($var['id'] != $id);
        });
        $delete = file_put_contents($this->jsonFile, json_encode($newData));
        return $delete?true:false;
    }
}

Hoạt động CRUD với JSON (userAction. php)

Tệp

php_crud_with_json/
├── index.php
├── addEdit.php
├── userAction.php
├── Json.class.php
├── json_files/
├── bootstrap/
│   └── bootstrap.min.css
├── css/
│   └── style.css
└── images/
9 thực hiện các thao tác CRUD bằng PHP và JSON (lớp trình xử lý JSON). Mã được thực thi dựa trên hành động được yêu cầu

  • Thêm/Chỉnh sửa bản ghi
    • Biểu mẫu được gửi bởi userSubmit bằng phương thức POST
    • Truy xuất giá trị của trường đầu vào bằng phương thức PHP $_POST
    • Xác thực dữ liệu đầu vào bằng PHP
    • Nếu ID hiện có được cung cấp, hãy cập nhật dữ liệu trong tệp JSON hiện có bằng phương thức
      [
        {
          "name": "John Doe",
          "email": "[email protected]",
          "phone": "123-456-7890",
          "country": "USA",
          "id": 1646116158
        }
      ]
      0 của lớp Json. Nếu không, hãy đưa dữ liệu vào tệp JSON bằng phương thức
      [
        {
          "name": "John Doe",
          "email": "[email protected]",
          "phone": "123-456-7890",
          "country": "USA",
          "id": 1646116158
        }
      ]
      1 của lớp Json
  • Xóa bản ghi – Nếu yêu cầu xóa trong action_type, hãy xóa dữ liệu khỏi tệp JSON dựa trên id được cung cấp trong chuỗi truy vấn
  • Sau khi thao tác dữ liệu, trạng thái được lưu trữ trong PHIÊN với PHP và chuyển hướng trở lại trang tương ứng
// Start session
session_start();

// Include and initialize DB class
require_once 'Json.class.php';
$db = new Json();

// Set default redirect url
$redirectURL = 'index.php';

if(isset($_POST['userSubmit'])){
    // Get form fields value
    $id = $_POST['id'];
    $name = trim(strip_tags($_POST['name']));
    $email = trim(strip_tags($_POST['email']));
    $phone = trim(strip_tags($_POST['phone']));
    $country = trim(strip_tags($_POST['country']));

    $id_str = '';
    if(!empty($id)){
        $id_str = '?id='.$id;
    }

    // Fields validation
    $errorMsg = '';
    if(empty($name)){
        $errorMsg .= '

Please enter your name.

';
    }
    if(empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)){
        $errorMsg .= '

Please enter a valid email.

';
    }
    if(empty($phone)){
        $errorMsg .= '

Please enter contact no.

';
    }
    if(empty($country)){
        $errorMsg .= '

Please enter country name.

';
    }

    // Submitted form data
    $userData = array(
        'name' => $name,
        'email' => $email,
        'phone' => $phone,
        'country' => $country
    );

    // Store the submitted field value in the session
    $sessData['userData'] = $userData;

    // Submit the form data
    if(empty($errorMsg)){
        if(!empty($_POST['id'])){
            // Update user data
            $update = $db->update($userData, $_POST['id']);

            if($update){
                $sessData['status']['type'] = 'success';
                $sessData['status']['msg'] = 'Member data has been updated successfully.';

                // Remove submitted fields value from session
                unset($sessData['userData']);
            }else{
                $sessData['status']['type'] = 'error';
                $sessData['status']['msg'] = 'Some problem occurred, please try again.';

                // Set redirect url
                $redirectURL = 'addEdit.php'.$id_str;
            }
        }else{
            // Insert user data
            $insert = $db->insert($userData);

            if($insert){
                $sessData['status']['type'] = 'success';
                $sessData['status']['msg'] = 'Member data has been added successfully.';

                // Remove submitted fields value from session
                unset($sessData['userData']);
            }else{
                $sessData['status']['type'] = 'error';
                $sessData['status']['msg'] = 'Some problem occurred, please try again.';

                // Set redirect url
                $redirectURL = 'addEdit.php'.$id_str;
            }
        }
    }else{
        $sessData['status']['type'] = 'error';
        $sessData['status']['msg'] = '

Please fill all the mandatory fields.

'.$errorMsg;

        // Set redirect url
        $redirectURL = 'addEdit.php'.$id_str;
    }

    // Store status into the session
    $_SESSION['sessData'] = $sessData;
}elseif(($_REQUEST['action_type'] == 'delete') && !empty($_GET['id'])){
    // Delete data
    $delete = $db->delete($_GET['id']);

    if($delete){
        $sessData['status']['type'] = 'success';
        $sessData['status']['msg'] = 'Member data has been deleted successfully.';
    }else{
        $sessData['status']['type'] = 'error';
        $sessData['status']['msg'] = 'Some problem occurred, please try again.';
    }

    // Store status into the session
    $_SESSION['sessData'] = $sessData;
}

// Redirect to the respective page
header("Location:".$redirectURL);
exit();
?>

Thư viện Bootstrap

Chúng tôi sẽ sử dụng thư viện Bootstrap để làm cho bảng, biểu mẫu và nút trông đẹp hơn. Bạn có thể bỏ qua nó để sử dụng biểu định kiểu tùy chỉnh cho bảng HTML, biểu mẫu, nút và các phần tử giao diện người dùng khác

Bao gồm tệp CSS của thư viện Bootstrap

Đọc và Xóa Bản ghi (chỉ mục. php)

Trong tệp

[
  {
    "name": "John Doe",
    "email": "[email protected]",
    "phone": "123-456-7890",
    "country": "USA",
    "id": 1646116158
  }
]
2, chúng tôi sẽ truy xuất các bản ghi từ tệp JSON bằng cách sử dụng lớp Json và liệt kê chúng ở định dạng bảng với các tùy chọn Thêm, Chỉnh sửa và Xóa

  • Liên kết Thêm chuyển hướng đến trang
    [
      {
        "name": "John Doe",
        "email": "[email protected]",
        "phone": "123-456-7890",
        "country": "USA",
        "id": 1646116158
      }
    ]
    3 để thực hiện thao tác Tạo
  • Liên kết Chỉnh sửa chuyển hướng đến trang
    [
      {
        "name": "John Doe",
        "email": "[email protected]",
        "phone": "123-456-7890",
        "country": "USA",
        "id": 1646116158
      }
    ]
    3 để thực hiện thao tác Cập nhật
  • Liên kết Xóa chuyển hướng đến tệp
    php_crud_with_json/
    ├── index.php
    ├── addEdit.php
    ├── userAction.php
    ├── Json.class.php
    ├── json_files/
    ├── bootstrap/
    │   └── bootstrap.min.css
    ├── css/
    │   └── style.css
    └── images/
    
    9 với thông số
    [
      {
        "name": "John Doe",
        "email": "[email protected]",
        "phone": "123-456-7890",
        "country": "USA",
        "id": 1646116158
      }
    ]
    6 và
    [
      {
        "name": "John Doe",
        "email": "[email protected]",
        "phone": "123-456-7890",
        "country": "USA",
        "id": 1646116158
      }
    ]
    7. Trong tệp
    php_crud_with_json/
    ├── index.php
    ├── addEdit.php
    ├── userAction.php
    ├── Json.class.php
    ├── json_files/
    ├── bootstrap/
    │   └── bootstrap.min.css
    ├── css/
    │   └── style.css
    └── images/
    
    9, bản ghi bị xóa khỏi tệp JSON dựa trên mã định danh duy nhất (id)

Tạo và cập nhật bản ghi (thêmSửa. php)

[
  {
    "name": "John Doe",
    "email": "[email protected]",
    "phone": "123-456-7890",
    "country": "USA",
    "id": 1646116158
  }
]
3 xử lý chức năng tạo và cập nhật biểu mẫu

  • Ban đầu, một biểu mẫu HTML được hiển thị để cho phép nhập dữ liệu
  • Nếu tham số
    [
      {
        "name": "John Doe",
        "email": "[email protected]",
        "phone": "123-456-7890",
        "country": "USA",
        "id": 1646116158
      }
    ]
    7 tồn tại trên URL, dữ liệu thành viên hiện có sẽ được truy xuất từ ​​cơ sở dữ liệu dựa trên ID này và các trường biểu mẫu sẽ được điền sẵn
  • Sau khi gửi biểu mẫu, dữ liệu biểu mẫu được đăng lên userAction. php để chèn/cập nhật bản ghi trong tệp JSON

Hoạt động CRUD PHP với Tìm kiếm và Phân trang

Phần kết luận

JSON CRUD này là một tập lệnh nhẹ và dễ sử dụng để tích hợp chức năng quản lý dữ liệu mà không cần sử dụng cơ sở dữ liệu. Các hoạt động liệt kê, xem, chèn, cập nhật và xóa dữ liệu có thể được xử lý bằng các tệp JSON bằng PHP. Bạn có thể nâng cao chức năng của tập lệnh CRUD này để làm cho nó thân thiện với người dùng bằng cách tích hợp các thao tác CRUD PHP mà không cần làm mới trang bằng tệp JSON

Bạn có muốn nhận trợ giúp triển khai hay sửa đổi hoặc nâng cao chức năng của tập lệnh này không?

Làm cách nào để ghi dữ liệu vào tệp JSON trong PHP?

Viết tệp JSON bằng PHP .
Chuyển đổi danh sách mảng kết hợp thành chuỗi JSON với json_encode($jsonData, JSON_PRETTY_PRINT)
Mở tệp JSON mới bằng fopen($path, 'w')
Viết chuỗi JSON bằng fwrite($fp, $jsonString)
Đóng tệp bằng fclose($fp)

Làm cách nào để thêm giá trị vào JSON trong PHP?

Tệp PHP được giải thích. .
Chuyển đổi yêu cầu thành một đối tượng, sử dụng hàm PHP json_decode()
Truy cập cơ sở dữ liệu và điền vào một mảng với dữ liệu được yêu cầu
Thêm mảng vào một đối tượng và trả về đối tượng dưới dạng JSON bằng hàm json_encode()

Làm cách nào để chèn dữ liệu vào tệp JSON?

Quy trình .
Để chèn dữ liệu JSON, hãy thêm JSON vào lệnh INSERT. Lưu ý sự vắng mặt của từ khóa GIÁ TRỊ và danh sách các cột có trong các lệnh INSERT khác. .
Một giá trị null sẽ được nhập nếu một cột được xác định như họ, không được chèn vào bảng bằng định dạng JSON

Làm cách nào để thêm dữ liệu biểu mẫu vào JSON?

Lập kế hoạch. làm cách nào chúng tôi có thể chuyển đổi các trường biểu mẫu thành JSON? .
Nắm bắt sự kiện gửi biểu mẫu và ngăn chặn việc gửi mặc định
Chuyển đổi các phần tử con của biểu mẫu thành JSON
Kiểm tra để đảm bảo chỉ các phần tử trường biểu mẫu được thêm vào đối tượng
Thêm biện pháp bảo vệ để chỉ lưu trữ các trường có thể kiểm tra nếu thuộc tính đã kiểm tra được đặt