Bluehost.com Web Hosting $6.95

creating an xls file from mysql data

This is a discussion on creating an xls file from mysql data within the PHP General forums, part of the PHP Programming Forums category; This script will create an xls file from the data that is sent to it When I run this it ...


Go Back   Usenet Forums > PHP Programming Forums > PHP General

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 05-11-2008
Richard Kurth
 
Posts: n/a
Default creating an xls file from mysql data


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;

Reply With Quote
  #2 (permalink)  
Old 05-11-2008
Andrew Johnstone
 
Posts: n/a
Default Re: [PHP] creating an xls file from mysql data

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
>
>


Reply With Quote
  #3 (permalink)  
Old 05-11-2008
Hans Wolters
 
Posts: n/a
Default Re: [PHP] creating an xls file from mysql data

In article <d16dfa3f0805111406h7d299cc1q44002e9a82f057b8@mail .gmail.com>,
"Andrew Johnstone" wrote:
>
> SELECT order_id,product_name,qty
> FROM orders
> INTO OUTFILE '/tmp/orders.csv'
> FIELDS TERMINATED BY ','
> ENCLOSED BY '"'
> LINES TERMINATED BY '\n'


Into outfile needs specific user rights. Default it's not available.

Hans
--
IM: hans.wolters@xs4all.nl

Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 05:25 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0