1

桌子

My table(posts){id, title, post, date_added, userID, active, urlfile}

在这里,我想用我的这个控制器和模型上传一个带有视图的文件,它必须将该文件名插入到 urlfile 并将其上传到(/uploads/)。如果我只插入文本并删除上传部分,我的控制器工作正常,但它不工作

控制器代码:

function new_post() {

        $data['errors'] = 0;
        if ($_POST) {

            $config = array( array('field' => 'title', 'rules' => 'trim|requird'), array('field' => 'post', 'rules' => 'trim|required'));
            $this -> load -> library('form_validation');
            $this -> form_validation -> set_rules($config);
            if ($this -> form_validation -> run() == false) {
                $data['errors'] = validation_errors();
            }
            $data = array('title' => $_POST['title'], 'post' => $_POST['post'], 'active' => $_POST['active']);
            $config['upload_path'] = './uploads/';
            $config['allowed_types'] = 'gif|jpg|png';
            $config['max_size'] = '100';
            $config['max_width'] = '1024';
            $config['max_height'] = '768';
            $this -> load -> library('upload', $config);
            $this -> upload -> do_upload();
            $data = array('upload_data' => $this->upload->data());
            $this -> post_m -> insert_post($data);
            redirect(base_url() . 'posts/index_admin');
        } else {

            $this -> load -> view('admin/post_new', $data);

        }

    }

查看代码

最新帖子:

<?php if ($errors){ ?>
    <?php echo $errors ?>
<?php } ?>
<form action="<?php echo base_url()?>posts/new_post" method="post">
<p><?php echo form_textarea('title'); ?></p>
<p><?php echo form_textarea('post'); ?></p>
<input type="file" name="userfile" size="20" />
<p>Status: <select name="active">
            <option value="1">Active</<option>
            <option value="0">Un Active</<option>
            </select>

</p>
<p><input type="submit" value="add post" /></p>
</form>

型号代码:

function insert_post($data){
        $this->db->insert('posts', $data);
        return $this->db->insert_id();
    }
4

1 回答 1

0
  1. 尝试对 form_validation 和上传库使用不同的 $config 数组。

  2. $data = array('upload_data' => $this->upload->data()); 在这一行中,您将完全删除行中已分配的数组( $data = array('title' => $_POST['title'], 'post' => $_POST['post'], 'active' => $_POST['active']); )。所以标题、帖子、活动值不会转到模型中的 insert_post。

  3. 将 $this->upload->data() 分配给单独的数组变量,并仅使用文件名索引来获取上传的文件名并分配给 $data['urlfile'] (检查 $this->upload-> 的返回数组的结构数据())。

  4. date_added,$data 数组中缺少用户 ID 列。

  5. $数据['错误'] = 0; 表中没有错误列,因此使用单独的变量来跟踪错误。

于 2013-05-25T19:34:28.680 回答