專業鋁門窗、鍛造門設計及安裝 價格便宜、品質好、設計佳,值得您信賴 | 防水抓漏技術權威 防水抓漏修繕,技術精深,免費到府勘查估價! |
[問題]搜尋功能怎麼寫? |
房東:初學者 發表時間:2007-07-14 |
一般我是這樣寫我的搜尋功能 $query = "select distinct * from $table where $search_type like '%$keyword%' ORDER by id DESC LIMIT 可是如果要像雅虎那樣搜尋字中間有空格 搜尋 "網站 架設" 要像這樣的型態要怎麼寫?? 因為我的寫法如果有空格就沒辦法搜尋?? |
|
廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲 完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心! 廣利不動產-新板特區指名度最高、值得您信賴的好房仲 您的托付,廣利用心為您服務 |
1 樓住戶:老貓 發表時間:2007-07-14 |
$search = explode(' ','123 456'); $search_type = 'field'; $table = 'test'; $condition = ''; foreach($search as $v){ $condition .= "OR $search_type LIKE '$v'"; } $query = "select distinct * from $table where 1 $condition ORDER by id"; echo $query; 範例在這兒!先利用explode將字串切割為陣列,再利用foreach去做迴圈!產生LIKE的語法就可以了 |
2 樓住戶:初學者 發表時間:2007-07-15 |
我有個table其中一個欄位存放群組id: select field1 from table1 limit 2 : 'a001,a002,a003,a010,a015,a030' 'a003,a006,a007,a010,a020,a030' 如果有個人屬於二個群組, 要select 出資料, 變成要用 or select * from table1 where field1 like '%a001%' or field1 like '%a003%' |
3 樓住戶:達人 發表時間:2007-10-10 |
你可以寫個函式做token 像是你搜尋到的字串S="網站 架設" 你可以根據空白取出資料「網站」、「架設」等字眼,變成 arr[0] = "網站" arr[1] = "架設" ... arr[n] = XXX 最下後query的時候,就變成 where $search_type like '%$arr[0]%' and '%$arr[1]%' and ... and '%$arr[n]%' 或是 where $search_type like '%$arr[0]%' or '%$arr[1]%' or ... or '%$arr[n]%' |
4 樓住戶:貢丸 發表時間:2007-10-10 |
$input="網站 架設"; $search=explode (" ", $input); $keyword="select distinct * from $table where $search_type like "; foreach($search as $k=>$v){ $keyword.="'%$v%' or "; } $keyword=substr($keyword,0,strlen($keyword)-3); $keyword.="ORDER by id DESC"; echo $keyword; |
5 樓住戶:阿寶 發表時間:2007-10-10 |
這裡只提供給您概念,實作的部份您自己再想想看: 如果要按照您的想法來作的話,LIKE大概是不夠用了。 因此在這裡要用到REGEXP。 範例語法: SELECT ....... WHERE ...... REGEXP '[正規式]'; 所以您可以把搜尋的字串處理成一個正規式, 再丟進SQL指令處理, 至於該怎麼處理呢,我想這就是您該做的。 |
6 樓住戶:舞棍 發表時間:2007-12-21 |
$input="網站 架設"; $search=explode (' ',$input); $keyword="SELECT DISTINCT * FROM `$table` WHERE "; # $search_type 應該是欄位名稱沒錯吧? for($i=0;$i $WHERE[]="`$search_type` LIKE '%$search[$i]%'"; #說明: %指的是一以上的字元;要指定符合字元數量可以用?,例?abc?,表示1abc1可以符合搜尋條件,11abc1就不符合條件囉• } $keyword.=implode(' OR ',$WHERE); #將WHERE條件用 OR 結合起來,接在$keyword尾端 $keyword.=" ORDER by `id` DESC"; #將排序條件接在$keyword尾端 echo $keyword; |
7 樓住戶:小傑 發表時間:2008-03-02 |
$search = explode(' ','123 456'); $search_type = 'field'; $table = 'test'; $condition = ''; foreach($search as $v){ $condition .= "OR $search_type LIKE '$v'"; } $query = "select distinct * from $table where 1 $condition ORDER by id"; echo $query; 這樣@@? |
姓名: | |||
佈告內容: | |||
其他選項: | |||
|