2011-11-06 27 views
0

我無法在查詢中突出顯示搜索詞。如果用戶搜索「耶穌」,所有包含「耶穌」的詩句將被列出並分頁。我想在所有這些段落中突出顯示搜索查詢。突出顯示查詢中的搜索項?

比方說,我搜索「耶穌」,並有10節經文彈出,我希望每個頁面上的耶穌的所有實例都被突出顯示。

我的PHP代碼:

指數:http://pastebin.com/vTdy79er
聖經數據庫:http://www.mediafire.com/?00x4fnbn1vr4nch

我不知道如何去這樣做。

我爲我的查詢select語句:

$searchResult = $dbLink->prepare("SELECT bsect, bname, bnum, cnum, vnum, vtext,            MATCH (bname, vtext) 
AGAINST ('$searchQuery' IN BOOLEAN MODE) 
AS  relevance 
FROM  kjv 
WHERE MATCH (bname, vtext) 
AGAINST ('$searchQuery' IN BOOLEAN MODE) 
ORDER BY relevance 
DESC 
$limit"); 

,實際上顯示我的結果(聖經名章號代碼:詩句號碼,然後詩歌文本:

while ($searchResult->fetch()) 
{ 
print ("<span class=\"results title\">$bname $cnum:$vnum</span>"); 
print ("<p class=\"passage\">$vtext</p>"); 
} 
+3

減少你的代碼示例相關的子集。我們不會閱讀那段代碼來告訴你如何做到這一點。顯示你迄今爲止的嘗試,並且我們可以幫助解決這個問題。 –

+0

這只是一堆select語句和循環,沒有什麼真正相關的。它從數據庫中取得幾個字段並顯示它們。 – eveo

回答

1

我相信你已經做在這裏:

$output = str_replace($_GET[phrase],"<font color=red>" . $_GET[phrase] . "</font>",$output); 

即使我會建議改變這樣的代碼:

$output = str_replace($_GET['phrase'],'<font color="red">'.$_GET['phrase'].'</font>',$output); 

,甚至更好,使用<span>標籤和類,然後分配給所有你想要的那類CSS和使之更容易在未來

編輯更改/ ADD

與您最新的消息,這是你必須做什麼(如果我正確地理解你的代碼)

print ("<p class=\"passage\">$vtext</p>"); 

CH它安格到(假設$searchQuery是包含被搜索

echo '<p class="passage">'.(str_replace($searchQuery, '<font color="red">'.$searchQuery.'</font>', $vtext).'</p>'; 

我也喜歡比照片具有更好的反響,字符串變量,但是是個人喜好。當然,你想避免"和儘可能使用',因爲它會加快PHP的速度,因爲引擎不必分析整個字符串以找到變量。但是,個人偏好

+0

我其實只是複製粘貼從另一個網站,不知道我在做什麼大聲笑。 – eveo

0

試試這個。

jQuery SearchHighlight插件。演示和實施提供。

+0

這看起來不錯,很快就會出手。 – eveo

0

我不敢看你的代碼,但這樣的事情應該工作:

echo str_replace($searchWord, '<span class="highlight">' . $searchWord . '</span>', $row['verse']); 
相關問題