Re: creating an xls file from mysql data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>:

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

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux