Fetch JSON, Save to MongoDB, and Export to Word Document with PHP Full Guide

Fetch JSON Data, Save to MongoDB, and Display in jQuery Table with Word Document Export in PHP

This comprehensive guide demonstrates how to:

    Fetch data from a JSON URL in PHP.
    Store the data into a MongoDB database.
    Display the data in a dynamic jQuery DataTable.
    Export the table data to a Word document (.docx) using PHP.


Step 1: Prerequisites

    PHP Version: PHP 7.4 or higher.
    MongoDB: Ensure MongoDB is installed and running.
    Composer: Required for installing libraries.
    Node.js/npm: For managing frontend libraries like jQuery DataTables.

 

Step 2: Install Required Libraries

 MongoDB PHP Driver: Install using Composer:

 composer require mongodb/mongodb

PHPWord Library: For generating Word documents:

 composer require phpoffice/phpword

 

Step 3: Fetch Data from JSON URL and Save to MongoDB

Create a file named fetch_and_save.php:

<?php
require 'vendor/autoload.php'; // Load Composer libraries

use MongoDB\Client;

// MongoDB configuration
$mongoClient = new Client("mongodb://localhost:27017");
$database = $mongoClient->tutorial_db;
$collection = $database->students;

// Fetch JSON data from URL
$jsonUrl = 'https://api.example.com/students'; // Replace with a valid JSON URL
$jsonData = file_get_contents($jsonUrl);
$data = json_decode($jsonData, true);

// Save data to MongoDB
if ($data && is_array($data)) {
    $collection->deleteMany([]); // Clear existing data
    $collection->insertMany($data); // Insert new data
    echo "Data successfully saved to MongoDB.";
} else {
    echo "Failed to fetch or decode JSON data.";
}
?>


Step 4: Display Data in jQuery DataTable

Create an endpoint get_data.php to fetch data from MongoDB for display:

<?php
require 'vendor/autoload.php'; // Load Composer libraries

use MongoDB\Client;

// MongoDB configuration
$mongoClient = new Client("mongodb://localhost:27017");
$database = $mongoClient->tutorial_db;
$collection = $database->students;

// Fetch data from MongoDB
$data = $collection->find();
$output = [];

foreach ($data as $item) {
    $output[] = $item;
}

// Return data as JSON
header('Content-Type: application/json');
echo json_encode($output);
?>


Create an HTML page index.html with a jQuery DataTable:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Student Data Table</title>
    <!-- Include jQuery and DataTables -->
    <link rel="stylesheet" href="https://cdn.datatables.net/1.13.4/css/jquery.dataTables.min.css">
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
    <script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script>
</head>
<body>
    <h1>Student Data Table</h1>
    <table id="studentTable" class="display" style="width:100%">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Email</th>
                <th>Course</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
    <button id="exportWord">Export to Word</button>

    <script>
        $(document).ready(function() {
            $('#studentTable').DataTable({
                ajax: 'get_data.php',
                columns: [
                    { data: '_id.$oid' },
                    { data: 'name' },
                    { data: 'email' },
                    { data: 'course' }
                ]
            });

            $('#exportWord').on('click', function() {
                window.location.href = 'export_docx.php';
            });
        });
    </script>
</body>
</html>


 

Step 5: Export to Word Document

Create export_docx.php to generate a Word document:

<?php
require 'vendor/autoload.php'; // Load Composer libraries

use MongoDB\Client;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\IOFactory;

// MongoDB configuration
$mongoClient = new Client("mongodb://localhost:27017");
$database = $mongoClient->tutorial_db;
$collection = $database->students;

// Fetch data from MongoDB
$data = $collection->find();

// Create Word document
$phpWord = new PhpWord();
$section = $phpWord->addSection();
$section->addText('Student Data', ['bold' => true, 'size' => 16]);

$table = $section->addTable();
$table->addRow();
$table->addCell(2000)->addText('ID');
$table->addCell(2000)->addText('Name');
$table->addCell(2000)->addText('Email');
$table->addCell(2000)->addText('Course');

foreach ($data as $item) {
    $table->addRow();
    $table->addCell(2000)->addText($item['_id']);
    $table->addCell(2000)->addText($item['name']);
    $table->addCell(2000)->addText($item['email']);
    $table->addCell(2000)->addText($item['course']);
}

// Save and send to browse
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment;filename="students.docx"');
header('Cache-Control: max-age=0');

$writer = IOFactory::createWriter($phpWord, 'Word2007');
$writer->save('php://output');
exit;
?>


Hope this is helpful, and I apologize if there are any inaccuracies in the information provided.

Post a Comment for "Fetch JSON, Save to MongoDB, and Export to Word Document with PHP Full Guide"