Professional CodeIgniter, Thomas Myer
Chapter 6: Creating a Dashboard
175
In this case, you only have to create one new MProducts function, one called
updateProduct()
. It is
very much like the
addProduct()
function except that it performs a SQL update instead of a SQL insert.
function updateProduct(){
$data = array(
`name' =
>
$_POST[`name'],
`shortdesc' =
>
$_POST[`shortdesc'],
`longdesc' =
>
$_POST[`longdesc'],
`status' =
>
$_POST[`status'],
`grouping' =
>
$_POST[`grouping'],
`category_id' =
>
$_POST[`category_id'],
`featured' =
>
$_POST[`featured'],
`price' =
>
$_POST[`price']
);
$config[`upload_path'] = `./images/';
$config[`allowed_types'] = `gif|jpg|png';
$config[`max_size'] = `200';
$config[`remove_spaces'] = true;
$config[`overwrite'] = false;
$config[`max_width'] = `0';
$config[`max_height'] = `0';
$this-
>
load-
>
library(`upload', $config);
if(!$this-
>
upload-
>
do_upload(`image')){
$this-
>
upload-
>
display_errors();
exit();
}
$image = $this-
>
upload-
>
data();
if ($image[`file_name']){
$data[`image'] = "/images/".$image[`file_name'];
}
if(!$this-
>
upload-
>
do_upload(`thumbnail')){
$this-
>
upload-
>
display_errors();
exit();
}
$thumb = $this-
>
upload-
>
data();
if ($thumb[`file_name']){
$data[`thumbnail'] = "/images/".$thumb[`file_name'];
}
$this-
>
db-
>
where(`id', $_POST[`id']);
$this-
>
db-
>
update(`products', $data);
}
Again, please make sure that the folder designated by upload_path is writable!
Finally, here ' s the admin_product_edit view, which in many regards is the same form as admin_product_
create, except it posts to a different controller function (admin/products/edit), contains a hidden field
with the product ID (needed by the
create, except it posts to a different controller function (admin/products/edit), contains a hidden field
with the product ID (needed by the
updateProduct()
function!), and loads values from the database
for that particular product into the form fields.
c06.indd 175
c06.indd 175
6/10/08 5:36:06 PM
6/10/08 5:36:06 PM