簡體   English   中英

PHP 搜索引擎

[英]PHP Search Engine

我整理了一個非常復雜的搜索表單。 使用 arrays 我設法讓它通過復選框進行搜索。

if(isset($_POST['search']) && !empty($_POST['search'])){
foreach($_POST['search'] as $key=>$value){
    if($value==1) $search[] = "$key";
}
$searchstring = implode(' AND ', $search);

}

        $query = "SELECT candidate_id.master_id, candidate_contact_details.first_name, candidate_contact_details.last_name, candidate_contact_details.home_phone, candidate_contact_details.work_phone, candidate_contact_details.mobile_phone, candidate_contact_details.email FROM candidate_id, candidate_contact_details, qualifications, security_experience, previous_career WHERE qualifications.active = 'finished' and candidate_id.master_id = candidate_contact_details.c_id and candidate_id.master_id = qualifications.c_id and $searchstring";

我知道如何按特定術語搜索數據庫。 IE。 郵政編碼字段,但有人知道如何將其添加到此查詢中嗎? 我知道如何進行基於復選框的搜索或基於文本字段的搜索,但無法弄清楚如何將兩者結合起來。

再次感謝傑森

$query = "
SELECT 
    candidate_id.master_id, candidate_contact_details.first_name, candidate_contact_details.last_name, candidate_contact_details.home_phone, candidate_contact_details.work_phone, candidate_contact_details.mobile_phone, candidate_contact_details.email FROM candidate_id, candidate_contact_details, qualifications, security_experience, previous_career 
WHERE 
    (qualifications.active = 'finished' and candidate_id.master_id = candidate_contact_details.c_id and candidate_id.master_id = qualifications.c_id) and $searchstring";

另外,你不是想要“ OR ”而不是“ AND ”嗎?

據我了解您的問題,您需要將 map 表單字段的名稱轉換為數據庫列。 您可以設置一個數組,如:

$post_map = array(
    'home_phone' => 'candidate_contact_details.home_phone',
    'first_name' => 'candidate_contact_details.first_name',
    // etc.
  );

然后你可以在你的查詢中添加一些東西(只是一個未經測試的例子......):

foreach ($_POST as $key => $value)
{
  if (array_key_exists($key, $post_map))
  {
     $search[] = $post_map[$key] . '=' . mysql_real_escape_string($value);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM