php - Form validation difficulty -


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