I am using PHP and I have to export the data from the database. I am using the below code which is working.
JavaScript
x
$sql = "SELECT `name`, `email`, `mobileno`, `data_of_added` FROM `emp` WHERE is_active=1 order by data_of_added DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$rows = $stmt->fetchAll();
//Get the column names.
$columnNames = array();
//Open up a file pointer
$fp = fopen('php://output', 'w');
fputcsv($fp, array('id','Name', 'Email','Mobileno', 'Date of contact'));
fputcsv($fp, $columnNames);
// //Then, loop through the rows and write them to the CSV file.
$i=1;
foreach ($rows as $row) {
$data = array('id'=>$i++,'name' =>$row['name'],'email' =>$row['email'],'mobileno' =>$row['mobileno'],'data_of_added' =>$row['data_of_added']);
fputcsv($fp, $data);
}
$fileName = 'export.csv';
header('Content-Type: application/excel');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
fclose($fp);
I am getting all the records.
Notice that I am getting all the records in descending order and id is showing ascending `order.
This is my expected output:
How can I show the Id in descending order?
Advertisement
Answer
You can do this way easily with the help of count()
and decrementing the $len
by 1
JavaScript
$len = count($rows);
foreach ($rows as $row) {
$data = array('id'=>$len--,'name' =>$row['name'],'email' =>$row['email'],'mobileno' =>$row['mobileno'],'data_of_added' =>$row['data_of_added']);
fputcsv($fp, $data);
}
Note: You could do that id
order descending on your select query side but as you are already using order by data_of_added DESC
so I guess above snippet will do the trick for you.