i building form codeigniter. have required fields in form , when required fields blank form goes same page. want when required field empty, prompt alert saying fields required. new programming finding difficult function. can 1 tell me how can this. thanks. fyi, other functionality of form fine.
part of controller:
function index() { $this->form_validation->set_rules('address', 'address', 'required'); $this->form_validation->set_rules('area', 'area', ''); $this->form_validation->set_rules('lat', 'latitude', 'required'); $this->form_validation->set_rules('lng', 'longitude', 'required'); $this->form_validation->set_rules('subject', 'subject', 'required'); $this->form_validation->set_rules('problem', 'problem detail', 'required'); // validation hasn't been passed if ($this->form_validation->run() == false) { $this->load->view('report_view',$data ); } else // passed validation proceed post success logic { ///do something..... } part of view:
<?php // change css classes suit needs $attributes = array('class' => '', 'id' => ''); echo form_open_multipart('report', $attributes); ?> <p> <br/> <label for="address">address <span class="required">*</span></label> <?php echo form_error('address'); ?> <br /> <input id="address" type="text" name="address" value="<?php echo set_value('address'); ?>" /> </p> <p> <label for="area">area </label> <?php echo form_error('area'); ?> <br /> <input id="area" type="text" name="area" value="<?php echo set_value('area'); ?>" /> </p> <p> <label for="lat">latitude<span class="required">*</span></label> <?php echo form_error('lat'); ?> <br /> <input id="lat" type="text" name="lat" value="<?php echo set_value('lat'); ?>" /> <p> <label for="lng">longitude<span class="required">*</span></label> <?php echo form_error('lng'); ?> <br /> <input id="lng" type="text" name="lng" value="<?php echo set_value('lng'); ?>" /> </p> <p> <label for="subject">subject:<span class="required">*</span></label> <?php echo form_error('subject'); ?> <br /> <input id="subject" type="text" name="subject" value="<?php echo set_value('subject'); ?>" /> </p> <p> <label for="problem">problem detail:<span class="required">*</span></label> <?php echo form_error('problem', '</div>'); ?> <br /> <textarea id="problem" style="width:300px; height:80px" type="text" name="problem"><?php echo set_value('problem'); ?> </textarea> </p> my model:
function saveform($form_data) { $this->db->insert('info', $form_data); if ($this->db->affected_rows() == '1') { return true; } return false; }
a tested example
your controller file:
<?php if ( ! defined('basepath')) exit('no direct script access allowed'); class welcome extends ci_controller { public function index() { $this->load->library('session'); $this->load->helper('url'); $this->load->library('form_validation'); if ($this->input->server('request_method') == 'post') { // make sure it's post request $this->form_validation->set_error_delimiters('', ''); $this->form_validation->set_rules('address', '<b>address</b>', 'required|xss_clean'); $this->form_validation->set_rules('area', '<b>area</b>', 'xss_clean'); $this->form_validation->set_rules('lat', '<b>lat</b>', 'required|xss_clean'); $this->form_validation->set_rules('lng', '<b>lng</b>', 'required|xss_clean'); $this->form_validation->set_rules('subject', '<b>subject</b>', 'required|xss_clean'); $this->form_validation->set_rules('problem', '<b>problem</b>', 'required|xss_clean'); if ($this->form_validation->run() !== false) { // validation has passed // insert form data database $this->db->insert('info', $form_data); // other stuff redirect('/index.php/success-page'); } else { $this->session->set_userdata($this->session->flashdata_key . ':old:error', 'we have form error. please review them!'); } } $this->load->view('welcome_message'); } } your view file:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>welcome codeigniter</title> <style type="text/css"> body { background-color: #fff; margin: 40px; font: 13px/20px normal helvetica, arial, sans-serif; color: #4f5155; } </style> </head> <body> <form method="post"> <?php if ($this->session->flashdata('error') != '') { ?> <?php echo $this->session->flashdata('error');?><br /> <?php } ?> <label>address</label> <input type="text" name="address" value="<?php echo set_value('address');?>" /><br /> <?php if (form_error('address')) { ?><?php echo form_error('address');?><br /><?php } ?> <label>area</label> <input type="text" name="area" value="<?php echo set_value('area');?>" /><br /> <?php if (form_error('area')) { ?><?php echo form_error('area');?><br /><?php } ?> <label>lat</label> <input type="text" name="lat" value="<?php echo set_value('lat');?>" /><br /> <?php if (form_error('lat')) { ?><?php echo form_error('lat');?><br /><?php } ?> <label>lng</label> <input type="text" name="lng" value="<?php echo set_value('lng');?>" /><br /> <?php if (form_error('lng')) { ?><?php echo form_error('lng');?><br /><?php } ?> <label>subject</label> <input type="text" name="subject" value="<?php echo set_value('subject');?>" /><br /> <?php if (form_error('subject')) { ?><?php echo form_error('subject');?><br /><?php } ?> <label>problem</label> <input type="text" name="problem" value="<?php echo set_value('problem');?>" /><br /> <?php if (form_error('problem')) { ?><?php echo form_error('problem');?><br /><?php } ?> <input type="submit" value="submit"> </form> </body> </html> notes:
* use $this->input->server('request_method') == 'post' make sure form validation runs on form submit
* if have form error don't show page or redirect, leave user on same page show errors
Comments
Post a Comment