|
|
|
|
|
для: Николай2357
(21.09.2008 в 01:57)
| | Огромное спасибо, попытаюсь поработать с Вашим скриптом. | |
|
|
|
|
|
|
|
для: xx77
(20.09.2008 в 21:30)
| | Спасибо за консультацию, обязательно учту ошибки, между тем, скрипт работает. Ужель настолько эти ошибки серьезны, что скрипт не должен был работать? В таком случае мы наблюдаем ЧУДО:))) | |
|
|
|
|
|
|
|
для: Ramzero
(20.09.2008 в 04:54)
| | Только что сделал такую же штуку, может подойдет. Выдернул из своего контекста, не ручаюсь, что заработает сразу, но код точно рабочий.
<?php
include_once("db_connect.php");
if(isset($_POST['keyword']))$poisk = $_POST['keyword']; else $poisk = null;
if(isset($_POST['sel_search']))$select = $_POST['sel_search']; else $select = null;
if(isset($_GET['page'])){
$page=$_GET['page'];
}elseif(isset($_POST['keyword'])){
$page="keyword";
}else{
$page=null;
}
switch($page) {
case "keyword": $result=search($poisk,$select);$search=form_search();break;
case "info": $search=form_search();$result=info_show();break;
default: $search=form_search();$result=info_show();
}
// Вывод информации страницы
function info_show()
{
$result = "<h1>Бла бла Главная страница</h1>";//file_get_contents("main.tpl");
return $result;
}
// Поисковик.
function search($poisk,$select)
{
$num = 10;
if( $poisk && $poisk !==" ") {
setlocale(LC_CTYPE, "ru_RU.CP1251");
$poisk = strtolower($poisk);
$poisk_db = mysql_escape_string($poisk);
if( $select == 1 ){
$select = "`name` LIKE '%".$poisk_db."%'";
$poisk = " ";
}else{
$select = "`body` LIKE '%".$poisk_db."%'";
}
$query = mysql_query("SELECT * FROM `news` WHERE ".$select." ORDER BY putdate DESC")
or die ('Error: 1' . mysql_error());
$count = mysql_num_rows($query);
if($count){
for( $i = 0; $i < $count; $i++ )
{
$name=mysql_result($query, $i,'name');
$cont = mysql_result($query, $i,'body');
$contn = strtolower($cont);
$pos = strpos($contn,$poisk);
$len = strlen($poisk);
$posend = $pos+$len;
$resfor = substr($cont,0,$pos);
$poisklen = substr($cont,$pos,$len);
$resend = substr($cont,$posend);
$result .= "<div class=result ><h3>".$name."</h3>".$resfor."<span style='background-color:#FFCCFF;color:#0000FF'><b>".$poisklen."</b></span>".$resend."</div>";
}
}else{
$result = "<h4>К сожалению ничего не найдено</h4>";
}
return $result;
}
}
// Форма поисковика
function form_search()
{
$result="
<form action=index.php method=post >Напишите ключевые слова (например: <b>бла бла бла</b>)<br>
<input size=54 name=keyword type=text>
<input type=submit value=Найти>
Искать:
<label id=sel1 onMouseOver=\"document.getElementById('sel1').style.color='#0000ff'\" onMouseOut=\"document.getElementById('sel1').style.color='#000000'\">
<input checked=checked name=sel_search type=radio />
в содержимом </label>
<label id=sel2 onMouseOver=\"document.getElementById('sel2').style.color='#0000ff'\" onMouseOut=\"document.getElementById('sel2').style.color='#000000'\">
<input name=sel_search value=1 type=radio />
в названиях</label>
</b><br></form>";
return $result;
}
?>
<html>
<body>
<table width=100% border=0 cellspacing=0 cellpadding=0>
<tr>
<td><a href='?page=info' >Главная</a><br>
<?
echo $search;
?>
</td>
</tr>
<tr>
<td>
<?
echo $result;
?>
</td>
</tr>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Ramzero
(20.09.2008 в 04:54)
| | >> Вам программистам дался бы проект тогрового центра
тут много и тех кто не называет себя программистами
, и наверное некоторые даже могут запросто чего-нибудь из построек запроектировать .)
Как изучаещему программирование, мне, не понятно нескко моментов , в вашем коде
например
<?
if(mysql_num_rows($search) > 0) print ("Искомое слово <b>\"$text\"</b>
встречается в следующих статьях:<br><br>");
{
while(........
|
здесь если num_rows > 0 просто выполняется print
, а выполняется-ли код в последующем блоке огранниченном {} - скобками ?
ещё непонятно то как написан запрос
SELECT * FROM news
WHERE (body like lower('%%$text%%')) OR (name like lower('%%$text%%'))
ORDER BY putdate DESC
|
в нём %%$text%% с каким-то умыслом записано не в таком %$text% виде , как вроде-бы должно быть ?
и статьи в базе данных хранятся в виде htm , или чистейший текст ?
а так подсвечивается слово например тегами <font> или при помощи стилей
, если слово вообще попадёт в обрезок статьи отрезанный с помощью substr($news['body'], 0, $numchar+$pos)
. Но слово или часть слова или вообще например строка из пробелов , которую можно искать при помощи этого )
находится внутри тега html , то лучше не подсвечивать.
я так думаю | |
|
|
|
|
|
|
| Подскажите пожалуйста как в данном поиске подсветить искомое слово? Было бы замечательно, если бы Вы просто вставили нужный фрагмент кода в приведенный ниже.
Для меня, как для архитектора этот поиск дался с такими неимоверными усилиями, как Вам программистам дался бы проект тогрового центра на 1000 квадратов:)))
<?php
}
else
{
$text = substr($HTTP_POST_VARS["text"],0,1024);
$text = htmlspecialchars(stripslashes($text));
$text = str_replace("\n"," ",$text);
$text = str_replace("\r"," ",$text);
if (!get_magic_quotes_gpc())
$text = mysql_escape_string($text);
echo "</td></tr><tr><td>";
$query = "SELECT * FROM news
WHERE (body like lower('%%$text%%')) OR (name like lower('%%$text%%'))
ORDER BY putdate DESC";
$search = mysql_query($query);
if(mysql_num_rows($search) == 0) print ("<br>Ничего не найдено. Попробуйте использовать другие ключевые слова.");
if(mysql_num_rows($search) > 0) print ("Искомое слово <b>\"$text\"</b> встречается в следующих статьях:<br><br>");
{
while($news = mysql_fetch_array($search))
{
echo "<h3><b><font color=#A4D13A>".$news['name']."</font></b></h3>";
$pos = strpos(substr($news['body'],$numchar), " ");
if(strlen($news['body'])>$numchar) $srttmpend = "...";
else $strtmpend = "";
echo "<h3><small><p align=justify>".substr($news['body'], 0, $numchar+$pos).$srttmpend;
echo "</p><a href=news.php?id_news=".$news['id_news']."></h3><h2><i>
<p align=right><font color=#A4D13A>подробнее</font></i></h2></a></p>";
}
}
}
?>
Заранее благодарю. | |
|
|
|
|