Re: creating an xls file from mysql data

From: Date: Sun, 11 May 2008 21:06:42 +0000
Subject: Re: creating an xls file from mysql data
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-274156@lists.php.net to get a copy of this message
Hi, You could always do this within mysql itself. You also have the wrong output header and what seems to be some quite inefficient code, anyway take a look at the following. SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' Thanks Andrew 2008/5/11 Richard Kurth <richardkurth@centurytel.net>: > > This script will create an xls file from the data that is sent to it > When I run this it only gets one recored and it is supposet to get all the > records that are past by the $_POST[selectedcontactlist] > I think I have a } in the wrong place but I can not figure it out anybody > have a suggestion > > $_POST[selectedcontactlist]="3,45,65,23,12,4,56"; //this is a sample of > what is past > > $ExplodeIt = explode(",",rtrim($_POST[selectedcontactlist],",")); > $Count = count($ExplodeIt); > for ($i=0; $i < $Count; $i++) { > $sql = "SELECT * FROM contacts WHERE id = '$ExplodeIt[$i]'"; > $sql_result = query($sql); > $count = mysql_num_fields($sql_result); > > for ($i = 0; $i < $count; $i++){ > $header .= mysql_field_name($sql_result, $i)."\t"; > } > > while($row = mysql_fetch_row($sql_result)){ > $line = ''; > foreach($row as $value){ > if(!isset($value) || $value == ""){ > $value = "\t"; > }else{ > # important to escape any quotes to preserve them in the data. > $value = str_replace('"', '""', $value); > # needed to encapsulate data in quotes because some data might be multi > line. > # the good news is that numbers remain numbers in Excel even though quoted. > $value = '"' . $value . '"' . "\t"; > } > $line .= $value; > } > $data .= trim($line)."\n"; > } > } > # this line is needed because returns embedded in the data have "\r" > # and this looks like a "box character" in Excel > $data = str_replace("\r", "", $data); > > > # Nice to let someone know that the search came up empty. > # Otherwise only the column name headers will be output to Excel. > if ($data == "") { > $data = "\nno matching records found\n"; > } > > # This line will stream the file to the user rather than spray it across > the screen > header("Content-type: application/octet-stream"); > > # replace excelfile.xls with whatever you want the filename to default to > header("Content-Disposition: attachment; filename=excelfile.xls"); > header("Pragma: no-cache"); > header("Expires: 0"); > > echo $header."\n".$data; > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >

« previous php.general (#274156) next »