gpt4 book ai didi

php - 在 codeigniter 中使用两个输入字段进行搜索

转载 作者:行者123 更新时间:2023-11-29 00:32:11 25 4
gpt4 key购买 nike

我有一个搜索表单可以在我的数据库中搜索工厂。现在,当您第一次访问该站点时,我的工厂表有一个名为“邮政编码”的字段,您必须输入邮政编码。这将保存在 cookie 中,因此您无需再次更改。

现在我想使用搜索词和 cookie“邮政编码”搜索工厂

这是我的搜索表单 http://kees.een-site-bouwen.nl/

所以像这样:

<form action="home/searchresults" method="post">
<input type="search" placeholder="search..." name="search">
<input type="search" value="<?= $this->input->cookie('postcode')?>">
</form>

在我的 Controller 中是这样的:

$match = $this->input->post('search');
$match2 = $this->input->cookie('postcode');

$data['query'] = $this->bedrijven_model->get_search($match, $match2);
$this->load->view('views/header');
$this->load->view('views/searchresults', $data);
$this->load->view('views/footer');

在我的模型中我有:

function get_search($match)
{
$this->db->like('Bedrijfsnaam', $match);
$this->db->or_like('Postcode', $match);
$this->db->or_like('Plaats', $match);
$this->db->or_like('Telefoonnummer', $match);
$this->db->or_like('Email', $match);
$this->db->or_like('Website', $match);
$this->db->or_like('Profiel', $match);
$this->db->or_like('Adres', $match);
$this->db->or_like('Categorie', $match);

$this->db->join('bedrijven', 'bedrijfcategorieen.idbedrijven = bedrijven.idbedrijven');
$this->db->join('categorieen', 'bedrijfcategorieen.idcategorieen = categorieen.idcategorieen');
$this->db->group_by('bedrijfcategorieen.idbedrijven', 'bedrijfcategorieen.idcategorieen');

$query = $this->db->get('bedrijfcategorieen');

return $query->result();
}

但这行不通。我在这里问了一个类似的问题:Prevent overriding queries in controller function - codeigniter

但没有对我有用的答案。

最佳答案

您为 $this->bedrijven_model->get_search($match, $match2); 提供了 2 个参数, 但随后仅在函数本身中提供一个:get_search($match) .所以:

function get_search($match, $match2 = false)
{
$this->db->like('Bedrijfsnaam', $match);
$this->db->or_like('Postcode', $match);
//etc
if($match2){
$this->db->where('Postcode', $match2);
}
}

...应该可以吗?

已更新

在聊天中,很明显最好不要使用事件记录,因为它是一个有点复杂的查询。相反,我提供了这个原始 SQL:

$query = "SELECT * FROM (`bedrijfcategorieen`)
JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven`
JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen`
WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%'
OR `Plaats` LIKE '%".$this->input->post('search')."%'
OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%'
OR `Email` LIKE '%".$this->input->post('search')."%'
OR `Website` LIKE '%".$this->input->post('search')."%'
OR `Profiel` LIKE '%".$this->input->post('search')."%'
OR `Adres` LIKE '%".$this->input->post('search')."%'
OR `Categorie` LIKE '%".$this->input->post('search')."%')
AND (`Postcode` = `".$this->input->post('cookie')."`)
GROUP BY `bedrijfcategorieen`.`idbedrijven`";

...用这个位来检索结果集:

$result = $this->db->query($query);

$this->input->post('search')$this->input->post('cookie')可以替换为$match$match2在上面的sql中。我还建议为 cookie 设置一个默认值,因为它可以被用户从输入字段中删除;类似

$match2 = $this->input->post('cookie') ? $this->input->post('cookie') : 'default';

关于php - 在 codeigniter 中使用两个输入字段进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com