pages
サイトの Web ページの ID、URL アドレス、タイトル、およびコンテンツを格納するというテーブルがあります。テーブルの例を次に示します。
ID | address | title | content |
------------------------------------------------------------------------------------
1 | www.example.com/page1 | Page 1 | The quick dog jumps over the lazy dog. |
2 | www.example.com/page2 | Page 2 | The best thing about morning is breakfast. |
3 | www.example.com/page3 | Page 3 | Hotdogs are great ballpark food. |
SELECT
クエリ用語のすべての出現を確認し、PHP
. たとえば、「dog」という単語の検索結果を表示したい場合、SELECT
ステートメントは次のようになります。
SELECT * FROM pages WHERE (`content` LIKE '%dog%')
検索用語 = を含む私の完全なPHP
ステートメントは$query
次のようになります。
if ($result = $mysqli->query("SELECT * FROM pages WHERE (`content` LIKE '%".$query."%')")) {
// if one or more rows are returned do following
while($results = $result->fetch_array(MYSQLI_ASSOC)){
// $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop
$content = $results['content'];
$contentItems = $results['contentSearch'];
// Count number of times term in content
$count = substr_count($contentItems, $originalQuery);
$content = substr($content,strpos($content,$firstTerm)-25,160);
$content = (strlen($content) > 55 ? '...'.$content.'...' : substr($results['description'],0,160).'...');
foreach($querySplit as $term){
$content = str_ireplace($term, '<strong>'.$term.'</strong>', $content);
}
// highlight search terms
$chars = array("\'", "&");
$charReplace = array("'", "&");
$content = str_replace($chars,$charReplace,$content);
// set $image if not empty
$image = (!empty($results['image']) ? 'http://www.example.com/'.$results['image'] : '');
/* ------------------
------ echo statement
--------------------*/
echo '
<li class="media">';
// if image is not empty
if(!empty($image)):
echo '<a class="pull-left span2 hidden-phone" href="http://www.example.com/'.$results['address'].'"> <img class="media-object thumbnail" src="'.$image.'" alt="'.$results['description'].'"/> </a>';
endif;
echo '
<div class="media-body">
<h4 class="media-heading"><a href="http://www.example.com/'.$results['address'].'">'.htmlspecialchars_decode($results['title']).'</a></h4>
<p class="result-address"><small><a href="http://www.example.com/'.$results['address'].'">http://www.example.com/'.$results['address'].'</a></small></p>
';
/*if(!empty($image)):
echo '<a class="visible-phone" href="'.$results['address'].'"> <img class="thumbnail phone-search-thumb" src="'.$image.'" alt="'.$results['description'].'"/> </a>';
endif;*/
echo '
<p class="result-content">'.$content.'</p>
</div>
</li>
';
/* ------------------
---end echo statement
--------------------*/
} $result->close();
}
このPHP
andSELECT
ステートメントは、次の 2 つの結果を返します。
- 速い犬が飛び越える...
- ホットドッグは最高です...
望ましい結果 (助けてください)
私が好むのは、ここに示すように、同じ行内であっても、用語が出現するたびecho
に1つの結果になるステートメントです。$query
- すばしっこい犬が飛び越えて・・・(から
Row 1
) - ...怠惰な犬の上に。(から
Row 1
) - ホットドッグがうまい… (から
Row 3
)
質問
用語が出現するたびに1 つの結果が得られるようにPHP
、SELECT
ステートメントを編集するにはどうすればよいですか?echo
$query