Just want to validate my codeigniter dropdown form before adding the selected country to database. The problem is that it inserts default value 'selectcountry' into db instead of showing the message "Please choose your country." Please help me :)
Here is My Model:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Model_example extends CI_Model {
function __construct()
{
//Call the Model constructor
parent::__construct();
}
public function did_add() {
$data = array(
'country' => $this->input->post('country')
);
$query = $this->db->insert('example_table', $data);
if ($query) {
return true;}
else {
return false;}
}
}
Here is My View:
$this->load->helper("form","file","html","url");
echo $message;
echo validation_errors();
echo form_open("example/add");
echo form_label("Country:<br>","country");
$data = array(
"selectcountry" => "Select Country",
"CA" => "Canada",
"US" => "United States",
"ZW" => "Zimbabwe"
);
echo form_dropdown('country', $data, 'selectcountry');
echo br(1);
echo form_submit("Submit", "Add");
echo form_close();
Here is My controller:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Example extends MX_Controller {
public function index() {
$data["message"] = "";
$this->load->view("view_example",$data);
}
public function add() {
$this->load->library('form_validation');
$this->load->model('model_example');
$this->form_validation->set_rules('country', 'Country', 'required|callback_country_check');
if($this->form_validation->run()){
$this->model_example->did_add();
}
else {
$data["message"] = "";
$this->load->view("view_example",$data);
}
}
public function country_check()
{
if ($this->input->post('country') === 'selectcountry') {
$this->form_validation->set_message('country_check', 'Please choose your country.');
return FALSE;
}
else {
return TRUE;
}
}
}