項目結構:
開始搜索: 這裡搜索關鍵字("大""這")
搜索結果: 高亮顯示
項目所需數據庫結構:
================================================================
實現代碼:
================================================================
conn.php
1 <?php 2 $conn = @ mysql_connect("localhost", "root", "") or die("數據庫鏈接錯誤"); 3 mysql_select_db("form", $conn); 4 mysql_query("set names 'gbk'"); 5 ?>
searchAndDisplayWithColor.php
1 <?php 2 include 'conn.php'; 3 ?> 4 5 <table width=500 align="center"> 6 <form action="" method="get"> 7 <tr> 8 <td>關鍵字:<input type="text" name="keyWord" /> 9 <input type="submit" value="搜索" /></td> 10 </tr> 11 </form> 12 </table> 13 14 <table width=500 border="0" align="center" cellpadding="5" 15 cellspacing="1" bgcolor="#add3ef"> 16 <?php 17 //關鍵字不為空的時候才執行相關搜索 18 if($_GET['keyWord']){ 19 //用空格符把關鍵字分割開 20 $key=explode(' ', $_GET[keyWord]); 21 $sql="select * from message where title like '$key[0]' or title like '$key[1]' or content like '$key[0]' or content like '%$key[1]%'"; 22 $query=mysql_query($sql); 23 while ($row=mysql_fetch_array($query)){ 24 //替換關鍵字,並且把關鍵字高亮顯示 25 $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[title]); 26 $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[1]</b></font>", $row[title]); 27 $row[content]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[content]); 28 $row[content]=preg_replace("/$key[1]/i", "<font color=red><b>$key[1]</b></font>", $row[content]); 29 ?> 30 31 <tr bgcolor="#eff3ff"> 32 <td>標題:<font color="black"><?=$row[title]?></font> 用戶:<font color="black"><?=$row[user] ?></font> 33 <div align="right"><a href="preEdit.php?id=<?=$row[id]?>">編輯</a> | <a 34 href="delete.php?id=<?=$row[id]?>">刪除</a></div> 35 </td> 36 </tr> 37 <tr bgColor="#ffffff"> 38 <td>內容:<?=$row[content]?></td> 39 </tr> 40 <tr bgColor="#ffffff"> 41 <td> 42 <div align="right">發表日期:<?=$row[lastdate]?></div> 43 </td> 44 </tr> 45 <?php } 46 } 47 ?> 48 </table>
說明:在這個小程序中,有一點不足之處在於,只能同時搜索兩個關鍵字,並且中間用空格" "隔開,如果只是搜索一個關鍵字,如:"大"
顯示的時候會出現亂碼 ……^|_|^,這是由於下面代碼的結果:
1 //用空格符把關鍵字分割開 2 $key=explode(' ', $_GET[keyWord]);
如果要改進的話,在這裡的後面就要做一下判斷了。