15

CSV ファイルのダウンロードを強制するボタンを作成しようとしていますが、何らかの理由で機能させることができません。これは私が持っているコードです:

public function export_to_csv($result) {

$shtml="";

for ($i=0; $i<count($result); $i++){

$shtml = $shtml.$result[$i]["order_number"]. "," .$result[$i]["first_name"]. "," .$result[$i]["middle_name"]. "," .$result[$i]["last_name"]. "," .$result[$i]["email"]. "," .$result[$i]["shipment_name"]. "," .$result[$i]["payment_name"]. "," .$result[$i]["created_on"]. "," .$result[$i]["modified_on"]. "," .$result[$i]["order_status"]. "," .$result[$i]["order_total"]. "," .$result[$i]["virtuemart_order_id"]. "\n";

}

Header('Content-Description: File Transfer');
Header('Content-Type: application/force-download');
Header('Content-Disposition: attachment; filename=pedidos.csv');

}

$result 変数は次のようになります。

public function get_orders_k() {

$db=JFactory::getDBO();

    $query = " select o.order_number, o.virtuemart_order_id, o.order_total, o.order_status, o.created_on, o.modified_on, u.first_name,u.middle_name,u.last_name "
    .',u.email, pm.payment_name, vsxlang.shipment_name ' .
    $from = $this->getOrdersListQuery();

$db->setQuery($query);

$result=$db->loadAssocList();

    if ( $result > 0 )
    {
        $datos = VirtueMartModelKiala::export_to_csv($result);

    }else return 0;
}

どこから探し始めればいいのかわからない。これを行うさまざまな方法についてインターネットを調べ、それらすべてを試しましたが、まだ機能させることができません。私を助けてください!

-ありがとう

4

3 に答える 3

40

このコードをループの下に配置します。

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="pedidos.csv"');

echo $shtml;

コンテンツ タイプが application/force-download であることはどのようにしてわかりましたか? そのようなことを聞​​いたのは初めてだ。CSV の適切な MIME タイプはtext/csvです

PHPマニュアルでヘッダー関数の使用方法の例をさらに見つけることができます

$shtmlコードで実行しなかったことも表示する必要があります。

于 2013-06-24T06:55:45.053 に答える
3

echoヘッダーの後にコンテンツが必要です

header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename=pedidos.csv');
echo $shtml
于 2013-06-24T06:54:36.580 に答える