【问题标题】:Incorrect field order in exported CSV table导出的 CSV 表中的字段顺序不正确
【发布时间】:2016-11-29 19:10:42
【问题描述】:

我有一个 php 导出文件,它工作正常,可以根据需要导出数据,但是在导出的 CSV 文件表字段中不正确,如下图所示:

php代码为:

<?php
session_start();
?>
<?php
header('Content-Disposition: attachment; filename="befizetesek.csv"');
    $hostname = "localhost";
    $dbusername = "username";
    $dbname = "dbname";
    $dbpassword = "password";

$dbhandle = ($GLOBALS["___mysqli_ston"] = mysqli_connect($hostname,  $dbusername,  $dbpassword)) 
  or die("Nem sikerült kapcsolódni az adatbázishoz");

$selected = ((bool)mysqli_query($dbhandle, "USE " . $dbname)) 
  or die("Nincs kiválasztva adatbázis tábla");

$query ="SELECT
   VU.first_name AS 'Befizeto neve',
   VU.email AS 'Befizeto tagkodja',
   VI.order_item_name AS 'Befizetett idoszak',
   VO.order_total AS 'Befizetett osszeg',
   VO.created_on AS 'Befizetes datuma',
   VO.order_number AS 'Befizeto azonosito'  
FROM
   m1uzl_virtuemart_orders VO INNER JOIN
   m1uzl_virtuemart_order_items VI ON
       VO.virtuemart_order_id = VI.virtuemart_order_id INNER JOIN
   m1uzl_virtuemart_order_userinfos VU ON
       VI.virtuemart_order_id = VU.virtuemart_order_id
WHERE
    VO.order_status='C' AND
    (VO.created_on >= STR_TO_DATE ('" . $_SESSION["tol"] .  "', '%Y-%m-%d') 
AND VO.created_on <=  STR_TO_DATE ('" . $_SESSION["ig"] .  "', '%Y-%m-%d'))";

$export = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die ( "Sql error : " . ((is_object( )) ? mysqli_error( ) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) );

$fields = (($___mysqli_tmp = mysqli_num_fields( $export )) ? $___mysqli_tmp : false);

for ( $i = 0; $i < $fields; $i++ )
{

    $header .= ((($___mysqli_tmp = mysqli_fetch_field_direct( $export ,  $i )->name) && (!is_null($___mysqli_tmp))) ? $___mysqli_tmp : false) .";" ;
}

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

if ( $data == "" )
{
    $data = "\n(0) Nincs találat!\n";                        
}

header("Content-type: application/octet-stream");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
?>

我认为这只是一个平庸的指责,但我看不到.....请帮助任何人。

【问题讨论】:

  • 为什么要重新实现所有代码以正确导出 csv?有一个函数可以处理正确的转义,你完全忽略了。

标签: php csv export-to-csv


【解决方案1】:

感谢您的关注。我找到了解决方案。问题是这一行的逆序:

$value = ';' . $value ;

这个不错:

$value = $value . ';' ;

最好的问候!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多