2014-02-11 50 views
-2

我已經使用正常工作的鏈接導出到csv,但我想要一個表單,用戶選擇「開始日期」和「結束日期」以及這些日期被導出爲CSV。使用PHP導出爲CSV(在選定的日期範圍內)

到目前爲止,我有: 表單提交

<form id="export" name="export" method="post" action="export.php"> 
To<input type="date" id="date1" name="date1"><br> 
From<input type="date" id="date2" name="date2"><br> 
<input type="submit"> 
</form> 

Export.php

<?php 

$date1 = $_POST['date1']; 
$date2 = $_POST['date2']; 

$host = 'localhost'; // MYSQL database host adress 
$db = 'chboard'; // MYSQL database name 
$user = ''; // Mysql Datbase user 
$pass = '"; // Mysql Datbase password 
// Connect to the database 
$link = mysql_connect($host, $user, $pass); 
mysql_select_db($db); 

require 'exportcsv.inc.php'; 

$table="vacationrequests"; // this is the tablename that you want to export to csv from mysql. 

exportMysqlToCsv($table); 

?> 

exportcsv.inc.php

<?php 


function exportMysqlToCsv($table,$filename = 'export.csv') 
{ 
$csv_terminated = "\n"; 
$csv_separator = ","; 
$csv_enclosed = '"'; 
$csv_escaped = "\\"; 
$sql_query = "select * from $table WHERE $start >= $date1 AND $end <= $date2"; 

// Gets the data from the database 
$result = mysql_query($sql_query); 
$fields_cnt = mysql_num_fields($result); 


$schema_insert = ''; 

for ($i = 0; $i < $fields_cnt; $i++) 
{ 
    $l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped .  $csv_enclosed, 
     stripslashes(mysql_field_name($result, $i))) . $csv_enclosed; 
    $schema_insert .= $l; 
    $schema_insert .= $csv_separator; 
} // end for 

$out = trim(substr($schema_insert, 0, -1)); 
$out .= $csv_terminated; 

// Format the data 
while ($row = mysql_fetch_array($result)) 
{ 
    $schema_insert = ''; 
    for ($j = 0; $j < $fields_cnt; $j++) 
    { 
     if ($row[$j] == '0' || $row[$j] != '') 
     { 

      if ($csv_enclosed == '') 
      { 
       $schema_insert .= $row[$j]; 
      } else 
      { 
       $schema_insert .= $csv_enclosed . 
       str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j]) . $csv_enclosed; 
      } 
     } else 
     { 
      $schema_insert .= ''; 
     } 

     if ($j < $fields_cnt - 1) 
     { 
      $schema_insert .= $csv_separator; 
     } 
    } // end for 

    $out .= $schema_insert; 
    $out .= $csv_terminated; 
} // end while 

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Length: " . strlen($out)); 
// Output to browser with appropriate mime type, you choose ;) 
header("Content-type: text/x-csv"); 
//header("Content-type: text/csv"); 
//header("Content-type: application/csv"); 
header("Content-Disposition: attachment; filename=$filename"); 
echo $out; 
exit; 

} 

?> 

輸出是一個CSV文件,並在我得到的第一個單元格是<。任何幫助指出我正確的方向來實現這一目標會很好。

+2

使用'fputcsv()' – hek2mgl

回答

2

你試過fputcsv?如果你願意,你需要獲取你的結果,然後將它傳遞給函數,該函數將寫入文件。