PHP CSV ihracat fonksiyonu

2 Cevap php

Ben birden fazla CSV dosyalarını benim MySQL veritabanı veri vermek ve sonra bunları GZIP çalışıyorum.

Ben karmaşık bir CSV dosyasına ihracat yapmak sorunları bir çift var ...

  1. Çeşitli alanlar (10) 1 CSV dosyasında olması gerekir
  2. Diğer alanlar (multiple!) tefrika olduğunu ve CSV dosyasına dahil olmayan diğer iki tefrika alanları ile farklı bir CSV dosyası olarak ihraç edilmesi gerekiyor.

Ne yapmak istediğinizi bir gzip dosyasında oluşturulan tüm bu CSV dosyaları olduğunu ... İşte ben bugüne kadar ne var! Kullanıcının, vermek istediğiniz dosya ile farklı onay kutularını kontrol eder bunu ne olur. Sonra onun her dosya farklı bir SELECT sorgusu ve alan adları olan bu dosyaya geçti. Ben bile henüz seri hale getirilmiş verileri ile uğraşmak başlamış değil ... Ben bunu yapmak için gidiyorum nasıl hiçbir fikrim yok. Daha sonra CSV dosyasını verir ve ben bunu yapabilirim bile bilmiyorum ... bir gzip ihraç bekleyen bir diziye bu dosyayı yerleştirin.

Herhangi bir öneri veya bir yardım büyük mutluluk duyacağız!

$files = array();

if(in_array("general", $_POST['exportid'])){
 $files[] = CSVoutput("SELECT timestamp, id, monday, tuesday, wednesday, thursday, friday, saturday, sunday, records, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24 FROM hourly", array(timestamp, id, monday, tuesday, wednesday, thursday, friday, saturday, sunday, records, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24));
}

function CSVoutput($query, $fields){ 
 $rsSearchResults = mysql_query($query) or die(mysql_error());

 $out = '';
 $columns = count($fields);

 // Put the name of all fields
 for ($i = 0; $i < $columns; $i++) {
 $l= $fields[$i];
 $out .= '"'.$l.'",';
 }
 $out .="\n";

 // Add all values in the table
 while ($l = mysql_fetch_array($rsSearchResults)) {
 for ($i = 0; $i < $columns; $i++) {
 $out .='"'.$l["$i"].'",';
 }
 $out .="\n";
 }
 return $out;
 }
exit; 

2 Cevap

Fputcsv () işlevi göz atın. Ne var daha iyi kaçan / tırnak idare edecek.

res = query_result
row = fetch array from res

handle/remove serialized columns in row
fputcsv(row array keys)
fputcsv(row values)

while(row = fetch from res)
    handle/remove serialized columns in row
    fputcsv(row values)

Bunu bu şekilde yapmak için bir sebep olabilir, ama ben sadece SELECT ... INTO OUTFILE bir csv dosyasına select sonucunu ihracat olduğunu belirtmek istedim.

Ayrıca böylece alanları sınırlandırılmış nasıl belirleyebilirsiniz ve. Yani bunu bir denemek isteyebilirsiniz.

Also see this page(scroll down to SELECT INTO OUTFILE) http://dev.mysql.com/doc/refman/5.1/en/select.html

Bunu yapmak gerekiyorsa sonra el benim yorum, lütfen dikkate almayın.