使用PHP将csv文件保存到目录但没有表单

时间:2014-05-29 09:29:41

标签: php csv save fwrite

我正在尝试创建一些代码,允许我保存一个csv文件,这是在php页面上创建的,而不是打开它(就像当前那样)我理想情况下会自动将其保存到我的目录中的文件夹。我已经环顾四周并找到了fwrite,但我不能100%确定这是否是我需要的。我应该注意到我使用的代码是在一个while循环中,所以它可以多次点击$ line部分。文件名和fd部分在循环之外。

(在循环之外)

$filename = "Product_category_list".date("j-m-Y_H.i"). ".csv";  

                $fd = fopen ($filename, "w");

                //The below is in a while loop

                                            $line = $separator . $sku_product . $separator . $delim; // Product SKU

                                            $line .= $separator . $sku . $separator . $delim; // SKU

                                            $line .= $separator . $category_lists . $separator . $delim; // Category Path

                                            $line .= $separator . $product_name . $separator . $delim; // Product Name

                                            $line .= $separator . $product_description . $separator . $delim; // Product Description

                                            $line .= $separator . $image_link. $separator . $delim; // Full Image

                                            $line .= $separator . $image_link_thumb. $separator . $delim; // Thumb Image

                                            $line .= $separator . $rrp_manual . $separator . $delim; // RRP

                                            $line .= $separator . $uk_wholesale . $separator . $delim; // Cost Price / Wholesale Price

                                            $line .= $separator . "GBP" . $separator . $delim; // Currency

                                            $line .= $separator . $tax_id . $separator . $delim; // Tax ID

                                            $line .= $separator . $discount . $separator . $delim; // Discount

                                            $line .= $separator . " " . $separator . $delim; // Discount End

                                            $line .= $separator . "1000" . $separator . $delim; // Product In Stock

                                            $line .= $separator . " " . $separator . $delim; // Product Special

                                            $line .= $separator . $delivery_front_text . $separator . $delim; // Product Availability

                                            $line .= $separator . "Y" . $separator . $delim; // Product Published


                                            $line .= $separator . $attribute_list . $separator . $delim; // Product Attribute

                                            $line .= $separator . $custom_attribute . $separator . $delim; // Custom Attribute - Could just be Please Enter your Personalisation Details Below (Only if Embroided Name or printed Initial)

                                            //$line .= $separator . " " . $separator . $delim; // Kitlocker Attribute - Size Guides

                                        //  $line .= $separator . " " . $separator . $delim; // Related Products

                                            //$line .= $separator . " " . $separator . $delim; // Alternative Products

                                        //  $line .= $separator . " " . $separator . $delim; // Colour Products

                                            $line .= $separator . $manu . $separator . $delim; // Manufacturer Name





                                            $contents .= $line . "\n";


    (outside of the loop)

    fputs($fd, $contents);

    fclose($fd);

2 个答案:

答案 0 :(得分:0)

您可以直接运行

while($condition){
    fwrite($fd, $data . ";\n");
}

在您的循环中,而不是将其全部分配给$line(如果是大文件,您可能会内存不足)或者您坚持将所有数据分配到$line首先,然后移除fopenfputs行,并在循环运行后file_put_contents($filename, $contents);

答案 1 :(得分:0)

我最后一次做这样的事情时,我使用了Headers。

Header("Content-type: application/csv");
Header("Content-disposition: attachment; 'Product_category_list'.date('j-m-Y_H.i').'.csv\'");

这会将PHP代码的结果保存为CSV文件。您可以调整浏览器的设置以自动将其保存到指定位置。