JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
clean up my urls
[wfpl.git] / csv.php
diff --git a/csv.php b/csv.php
index f9e311a..9f2a0f2 100644 (file)
--- a/csv.php
+++ b/csv.php
@@ -1,10 +1,10 @@
 <?php
 
-# This file generates what Excell refers to as "CSV" files. This format makes
-# little sense, and does not actually have anything to do with commas.
+# These functions redutrn a csv download which is hopefully easy to import into
+# Excell and LibreOffice Calc
 
 # pass in a 2d array (array of rows) and it'll send it to the browser
-# I can't figure out how to get multi-line fields to work, so replace newlines with 4 spaces.
+# I can't figure out how to get multi-line fields to work, so this replaces newlines with 4 spaces.
 function array2d_to_csv_download($data, $filename) {
        header('Content-type: application/csv'); 
        header('Content-Disposition: attachment; filename=' . $filename); 
@@ -14,7 +14,7 @@ function array2d_to_csv_download($data, $filename) {
                        if($first) {
                                $first = false;
                        } else {
-                               echo "\t";
+                               echo ",";
                        }
                        echo '"' . str_replace("\n", "    ", str_replace('"', '""', $el)) . '"';
                }
@@ -22,3 +22,22 @@ function array2d_to_csv_download($data, $filename) {
        }
        exit();
 }
+
+# pass an array of associative arrays. keys from the first one will be used
+# see arary2d_to_csv_download above for more details
+function assocs_to_csv_download($data, $filename) {
+       if(count($data) < 1) {
+               $flats = array();
+       } else {
+               $flats = array(array_keys($data[0]));
+               $keys =& $flats[0];
+               foreach($data as $row) {
+                       $flat = array();
+                       foreach($keys as $k) {
+                               $flat[] = $row[$k];
+                       }
+                       $flats[] = $flat;
+               }
+       }
+       array2d_to_csv_download($flats, $filename);
+}