私は両方のタイプのフィールドがあるフォームを持っています。つまり、入力テキスト、ラジオ、選択、テキストエリア、およびファイルアップロードフィールドを意味します。
挿入と編集に同じフォームを使用しています。
私の問題は、ファイルをアップロードしてデータをテーブルに挿入する必要があることです。
コントローラ機能
function myUploadwithInsert(){
if($category = $this->input->post())
{
$this->load->library('form_validation');
if(!$this->imageUpload()){
$error = array('error' => $this->upload->display_errors());
$this->load->view('my_view', $error);
}else{
$this->form_validation->set_rules('name', 'Category Title', 'trim|required');
if ($this->form_validation->run() == TRUE)
{
if ($id = $this->categories_model->create($category))
{
redirect('admin/categories');
}
}else{
$this->load->view('my_view');
}
}
}else{
$this->load->view('my_view');
}
}
public function uploadImage()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
return false;
}
else
{
$data = $this->upload->data();
return $data;
}
}
ここで問題となるのは、画像がアップロードされ、フォーム入力エラーフォームが再度表示される場合、ユーザーがフォームフィールドを修正し、画像フィールドに再度入力することです。その後、画像が再度アップロードされます。
最初に入力条件を定義してからアップロードすると、同じ問題が発生します。どうすればこの問題を解決できますか?このタスクを実行する他の方法はありますか?