Hi All,
I'm sure its been done to death, but here it is. Simple and it allows input of a table name for the user to export...
// Turn off all error reporting
error_reporting(0);
//db conn stuff
//mysql_connect('host', 'user', 'passwrd') or die ("Error connecting to Database");
if (!$_POST['submit']){
show_form();
}else{
$table = @$_POST['mytable'];
if (!eregi("[a-z0-9_]{1,64}",$table)){
show_form();
die("disallowed_table name. if your tables names contain other characters, consider renaming them.");
}//end if
require("local_conn.php");
$sql = "select * from $table ";
if (!($conn2=mysql_connect($host, $username, $pwd))) {
printf("error connecting to DB by user = $username and pwd=$pwd");
exit();
}
$db2=mysql_select_db($dbname,$conn2) or die("Unable to connect to local database
$result = mysql_query($sql) or die ("Can't complete query because ".mysql_error());
if (($result)&&(mysql_num_rows($result)>1)){
return $result;
}else{
echo "No Results found. Check your table name";
die();
}
if (($result) && (mysql_num_rows($result)>0)){
//set the path and file name
//$dir="/path/to/file/";
$filename = 'test.txt';
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
exit;
}
while ($rows = mysql_fetch_array($result)){
$fields = mysql_num_fields($result);
$content = "";
//calc the length of the line (number of elements)
for($x = 0; $x < $fields-1; $x++){
$content .= "" . $rows[$x] . " | ";
}//next
$content = substr($content, 0, strlen($content)-2). "\n"; //remove the last pipe as its not needed and adds the new line character
// Write $content to our opened file.
if (fwrite($handle, $content) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
}//end while
fclose($handle);
//call the function to force the download the users computer
force_download($filename);
}//end if
}//end if
function force_download($file)
{
//$dir="/path/to/file/";
if (isset($file)) {
header("Content-type: application/force-download");
header('Content-Disposition: inline; filename="' . $file . '"');
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file));
header('Content-Type: application/octet-stream');
//header("Content-disposition: attachment; filename="".basename($file).""");
header('Content-Disposition: attachment; filename="' . $file . '"');
readfile("$file");
} else {
echo "No file selected";
} //end if
}//end function
function show_form()
{
echo " Table Data Exporter
Creates a pipe delimited file of the table contents.
";
}
?>