Codeigniter: Submitted form is not showing values
Kindly have a visit on following link: Demo link for problem
You can view that form is not showing submitted values and not uploading file.
Following is form code :
<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>
<i开发者_运维百科nput 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>`
And following is controller code :
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 */
Can some one guide me what and where Iam doing wrong and how it can be rectrified.
File data appears in $_FILE not in $_POST.
I think this line is your problem:
$config['upload_path'] = base_url().'resource/images/uploads/';
This $config['upload_path']
should point to a file system path, not a URL.
Try something more like:
$config['upload_path'] = realpath(APPPATH . '../resource/images/uploads/');
which will start from your application
folder, up one folder then into resource/images/uploads
change it accordingly if its somewhere else.
p.s. Also check your write permissions.
put $this->output->enable_profiler(TRUE)
on the first line of create()
function, it will show you very usefull information $_POST global
to debug your code like
Charles shows that the request from the form submit does contain the post data.
Does anything else happen before the create() function that could wipe the POST data?
I would add an action
attribute to the form using echo form_open('/phpdemo/b1/admin/bid_type/create')
as described in the user manual.
you can not use
$this->form_validation->set_rules('code', 'Bid Type Code', 'trim|xss_clean');
in multipart , so you must create your own function for validation and use callbacks
精彩评论