2011-04-14 202 views
0

请有以下链接访问:Demo link for problem笨:提交的表单不显示值

您可以查看表格没有显示提交的值,而不能上传文件。

以下是表单代码:

<form id="frm" name="frm" method="post" enctype="multipart/form-data"> 
      <fieldset class="fieldset2"> 

       <legend class="legend2">Add Bid Type</legend> 

       <div class="form_fields"> 

       <p> 
       <label for="subject" class="label2">Bid Type:</label> 
       <input type="input" id="type" name="type" class="textfield2" /> 
       </p> 

       <p> 
       <label for="subject" class="label2">Bid Type Code:</label> 
       <input type="input" id="code" name="code" class="textfield2" /> 
       </p> 


       <p> 
       <label for="description" class="label2">Bid Type Description:</label> 
       <textarea id="description" name="description" class="textarea2"></textarea> 
       </p> 




       <p> 
       <label for="userfile" class="label2">Icon:</label> 
       <input type="file" id="userfile" name="userfile" class="input_file" /> 
       </p> 


       </div> 

      </fieldset> 

      <fieldset class="none"> 
      <p> 
       <input type="submit" id="btnsubmit" name="btnsubmit" class="btn" value="Add" /> 
    <input type="reset" id="btnreset" name="btnreset" class="btn" value="Reset" /> 
      </p> 
      </fieldset> 
     </form>` 

而且下面是控制器代码:

function create() { 

     $data = ''; 


     echo '<pre>'; 
     echo 'below is Post Fields Data:<br>'; 
     print_r($this->input->post()); 
     echo '<br>Post Fields Data Ends: ';  

    echo '</pre>'; 



     $this->form_validation->set_rules('type', 'Bid Type', 'trim|required|xss_clean'); 
     $this->form_validation->set_rules('code', 'Bid Type Code', 'trim|xss_clean'); 

     $this->form_validation->set_rules('description', 'Bid Type description', 'trim|xss_clean'); 

     $data['errors'] = array(); 

     if ($this->form_validation->run()) { 
       $data = array(
        'code'   => $this->form_validation->set_value('code'), 
        'type'   => $this->form_validation->set_value('type'), 
        'description' => $this->form_validation->set_value('description'), 

       ); 

       if (!is_null($this->bid_types->create_bid_type($data))){ 
         $data['errors']['success'] = 'Record Successfully Added!'; 


       } else { 

        $errors = $this->bid_types->get_error_message(); 
        foreach ($errors as $k => $v) $data['errors'][$k] = $this->lang->line($v); 

       }  

     $config['upload_path'] = base_url().'resource/images/uploads/'; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     //$config['max_size'] = '100'; 
     //$config['max_width'] = '1024'; 
     //$config['max_height'] = '768'; 

    $this->load->library('upload', $config); 

    if (! $this->upload->do_upload()) 
    { 
     $data['errors']['upload'] = 'Not Uploaded'; 
     //$data['errors']['upload'] = $this->upload->display_errors(); 
     //$error = array('error' => $this->upload->display_errors()); 

     //$this->load->view('upload_form', $error); 
    } 
    else 
    { 
     $data['errors']['upload'] = 'Yes Uploaded'; 
     //$data['errors']['upload'] = $this->upload->data(); 
     //$data = array('upload_data' => $this->upload->data()); 

     //$this->load->view('upload_success', $data); 
    } 

    echo '<pre>';   
     print_r($this->upload->data()); 

    echo '</pre>'; 

     } /* END OF FORM VALIDATRION RUN */ 

     if(!$this->input->is_ajax_request() && !$this->input->get_post('is_ajax')) 
     { 
      $this->load->view('bend/bid_type/create', $data); 

     }        


} /* END OF FUNCTION CREATE */ 

有人可以指导我什么,在哪里荫做错了,如何可以rectrified。

回答

1

文件数据出现在$ _FILE而不是$ _POST中。

我觉得这条线是你的问题:

$config['upload_path'] = base_url().'resource/images/uploads/'; 

$config['upload_path']应指向文件系统路径,而不是URL。 尝试更多的东西一样:

$config['upload_path'] = realpath(APPPATH . '../resource/images/uploads/'); 

将从您的application文件夹启动,上一级文件夹,然后进入resource/images/uploads 改变其相应的如果别的地方。

p.s.同时检查你的写入权限。

+0

真正找到解决方案 – Simpanoz 2011-04-14 09:34:51

0

$this->output->enable_profiler(TRUE)create()函数的第一行,它会告诉你非常有用的信息$_POST global调试代码就像

+0

谢谢你的提示。你能指导我为什么没有上传文件,它不显示在PROFILER – Simpanoz 2011-04-14 09:08:10

0

Charles显示,从形式的请求提交确实包含POST数据。

Charles Output

是否其他任何可能擦拭POST数据的创建()函数之前发生的呢?

+0

PROFILER也显示POST数据。但是,文件上传字段有什么问题,它根本不起作用。 – Simpanoz 2011-04-14 09:13:43

0

我会添加一个action属性的形式使用echo form_open('/phpdemo/b1/admin/bid_type/create')the user manual所述。

0

不能使用

$this->form_validation->set_rules('code', 'Bid Type Code', 'trim|xss_clean'); 
在多

,所以你必须创建自己的功能验证和使用callbacks