Mega Code Archive

 
Categories / Php / MySQL Database
 

Simple pipe delimited file export program that downloads to a local machine

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 "<html><body><h2> Table Data Exporter </h2> <h4>Creates a pipe delimited file of the table contents.</h4> <br><br><form name=myform action=".$_SERVER['PHP_SELF']." method=post> Table Name:<input type=text name=mytable> <input type=submit name=submit value=Submit> </form></body></html>"; } ?>