簡體   English   中英

在mysql中打印表后導出到csv

[英]Export to csv after printing table in mysql

從一個多小時的地獄以來一直試圖弄清楚這一點,但沒有結果。 用戶可以選擇某種形式的過濾器,從而生成一個唯一的表格,並打印到屏幕上。

然后,我需要一個按鈕將此特定表導出到存儲在用戶計算機上的csv文件。

if(isset($_POST["askReport"])){ 
//all the variables
//...
$myQuery = ""SELECT *, TIME_TO_SEC(stopwerkdagU) - TIME_TO_SEC(startwerkdagU) - pauzetijdU AS totaalurenU, TIME_TO_SEC(stopwerkdagU) - TIME_TO_SEC(startwerkdag) - pauzetijd AS totaaluren FROM `newRegister` $u $aP $pD $uF $sD"";

$result = $mysqli->query($myQuery);
  if($result->num_rows >0){
    print '<table><tr><th>.....'; //and all the headers
    print '<td>'.$row["user"].'</td>';
    ..... //and all the other columns and end of row
  }

到目前為止,一切都很好,我得到了一個不錯的表格,其中包含了所需的結果。 但是接着是棘手的部分-如何獲得下載此表的按鈕? 這是我嘗試的方法:(此代碼在isset($ _ POST [“ askReport”])中是stil)

// DOWNLOAD TABEL
    print '<form method="POST"><button name=download>download</button></form>';

    if(isset($_POST["download"])){
        $select = "SELECT *, TIME_TO_SEC(stopwerkdagU) - TIME_TO_SEC(startwerkdagU) - pauzetijdU AS totaalurenU, TIME_TO_SEC(stopwerkdagU) - TIME_TO_SEC(startwerkdag) - pauzetijd AS totaaluren FROM `newRegister` $u $aP $pD $uF $sD";

        $export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );

        $fields = mysql_num_fields ( $export );

        for ( $i = 0; $i < $fields; $i++ )
        {
            $header .= mysql_field_name( $export , $i ) . "\t";
        }

        while( $row = mysql_fetch_row( $export ) )
        {
            $line = '';
            foreach( $row as $value )
            {                                            
                if ( ( !isset( $value ) ) || ( $value == "" ) )
                {
                    $value = "\t";
                }
                else
                {
                    $value = str_replace( '"' , '""' , $value );
                    $value = '"' . $value . '"' . "\t";
                }
                $line .= $value;
            }
            $data .= trim( $line ) . "\n";
        }
        $data = str_replace( "\r" , "" , $data );

        if ( $data == "" )
        {
            $data = "\n(0) Records Found!\n";                        
        }

        header("Content-type: application/octet-stream");
        header("Content-Disposition: attachment; filename=download  .xls");
        header("Pragma: no-cache");
        header("Expires: 0");
        print "$header\n$data";         
    };

}   

這不會產生任何錯誤。 它只是重新加載頁面。 所以我不知道為什么它不起作用。 感謝您的幫助。

部分解決方案

下面的代碼(您的代碼,僅帶有MySQL注釋以進行測試)可以正常工作。 我正在運行Apache / 2.4.9(Unix)PHP / 5.5.14

使下載工作正常的是當我放入<?php?>標記時。嘗試這段代碼,讓我知道它是否有效。

<?php
// DOWNLOAD TABEL
    print '<form method="POST"><button name=download>download</button></form>';

    if(isset($_POST["download"])){
        $select = "SELECT *, TIME_TO_SEC(stopwerkdagU) - TIME_TO_SEC(startwerkdagU) - pauzetijdU AS totaalurenU, TIME_TO_SEC(stopwerkdagU) - TIME_TO_SEC(startwerkdag) - pauzetijd AS totaaluren FROM `newRegister` $u $aP $pD $uF $sD";

/*        $export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );

        $fields = mysql_num_fields ( $export );

        for ( $i = 0; $i < $fields; $i++ )
        {
            $header .= mysql_field_name( $export , $i ) . "\t";
        }

        while( $row = mysql_fetch_row( $export ) )
        {
            $line = '';
            foreach( $row as $value )
            {   
                if ( ( !isset( $value ) ) || ( $value == "" ) )
                {
                    $value = "\t";
                }
                else
                {
                    $value = str_replace( '"' , '""' , $value );
                    $value = '"' . $value . '"' . "\t";
                }
                $line .= $value;
            }
            $data .= trim( $line ) . "\n";
        }
        $data = str_replace( "\r" , "" , $data );
*/

        if ( $data == "" )
        {
            $data = "\n(0) Records Found!\n";
        }

$header="abc,123";

        header("Content-type: application/octet-stream");
        header("Content-Disposition: attachment; filename=download  .xls");
        header("Pragma: no-cache");
        header("Expires: 0");
        echo "$header\n$data";
    };

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM