<input type="text""> <input type="text""> <input type="text"" />

Markeer zoektekst in mysql php search

Hoi dit is het script dat ik heb, het werkt goed om in mijn database te zoeken. ik heb een form.html waar de gebruiker het trefwoord invoert in een zoekvak.

<form method="get" action="form.php">
<input type="text" name="searchterm" title="Enter your search term here" value="Enter your search term here" class="searchbox" />
<input type="submit" name="search" title="Search Now! "value="Search" class="searchbutton" />
</form>

i would like to highlight the search text in the result.

erg bedankt

form.php



<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search</title>
<link href="default.css" rel="stylesheet" type="text/css" media="screen" />
</head>

<body>
<?php

// include MySQL-processing classes

require_once 'mysql.php'; 

try{

// connect to MySQL

$db=new MySQL(array('host'=>'','user'=>'','password'=>'','database'=>''));

$searchterm=$db->escapeString($_GET['searchterm']);

$result=$db->query("SELECT * FROM BookPage WHERE (PageText) like \"%$searchterm%\" ");

if(!$result->countRows()){

echo '<div class="maincontainer">

No results were found. Go back and try a new search.

</div>'."n"; } else{ // display search results echo '<div class="maincontainer">

Your search criteria returned '.$result->countRows().' results.

'."n"; while($row=$result->fetchRow()){ echo '<div class="rowcontainer">

Book Id: '.$row['BookId'].'

Page Id: '.$row['PageId'].'

Page Text: '.$row['PageText'].'

</div>'."n"; } } echo '</div>'; } catch(Exception $e){ echo $e->getMessage(); exit(); } ?> </body> </html>
4

2 antwoord

You can use this code :

<?php
 //$keyword -> keyword to be search in string.
 //$field   -> string contain value to be seach
//Returns HTML content with highlighted text
function makeHighlighter($keyword, $field) {
    $i = strripos($field, $keyword);
    if ($i !== false) {
        $keyword = str_ireplace($keyword, substr($field, $i, (strlen($keyword))), $keyword);
    } else {
        return $field;
    }
    $as_unm_split = explode($keyword, $field);
    $string_hig = "";
    for ($i = 0; $i < count($as_unm_split); $i++) {
        if ($i < count($as_unm_split) - 1)
            $string_hig.=$as_unm_split[$i] . "" . $keyword . "";
        else
            $string_hig.=$as_unm_split[$i];
    }
    unset($as_unm_split, $keyword, $i);
    return $string_hig;
}

echo makeHighlighter("keyword","this is keyword to be match...");
?>

O/P

this is keyword to be match...
[Note : "keyword" will be in RED color]

4
toegevoegd
Het werkt niet voor utf-8 karakters. Bijvoorbeeld qué . Hoe kan ik het verbeteren om het te laten werken?
toegevoegd de auteur Pathros, de bron

Probeer dit:

$searchvalue = implode(''.$_GET['searchterm'].'',explode($_GET['searchterm'],$row['PageText']));
echo '<div class="rowcontainer">

Book Id: '.$row['BookId'].'

Page Id: '.$row['PageId'].'

Page Text: '.$searchvalue.'

</div>'."n";
3
toegevoegd
heel erg bedankt werkt goed
toegevoegd de auteur jk1844, de bron