Webmaster общности: Predpriemach.com | SearchEngines.bg

    MySQL търсачка с оцветяване на намерения резултат

    ето един урок как да си направите търсачка която оцветява в текста намерените думи.

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    
    <body>
    <form method="GET" action="tarsene.php">
    <table cellpadding="0" cellspacing="0" width="300px" >
    <tr>
    <td align="right" width="200px"><input type="text" name="Search" size="30"></td>
    <td align="right" width="100px"><input type="submit" value="Tarsi" name="search"></td>
    </tr>
    </table>
    </form>
    
    <?php
    
    $tarsene = $_GET[Search];
    
    if($_GET['Search'])
    {
    //server connfigure////////////////////////////////////////////////
    $server = "localhost";
    $dbusername = "username";
    $dbpassword = "password";
    $db_name = "dbname";
    //server connfigure/////////////////////////////////////////////////
    
    mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни");
    @mysql_select_db($db_name) or die("Грешна база данни");
    
    //следните функции са за разделяне на стринга,
    //за да не търси последователност
    $trimmed = trim($tarsene); //премахваме ненужните полета
    $var = explode(" ",$trimmed); //разделяме стринга думи
    $count = count($var); //преброяваме думите в стринга
    
    //следва един цикъл с които избягваме дублиращите се резултати
    for($i = $count-1;$i < sizeof($var); $i++) {
    
    $abc = $var[$i];
    
    //правиме заявка към базата данни ползваме $abc което е всяка отделна дума от стринга,
    //а '% %' го ползваме за да може примерно ако търсиме "кон" да покаже и резултати като "конски"
    $querys = " SELECT * FROM news WHERE `newstext` LIKE '%$abc%' ORDER BY id_news DESC";
    $results = mysql_query($querys) or die('Error, query failed');
    $numrows = $row['newstext']; //преброяваме редовете с резултатите
    //и ако са по малко от 1 ще покаже съобщение че няма намерени резултати.
    if ($numrows<1)
    
    {echo "<center><b>Няма намерени резултати за ".$tarsene."</b></center><br><br>";}
    
    
    while($row = mysql_fetch_array($results))
    {
    $id_news=$row[id_news];
    $title=$row[title];
    $cats=$row[cats];
    $chas=$row[chas];
    $minuti=$row[minuti];
    $den=$row[den];
    $mesec=$row[mesec];
    $godina=$row[godina];
    $newstext=$row[newstext];
    
    //следващата функция е за заместването на търсените думи от стринга
    //със същите думи, но с оцветяване. font style=color:#000000;background-color:#FFFF00; тук
    //сме задали какъв да е цвета на шрифта и какъв на бекграунда на търсената дума.
    $replece=array();
    
    for($i = 0;$i < sizeof($var); $i++) {
    $newvar[$i]="<font style=color:#000000;background-color:#FFFF00;><b>$var[$i]</b></font>";
    array_push($replece,$newvar[$i]);
    }
    
    $newtext=str_replace($var,$replece,$newstext);
    
    //и следва шизуализиране на заявката. забележете, че вмесо да изпишем $newstext ползваме вече
    //текста с заменените думи с оцветяване $newtext.
    
    echo "<table width=100% border=0 cellpadding=0 cellspacing=0>
    <tr>
    
    <td class=text height=19 background=img/h_gr2.gif>  <strong><a href=fullnews.php?id_news=".$id_news.">".$title."</a></strong></td>
    </tr>
    
    <tr>
    <td>
    <table id=lineLRBs class=nav border=0 cellpadding=0 cellspacing=0 width=100%>
    <tr>
    <td height=25px id=lineBottom width=33%>  Категория: <strong><a href=catview.php?cats=".$cats.">".$cats."</a></strong></td>
    <td height=25px id=lineBottom width=33%> </td>
    <td height=25px id=lineBottom width=34%>  <strong>".$chas.":".$minuti." - ".$den."/".$mesec."/.".$godina."</strong></td>
    </tr>
    <tr>
    <td id=lineBottom width=100% colspan=3><div><table cellpadding=5 width=100%>
    <tr>
    <td width=100%><p align=justify>$newtext</p></td>
    </tr>
    </table></div></td>
    </tr>
    <tr>
    <td height=25px width=33%>  <strong><a href=addcomment.php?id_news=$id_news>Коментари</a></strong></td>
    <td height=25px width=33%> </td>
    <td height=25px width=34%>  <a href=fullnews.php?id_news=".$id_news."><strong>Прочети цялата новина</strong></a></td>
    </tr>
    </table>";
    echo "<br>";
    }}} //затваряме всички вече отворени големи скоби.
    ?>
    
    </body>
    </html>

    търсачката ползва следната база:

    CREATE TABLE `news` (
    `id_news` int(50) NOT NULL auto_increment,
    `title` varchar(250) default NULL,
    `cats` varchar(250) default NULL,
    `newstext` text,
    `minuti` varchar(50) default NULL,
    `chas` varchar(50) default NULL,
    `den` varchar(50) default NULL,
    `mesec` varchar(50) default NULL,
    `godina` varchar(50) default NULL,
    PRIMARY KEY (`id_news`)
    );

    тази търсачка е готова за употреба в системата за новини

    лесно може да промените базата и към подходяща за вашия сайт.

    При въпроси и проблеми, въпроси тук или на ЛС.

    Оставете коментар