#php #mysql #codeigniter
#php #mysql #codeigniter
Вопрос:
У меня есть две таблицы «cv» и «пользователи». Я хочу, чтобы моя форма поиска фильтровала базу данных, используя поле ‘first_name’ в users-table и поле ‘specialization’ в cv-table. Пожалуйста, помогите мне решить эту проблему, особенно в моей модели и представлении. Спасибо.
вот мой контроллер
function search_worker()
{
$data['query']=$this->kint_model->search_workers($this->input->post('search'));
$this->load->view('hire_display',$data);
}
Вот моя модель
function search_workers($search)
{
//get user details from users table
$this->db->select('*');
$this->db->from('cv');
$this->db->join('users', 'cv.profile_id = users.id');
$query = $this->db->get();
if($query->num_rows() > 0)
{
return $query->result();
}
//search for workers in hire_display view
$query = $this->db->get_where('cv', array('first_name '=> $search))->result();
//return $query for both queries
return $query;
}
мой взгляд на форму поиска
<?php echo form_open('kint/search_worker');
$data = array('first_name'=>'search', 'id'=>'search');
echo form_input($data);
$options = array('' => 'Select specialization', 'database' => 'database', 'webdesign'=> 'webdesign', 'networking' => 'networking');
echo form_dropdown('specialization', $options, $this->input-post('specialization'));
$data = array('name'=>'submit', 'id'=>'submit', 'value'=>'Search Workers');
echo form_submit($data);
?>
Ответ №1:
Я полагаю, что поле «first_name» находится в таблице «users», а поле «specialization» — в таблице «cv»
$search_first_name = trim($this->input->post('first_name'));
$search_specialization = trim($this->input->post('specialization'));
$where_condition = "u.first_name LIKE '%$search_first_name%' ";
if(!empty($search_specialization)){
$where_condition .= " OR c.specialization LIKE '%$search_specialization%' ";
}
$this->db->select('*');
$this->db->from("users u");
$this->db->join('cv c', 'u.id = c.profile_id');
$this->db->where($where_condition);
И ваше «представление» было бы
echo form_open('kint/search_worker');
echo form_input(array('name' => 'first_name', 'value' => set_value('first_name')));
$options = array('' => 'Select specialization', 'database' => 'database', 'webdesign'=> 'webdesign', 'networking' => 'networking');
echo form_dropdown('specialization', $options, set_value('specialization'));
</form>
Ответ №2:
Учитывая, что специализация в таблице cv и first_name в таблице Users
вы можете выполнить свой запрос подобным образом, а также получить имя по порядку в соответствии с вашими предпочтениями
if($this->input->post('search'))
{
$search = $this->input->post('search');
$this->db->select('*'); // mention your field names you want to fetch
$this->db->from("users u");
$this->db->join('cv c', 'u.id = c.profile_id');
$this->db->where("u.first_name LIKE '%$search%' OR c.specialization LIKE '%$search%'");
$this->db->order('u.first_name', 'asc'); // asc or desc
$query = $this->db->get();
}