веб-мастеру блог веб-мастера Статьи Веб-Мастера SEO Tools книги веб-мастеру

IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> почему не работает скрипт
pershinoid
сообщение 23.11.2007, 17:11
Сообщение #1


Новичок
**

Группа: Пользователи
Сообщений: 9
Регистрация: 23.11.2007
Пользователь №: 375



надо сделать поиск по базе с помощью пхп
выводится форма, пишется слово, которое надо найти. но посмле нажатия кнопки поиск опять открывается пустая форма поиск. результат не выводится. не понимаю почему

<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
<table bgcolor="#ccccFF">
<tr>
<td>Найти</td>
<td align="center"><input type=text name="a" value="" size="50" maxlength="20"></td>
</tr>
<tr>
<td colspan="2" align="right"><input type=submit name="Go" value="поиск"></td>
</tr>
</table>
</form>

<?php
include "config.php";

function search($a)
{
$query = "SELECT * FROM glav
WHERE MATCH (name,text) AGAINST ('$a');";
$result = MYSQL_QUERY($query);
echo '<table border align="left" width="150">';
echo '<tr>';
echo "<th>название главы/раздела</th><th>текст</th>\n";
echo "</tr>\n";
while ($row = @mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "<tr>\n";
echo "<td>".$row["name"]."</td>";
echo "<td>".$row["text"]."</td>";

echo '</tr>';
}
echo'</table>';
}
?>
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gid
сообщение 23.11.2007, 17:24
Сообщение #2


Администратор форума
*****

Группа: Главные администраторы
Сообщений: 623
Регистрация: 27.11.2006
Из: Россия
Пользователь №: 1



Возможно в самой таблице у вас не установлен полнотекстовый поиск для нужного столбца(ов). Делается это через phpMyAdmin или sql запросом:
Код
ALTER TABLE `имя_таблицы` ADD FULLTEXT (
`поле1`, `поле2`
)


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pershinoid
сообщение 23.11.2007, 19:32
Сообщение #3


Новичок
**

Группа: Пользователи
Сообщений: 9
Регистрация: 23.11.2007
Пользователь №: 375



Цитата(gid @ 23.11.2007, 17:24) *

Возможно в самой таблице у вас не установлен полнотекстовый поиск для нужного столбца(ов). Делается это через phpMyAdmin или sql запросом:
Код
ALTER TABLE `имя_таблицы` ADD FULLTEXT (
`поле1`, `поле2`
)



стоит fulltext и
в phpmyadmin запрос
SELECT * FROM glav
WHERE MATCH (name,text) AGAINST ('$a');
работает
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pershinoid
сообщение 23.11.2007, 19:33
Сообщение #4


Новичок
**

Группа: Пользователи
Сообщений: 9
Регистрация: 23.11.2007
Пользователь №: 375



проблема в том что на страницу результат не выводится
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sashkovishe
сообщение 23.11.2007, 23:23
Сообщение #5


Администратор форума
****

Группа: Администраторы
Сообщений: 397
Регистрация: 3.12.2006
Из: России
Пользователь №: 4



Попробуйте убрать экранирование ошибок (@) в строке while ($row = @mysql_fetch_array($result, MYSQL_ASSOC)), посмотрите чего выдаст...
------------
может пригодиться... делал поиск для одной доски объявлений...
Код

<form action='index.php?page=search' method=POST name='search_form' OnSubmit='return check()'>
<input type='text' name='str_search' size=30 maxlength=50>
<input type='submit' name='go'>

if (@$go) {
    $str_search=strip_tags($str_search);
    $str_search=trim($str_search);
    
    $numresults=mysql_query("SELECT * FROM $table WHERE text LIKE '%$str_search%'");
    $rows=mysql_num_rows($numresults);
    if (empty($p)) { $p=0; }
    $limit=10;
    $sql=mysql_query("SELECT * FROM $table WHERE text LIKE '%$str_search%' ORDER BY id DESC limit $p,$limit");
    $row=mysql_num_rows($sql);
    if($row==0){ echo "<hr><H3 align=center>По запросу \"$str_search\", поиск не дал результатов, или в этом разделе нет объявлений</H3>"; }    else    {
        echo "<hr><div class=zagol align=center><b>Результаты поиска по запросу \"$str_search\"</b><p></div><table border=1 width=100% align=center cellpadding=1 cellspacing=0 bordercolor=#a8a8a8>
        <tr align=center bgcolor=#e1e1e1><th width=15%>Дата</td><th width=25%>Раздел</td><th width=60%>Объявления</td></tr>";
        for($i=0;$i<$row;$i++){
            $str=mysql_fetch_array($sql);
            echo "<tr><td width=15% align=center>".$str['date']."</td><td width=25% align=center>".$str['razdel']."</td><td width=60%>".nl2br(strip_tags($str['text']))."</td></tr>";
        }     echo "</table>";
    }

p.s. код здесь не весь, а только основная часть, но думаю без труда можно переделать под себя...


--------------------
Изображение
Think differently...
ICQ: 6-135-294
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pershinoid
сообщение 25.11.2007, 1:26
Сообщение #6


Новичок
**

Группа: Пользователи
Сообщений: 9
Регистрация: 23.11.2007
Пользователь №: 375



спасибо! все работает
а как подсвечивать слова, которые искали?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gid
сообщение 25.11.2007, 9:37
Сообщение #7


Администратор форума
*****

Группа: Главные администраторы
Сообщений: 623
Регистрация: 27.11.2006
Из: Россия
Пользователь №: 1



Делал для своих сайтов, немного коряво, но работает:
Код
function highlight_search_string($s_w, $text)
{
$search_arr = array_unique(Clear_array_empty(explode(" ", $s_w)));
$s_str_r = "'\,|\.|\;|\:|\"|\'|\(|\)|\#|\*|\@|\$|\&|\%|\^|\"|\-|\=|\+|\?|\>|\<|\/'";
foreach ($search_arr as $s_text)
{
$s_text = trim(@preg_replace ($s_str_r, " ", $s_text));
if (strlen($s_text)>2)
$text = @eregi_replace($s_text, "<font style=\"background-color:#ffe1e1\">\\0</font>", $text);
}
return $text;
}


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Быстрый ответОтветить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 8.8.2008, 8:20
^ ВВЕРХ ^

Посетите наши проекты:
Бодибилдинг.info - культуризм или бодибилдинг поисковая оптимизация