| веб-мастеру | блог веб-мастера | Статьи Веб-Мастера | SEO Tools | книги веб-мастеру |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| 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` ) -------------------- Хочу жить на о.Самуи
Раскрутка Вашего сайта | Пишу php скрипты на заказ | Регистрация Вашего сайта в каталогах |__| RU-домены за 170 рублей |__| SU-домены за 460 рублей |__| | - | - | - | ICQ: 6-426-630 |
| pershinoid |
23.11.2007, 19:32
Сообщение
#3
|
|
Новичок ![]() ![]() Группа: Пользователи Сообщений: 9 Регистрация: 23.11.2007 Пользователь №: 375 |
Возможно в самой таблице у вас не установлен полнотекстовый поиск для нужного столбца(ов). Делается это через 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... |
| 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; } -------------------- Хочу жить на о.Самуи
Раскрутка Вашего сайта | Пишу php скрипты на заказ | Регистрация Вашего сайта в каталогах |__| RU-домены за 170 рублей |__| SU-домены за 460 рублей |__| | - | - | - | ICQ: 6-426-630 |
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 8.8.2008, 8:20 |