Jump to content

export to csv file from a dynamic table


sonofjorel

Recommended Posts

I am trying to export a dynamically created table (one that has been filtered from user inputs) into a csv file format.  I have simplified the database and code for ease of use.  I also have generated the export file which will extract all information from the table in the database, but I need the information that is filtered by the user to be extracted.  Files are shown below.

 

How might I modify my export.php file (or other files) to accomplish this?

 

Thanks in Advance

 

 

export.php

<?php

include 'config.php';

$table = 'user';
$file = 'export';

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field'].", ";
$i++;
}
}
$csv_output .= "\n";

$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j].", ";
}
$csv_output .= "\n";
} 

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
?>

 

config.php

<?php
$con = mysql_connect('localhost', 'root', '');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("test", $con);
?>

 

index.php

<?php
include('config.php');  //Include the database connections in it's own file, for easy integration in multiple pages.

$lastname_result = mysql_query("SELECT lastname FROM user GROUP BY lastname");

$result = mysql_query("SELECT * FROM user");

?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="start/jquery-ui-1.8.4.custom.css" rel="stylesheet" type="text/css"/></link>
<link href="../themes/style.css" rel="stylesheet" type="text/css" media="print, projection, screen" /></link>
<link href="../common.css" rel="stylesheet" type="text/css"></link>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.tablesorter.js"></script>
<script type="text/javascript" src="jquery-ui-1.8.4.custom.min.js"></script>
<script type="text/javascript">
$(document).ready(function() 
    { 
       	$("#myTable").tablesorter({widgets: ['zebra']});
	$("#options").tablesorter({sortList: [[0,0]], headers: { 3:{sorter: false}, 4:{sorter: false}}});
    } 
); 

function reSort(par) {
$("#tableBody").empty();
var vfrom = document.getElementById('from').value;
var vto = document.getElementById('to').value;
$.get('table.list.php?from='+vfrom+'&to='+vto+'&lastname='+par,function(html) { 
             // append the "ajax'd" data to the table body 
             $("#tableBody").append(html); 
            // let the plugin know that we made a update 
            $("#myTable").trigger("update"); 
		// set sorting column and direction, this will sort on the first and third column 
            var sorting = [[0,0]]; 
            // sort on the first column 
            $("#myTable").trigger("sorton",[sorting]); 
        }); 
}

function getNames() {
var vfrom = document.getElementById('from').value;
var vto = document.getElementById('to').value;
$("#selectbox").empty();
$.get('select.list.php?from='+vfrom+'&to='+vto,function(html) {

$("#selectbox").append(html);

});
}

</script>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="5" class="main">
<tr>
<td width="160" valign="top"></td>
<td width="732" valign="top">
<table width="90%" border="0" align="center">
<form method="post">
<label for="from">From</label>
<input type="text" id="from" name="from" onkeyup="getNames();"/>
<label for="to">to</label>
<input type="text" id="to" name="to" onkeyup="getNames();"/>

<select id="selectbox" name="area" onchange="reSort(this.value);"> 
<option value="">Select an lastname</option>
<option value=""></option>
<?php while(list($lastname)=mysql_fetch_array($lastname_result)) {
     echo "<option value='$lastname'>$lastname</option>";
}
?>
</select>
</form>
<form action="export.php">
<input type="Submit" value="Export to Excel"></input>
</form>
</table>
<table id="myTable" class="tablesorter" border="0" cellpadding="5" cellspacing="1">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
<th>Birthday</th>
<th>Hometown</th>
<th>Job</th>
</tr>
</thead>
<tbody id="tableBody"> <?php //added id to the tbody so we could change the content via javascript ?>

</tbody>
</table>  
<p> </p>
<p> </p>
<p align="right">  </p>
</td>
<td width="196" valign="top"> </td>
</tr>



</table>
</body>
</html>

 

select.list.php

<?php
include('config.php');  //database connections.

if(!isset($_GET['to']) && !isset($_GET['from'])) {  //if the uri parameters are not there send em to google.
header('Location: http://google.com');
exit();
}
$from = (isset($_GET['from'])) ? date('Y-m-d',strtotime($_GET['from'])) : NULL;
$to = (isset($_GET['to'])) ? date('Y-m-d',strtotime($_GET['to'])) : NULL;

if($from != NULL && $to != NULL) {

$where = " WHERE birthdate BETWEEN '$from' AND '$to'";
}
elseif($from != NULL) {

$where = " WHERE birthdate >= '$from'";
}
elseif($to != NULL) {


$where = " WHERE birthdate <= '$to'";
}


$query = "SELECT lastname FROM user $where GROUP BY lastname"; //write the query.
//echo $query;
$lastname_result = mysql_query($query) or die($query . ' ' . mysql_error()); //execute the query, or die trying.
echo '<option value="">Select an lastname</option>
<option value=""></option>
';
while(list($lastname)=mysql_fetch_array($lastname_result)) {
     echo "<option value='$lastname'>$lastname</option>";
}
?>

 

table.list.php

<?php
include('config.php');  //database connection.
if(!isset($_GET['lastname'])) { //if the proper get parameter is not there, redirect to google.
header('Location: http://google.com');
exit();
}

$lastname = preg_replace('~[^A-Za-z]+~','',$_GET['lastname']);  //strip out anything but alpha for the name.
$lastname = trim($lastname); //trim the name from all whitespace.
if($lastname != '') { //check against an empty string.  could have just used "empty()".

$where = ' WHERE lastname = \'' . $lastname . '\''; //write the where clause.
}
else { //if lastname is empty, the where clause will be to, and it will return all names.
$where = NULL;
unset($lastname);
}

$from = (isset($_GET['from'])) ? date('Y-m-d',strtotime($_GET['from'])) : NULL;
$to = (isset($_GET['to'])) ? date('Y-m-d',strtotime($_GET['to'])) : NULL;

if($from != NULL && $to != NULL) {
$where .= (isset($lastname)) ? ' AND ' : ' WHERE ';
$where .= " birthdate BETWEEN '$from' AND '$to'";
}
elseif($from != NULL) {
$where .= (isset($lastname)) ? ' AND ' : ' WHERE ';
$where .= " birthdate >= '$from'";
}
elseif($to != NULL) {
$where .= (isset($lastname)) ? ' AND ' : ' WHERE ';
$where .= " birthdate <= '$to'";
}
$query = "SELECT * FROM user $where";
$result = mysql_query($query); //get the database result.
while($row=mysql_fetch_assoc($result)){  //loop and display data.
?>
<tr>
<td><?php echo $row['firstname']; ?></td>
<td><?php echo $row['lastname']; ?></td>
<td><?php echo $row['age']; ?></td>
<td><?php echo $row['birthdate']; ?></td>
<td><?php echo $row['hometown']; ?></td>
<td><?php echo $row['job']; ?></td>
</tr>

<?php } // End while loop. ?>

 

 

sql code

create table `user` (
`id` double ,
`firstname` varchar (60),
`lastname` varchar (24),
`age` double ,
`hometown` varchar (75),
`job` varchar (75),
`birthdate` date 
); 
insert into `user` (`id`, `firstname`, `lastname`, `age`, `hometown`, `job`, `birthdate`) values('1','Peter','Griffin','41','Quahog','Brewery','1960-01-01');
insert into `user` (`id`, `firstname`, `lastname`, `age`, `hometown`, `job`, `birthdate`) values('2','Lois','Griffin','40','Newport','Piano Teacher','1961-08-11');
insert into `user` (`id`, `firstname`, `lastname`, `age`, `hometown`, `job`, `birthdate`) values('3','Joseph','Swanson','39','Quahog','Police Officer','1962-07-23');
insert into `user` (`id`, `firstname`, `lastname`, `age`, `hometown`, `job`, `birthdate`) values('4','Glenn','Quagmire','41','Quahog','Pilot','1960-02-28');
insert into `user` (`id`, `firstname`, `lastname`, `age`, `hometown`, `job`, `birthdate`) values('5','Megan','Griffin','16','Quahog','Student','1984-04-24');
insert into `user` (`id`, `firstname`, `lastname`, `age`, `hometown`, `job`, `birthdate`) values('6','Stewie','Griffin','2','Quahog','Dictator','2008-03-03');

Link to comment
https://forums.phpfreaks.com/topic/212891-export-to-csv-file-from-a-dynamic-table/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.