CSV File
CSV File
AIM:
To export the data in the database to CSV files using PHP and MySQL.
CODE:
EXPORT DATA TO CSV FILE USING PHP AND MYSQL
1. Create Database Table
CREATE TABLE `members` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
`last_name` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`gender` enum('Male','Female') COLLATE utf8_unicode_ci NOT
NULL,
`country` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`created` datetime NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Inactive',
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
COLLATE=utf8_unicode_ci;
2. Database Configuration (dbConfig.php)
<?php
// Database configuration
$dbHost = "localhost";
$dbUsername = "root";
$dbPassword = "root";
$dbName = "codexworld";
// Create database connection
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
// Check connection
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
3.Data List from MySQL Database (index.php)
Initially, all the member’s data is fetched from the database and listed in a tabular format.
An EXPORT button is placed at the top of the data list.
By clicking the Export button, the data is exported from the database and allow to download
on a local drive as a CSV file.
index.php
<!-- Export link -->
<div class="col-md-12 head">
<div class="float-right">
<a href="exportData.php" class="btn btn-success"><i
class="dwn"></i> Export</a>
</div>
</div>
<!-- Data list table -->
<table class="table table-striped table-bordered">
<thead class="thead-dark">
<tr>
<th>#ID</th>
<th>Name</th>
<th>Email</th>
<th>Gender</th>
<th>Country</th>
<th>Created</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php
// Fetch records from database
$result = $db->query("SELECT * FROM members ORDER BY id ASC");
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['first_name'].'
'.$row['last_name']; ?></td>
<td><?php echo $row['email']; ?></td>
<td><?php echo $row['gender']; ?></td>
<td><?php echo $row['country']; ?></td>
<td><?php echo $row['created']; ?></td>
<td><?php echo ($row['status'] ==
1)?'Active':'Inactive'; ?></td>
</tr>
<?php } }else{ ?>
<tr><td colspan="7">No member(s) found...</td></tr>
<?php } ?>
</tbody>
</table>
4. Export Data to CSV File using PHP (exportData.php)
The exportData.php file handles the data export and CSV file download process
using PHP and MySQL.
Retrieve data from the MySQL database.
Create a file pointer using fopen() function.
Specify the header columns and put data into the CSV file.
Output each row of the data, format line as CSV, and write to file pointer.
Set Content-Type and Content-Disposition to force the browser to download the file
rather than display it.
exportData.php
<?php
// Load the database configuration file
include_once 'dbConfig.php';
// Fetch records from database
$query = $db->query("SELECT * FROM members ORDER BY id ASC");
if($query->num_rows > 0){
$delimiter = ",";
$filename = "members-data_" . date('Y-m-d') . ".csv";
// Create a file pointer
$f = fopen('php://memory', 'w');
// Set column headers
$fields = array('ID', 'FIRST NAME', 'LAST NAME',
'EMAIL', 'GENDER',
'COUNTRY', 'CREATED', 'STATUS');
fputcsv($f, $fields, $delimiter);
// Output each row of the data, format line as csv and write to file pointer
while($row = $query->fetch_assoc()){
$status = ($row['status'] == 1)?'Active':'Inactive';
$lineData = array($row['id'], $row['first_name'],
$row['last_name'], $row['email'],
$row['gender'], $row['country'], $row['created'], $status);
fputcsv($f, $lineData, $delimiter);
}
// Move back to beginning of file
fseek($f, 0);
// Set headers to download file rather than displayed
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename .
'";');
//output all remaining data on a file pointer
fpassthru($f);
}
exit;
?>
Record (20)
Viva (10)
Total (60)
RESULT:
Thus, the program to export data in the database to CSV file using PHP and MySQL
has been done successfully.