<?php class search extends SCURD{ /*建構函式,初始化串連,與父類使用方法相同*/ function __construct($HOST,$DB_USER,$PASSWD,$DB){ parent::__construct($HOST,$DB_USER,$PASSWD,$DB); } /*解構函式,關閉串連*/ function __destruct(){ parent::__destruct(); } /** * 公有方法,搜尋字串並高亮文字,返回一個二維數組結果集 * @parameter $table(字串類型,必填),填寫所需查詢的表 * @parameter $fieldName(字串類型,必填),填寫所需搜尋的欄位名 * @parameter $strSearch(字串類型,必填),填寫所需搜尋的字串 * @parameter $hlColor(字串類型,可選),填寫高亮文字的顏色,預設為紅色 **/ function iSearch($table,$fieldName,$strSearch,$hlColor = 'red'){ $arrSearch = explode(' ',$strSearch); foreach($arrSearch as $value){ $conditions[] = "$fieldName LIKE '%$value%'"; } $condition = is_array($conditions) ? implode(' OR ',$conditions) : $conditons[0]; $arrStr = parent::r($table,array('*'),$condition); if($arrStr){ for($i = 0; $i < count($arrStr); $i++){ foreach($arrSearch as $key => $sValue){ $arrStr[$i][$fieldName] = $this->hlStr($arrSearch[$key],$arrStr[$i][$fieldName],$hlColor); } } } return $arrStr; } /** * 私人方法,高亮文字,返回高亮後的字串 * @parameter $needle(字串類型,必填),填寫所需尋找的字串 * @parameter $haystack(字串類型,必填),填寫被尋找的字串 * @parameter $color(字串類型,必填),填寫高亮文字的顏色 **/ private function hlStr($needle,$haystack,$color){ $str = str_ireplace("$needle","<font style='color:$color;'>$needle</font>",$haystack); return $str; } } //使用樣本 if(isset($_GET['txtSearch'])){ //判斷是否提交了表單 $str = $_GET['txtSearch']; //搜尋的字串賦值給$str $s = new search('localhost','root','','test'); //執行個體化一個search類 $results = $s->iSearch('test','message',$str); //把結果集賦值給$results if($results){ //判斷結果集是否為空白 foreach($results as $key => $value){ //遍曆結果集 echo '第' . ($key+1) . '條記錄:<br>'; echo 'ID:' . $value['id'] . ' ' . '姓名:' . $value['name']; echo '<br>留言:<br>' . $value['message'] . '<p>'; } } else{ echo '無記錄'; } } ?> <!--寫一個表單提交到本頁--> <form action="" method="get"> <input name="txtSearch" type="text" /> <input name="btnSearch" type="submit" value="搜尋" /> </form> 對於動態網頁 |