Professional CodeIgniter, Thomas Myer
Chapter 7: Improving the Dashboard
197
Please note that the SQL query is now pulling from the Products table.
Here ' s the controller function
export()
in admin/products:
function export(){
$this-
>
load-
>
helper(`download');
$csv = $this-
>
MProducts-
>
exportCsv();
$name = "product_export.csv";
force_download($name,$csv);
}
Again, all you ' re doing is calling the model function and then piping that data into
force_download()
.
Finally, here ' s the link inserted into the admin_products_home view:
<
p
>
<
?php echo anchor("admin/products/create", "Create new product");?
>
|
<
?php echo
anchor("admin/products/export","Export");?
>
<
/p
>
Go ahead and give the Export link a test. You should see a download dialog box appear, and it should
feature " product_export.csv " as the filename, as shown in Figure 7 - 5 .
Figure 7-5
Importing a CSV Import Library for Products
As hinted at above, building an import function takes a lot more work than just exporting. Why is that?
Well, the short answer is that you are accepting data from a user, and users can make mistakes. They might
not line up their data columns right. Or they might not give you the kind of data you ' re expecting -- for
example, you may be expecting a
category_id
field, but they give you the name of a category.
There ' s enough complexity in this kind of application that you may be sorely tempted to find a third -
party CSV import tool and add it to your libraries and helpers. In point of fact, a class called CSVReader
can be found in the CodeIgniter wiki area, and you ' re going to use the basic functionality provided by
this class to facilitate your efforts. CSVReader was authored by Pierre Jean Turpeau and is available at
party CSV import tool and add it to your libraries and helpers. In point of fact, a class called CSVReader
can be found in the CodeIgniter wiki area, and you ' re going to use the basic functionality provided by
this class to facilitate your efforts. CSVReader was authored by Pierre Jean Turpeau and is available at
c07.indd 197
c07.indd 197
6/10/08 5:36:39 PM
6/10/08 5:36:39 PM