Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по сайту. 
:(
    Опции темы
VoTeR
Дата 20.1.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 5.1.2006

Репутация: -1
Всего: нет



Сделал поиск. все работает. теперь остается:
1. Во время поиска большие буквы воспринимались как маленькие и наоборот
2. Чтобы были 2 функции:
1. Чтобы искалось строгое соответствие(все слова чтобы находил)
2. Чтобы искал хотябы одно слово из поля поиска
3. Если ничего не находил чтобы писал "поиск не дал результатов"

Это сообщение отредактировал(а) VoTeR - 20.1.2006, 16:13
PM MAIL   Вверх
AztEK
Дата 20.1.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Одна тема - один вопрос!
1. strtoupper и strtolower
2. Много вариантов: запрос преобразовывать в массив. если ф-ция "И", то смотреть: если оба слова в этом массиве(inarray()), то пихать найденное в массив рез-тов.
3. Пихать всё найденное в массив. а если в конце массив пуст - выводить "Нет рез-тов"


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
VoTeR
Дата 20.1.2006, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 5.1.2006

Репутация: -1
Всего: нет



1. спасибо, сделал. Эх, надо чтобы при поиске просто на регистр внимания не обращил запрос. а то немного нетак ищет
3. сделал без массива
2. я не знаю массвов smile

Это сообщение отредактировал(а) VoTeR - 20.1.2006, 17:29
PM MAIL   Вверх
AztEK
Дата 20.1.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Как это?? Читай тогда мануалы и книги. Поищи в этом форуме ссылки.
Массивами самое разумное имхо.


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
VoTeR
Дата 20.1.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 5.1.2006

Репутация: -1
Всего: нет



Кароче с 1. я справился с помощью LIKE, теперь он ищет все правильно.... но мне теперь надо, чтобы найденный текст выделялся другим font. и вот тут то мне и надо с буквами. например:
И воспринималась как и, И. И шрифт менялся.. а у меня шрифт меняется с учетом регистра - непорядок.
Далее... со 2 и 3 я почитал мануал и кое-де что-то понял, но smile
Хотелось бы посомтреть как правильно sql запрос в него пихать
---
Как понять сколько слов в поле ввода?

Это сообщение отредактировал(а) VoTeR - 20.1.2006, 19:10
PM MAIL   Вверх
VoTeR
Дата 20.1.2006, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 5.1.2006

Репутация: -1
Всего: нет



ЛЮДИ!!! помогите мне плиз! четко задавал вопросы. читал мануал http://php.rinet.ru/manual/ru/function.in-array.php
Конкретный вопрос, точнее 2.
1. Как правильно запихнуть sql запрос в массив
вроде так
Код

echo $my->center_border_center('<div align="CENTER">
<form method="POST" action="/index.php?action=go">
 Поле ввода <input type="text" name="search_name" size="28" value="'.$search_name.'">
  <br>
  <input type="submit" value="Искать" name="B1"><input type="reset" value="Очистить" name="B2">
');
if(isset($action))
  {
  if($action=='go')
    {
$res = array($sql = "select * from stati where text like '%$search_name%' or name like '%$search_name%' and kat='$search_kat' order by id desc");
if (in_array($search_name, $res)) {
echo $name;
}

2. Как ЭТОМУ запросу объяснить, что тут не одно слово введено а несколько!!!!!
и во время поиска чтобы искал не 2 соседних слова(которые введены) и например в поле введено: Привет и пока.
А текст в котором введется поиск привет траляля и пока.
Он должен выделить Привет пока
PM MAIL   Вверх
wsr
Дата 20.1.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: 1
Всего: 2



VoTeR
Во первых запрос еще нужно выполнить! А уж потом в нем что либо искать!
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
VoTeR
Дата 21.1.2006, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 5.1.2006

Репутация: -1
Всего: нет



и как его выполнить?? я написал то что думал в коду. прошу исправить. если можно не просто это не так это нета, а привести пример или указать куда можно заглянуть и где я смогу прочитав понять. манул не предлагать, он галимо написан для новичков.
PM MAIL   Вверх
Kefir
Дата 21.1.2006, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 13
Всего: 87



кидаем результаты поиска в массив:
Код

$result = array();
$q = "наш запрос MySQL";
mysql_connect("хост_базы_данных", "логин", "пароль");
mysql_query("USE имя_базы_данных");
$res = mysql_query($q);
$n = mysql_num_rows($res);
for($i=0; $i < $n; $i++) {
  $result[$i] = mysql_fetch_assoc($res);
}
mysql_free_result($res);
mysql_close();

Добавлено @ 01:08
И, кстати, инфу о том как работать с массивами и MySQL можно найти в любом количестве. На форуме это тоже должно быть.
PM MAIL WWW Skype   Вверх
VoTeR
Дата 21.1.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 5.1.2006

Репутация: -1
Всего: нет



Спасибо, но, к сожалению, это не решает нечуточки проблему со словами.
+ к этому как вывести содержимое поля $name?
Код

echo $name;

не работает.
PM MAIL   Вверх
Kefir
Дата 21.1.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 13
Всего: 87



эммм... какую проблему со словами??
Строгий поиск - просто LIKE "%search_string%"
Хотя бы одно слово: field1 LIKE "%search1%" OR field2 LIKE "%search2%"
Если такой поиск тебе не подходит, то почитай про fulltext search.

Если ты имеешь в виду то, что тебе надо выделять слова поиска, то это делается так:
Код

// $result - полученный массив в результатами выборки из таблицы (см. мой предидущий код)
$search_string = "это строка поиска введённая пользователем";
$search_bits = explode(" ", $search_string); // разбиваем поиск на слова и сохраняем массив слов в $search_bits
$replace_bits = array();
// Далее формируем массив для замены:
for($i = 0; $i < count($result); $i++) {
  $replace_bits[$i] = '<b>'.$search_bits[$i].'</b>';
}
// И наконец заменяем значения массива поиска на значения массива замены:
for($i = 0; $i < count($result); $i++) {
  $result[$i]['content_field'] = str_replace($search_bits, $replace_bits, $result[$i]['content_field']);
}


Содержимое поля name в случае моего примеры можно вывести так:
Код

echo $result[0]['name'];

Соответственно, вместо 0 мождешь подставить другой номер из результата.
PM MAIL WWW Skype   Вверх
VoTeR
Дата 21.1.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 5.1.2006

Репутация: -1
Всего: нет



Цитата(Kefir @ 21.1.2006, 12:27 Найти цитируемый пост)

Если ты имеешь в виду то, что тебе надо выделять слова поиска

угу. я это и имел ввидуsmile
Добавлено @ 13:14
Но оно не хочет работать!!! smile вот например. у меня текст: И вот перед вами и то и другое.

А теперь что получатеся: пишу в поле поиска : вот и
А он мне ничего не находитsmile совсем нечего..


Это сообщение отредактировал(а) VoTeR - 21.1.2006, 13:23
PM MAIL   Вверх
Kefir
Дата 21.1.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 13
Всего: 87



какой запрос к БД ты используешь?
Добавлено @ 13:19
Только что сделал запрос SELECT * FROM pages WHERE content like '%Menu nr 4 here%' or content like '%toetajad%' к своей базе и получил два результата с совпадениями... работает. Конкретнее, пж-ста.
Добавлено @ 13:20
И, кстати, у тебя вообще есть чего находить???
PM MAIL WWW Skype   Вверх
VoTeR
Дата 21.1.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 5.1.2006

Репутация: -1
Всего: нет



кароче вот запрос:
Код

$result = array();
$q = "select * from stati where text like '%$search_name%' or name like '%$search_name%' and kat='$search_kat' order by id desc";
$res = mysql_query($q);
$n = mysql_num_rows($res);
for($i=0; $i < $n; $i++) {
  $result[$i] = mysql_fetch_assoc($res);
}
mysql_free_result($res);

$search_string = $search_name;
$search_bits = explode(" ", $search_string);
$search_bits
$replace_bits = array();
for($i = 0; $i < count($result); $i++) {
  $replace_bits[$i] = '<b><font color="#FF0000"><span style="background-color: #FFFF00">'.$search_bits[$i].'</span></font></b>';
}
for($i = 0; $i < count($result); $i++) {
  $result[$i]['text'] = str_replace($search_bits, $replace_bits, $result[$i]['text']);
  $result[$i]['name'] = str_replace($search_bits, $replace_bits, $result[$i]['name']);

$name = $result[$i]['name'];
$kat = $result[$i]['kat'];
$text = $result[$i]['text'];
$id = $result[$i]['id'];
$site = $result[$i]['site'];

echo $my->center_border_stati_search($name, $kat, $text, $id, $site, $search_name);;
}

а вот структура таблицы stati
Код

CREATE TABLE `stati` (
  `id` bigint(20) NOT NULL auto_increment,
  `kat` varchar(15) default NULL,
  `name` varchar(255) default NULL,
  `text` text,
  `site` varchar(50) default NULL,
  PRIMARY KEY  (`id`)
);

#
# Дамп данных таблицы `stati`
#

INSERT INTO `stati` VALUES (1, 'КПК', 'Название статьи', 'Текст статьи', 'Сайтец');

В поле поиска ввожу: "название текст"(без ковычек)
А он мне нечего не находит....
Хотя, как я понимаю, должен найти и то и другое слово....только в разных таблицах...
+мне надо чтобы слова выделялись разного регистра. например буква "п" выделялалсь как"П" и "п". А тут она выделяется в том же регистре, котором я ищу. а если str_replace заменить на eregi_replace, то вообще перестанет что либо выделяться.

Это сообщение отредактировал(а) VoTeR - 21.1.2006, 13:48
PM MAIL   Вверх
Kefir
Дата 21.1.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 13
Всего: 87



1. сделай после формирования запроса в БД echo $q; - чтобы посмотреть какой на самом деле твой запрос. запости сюда.
2. после mysql_query сделай echo mysql_error();
Результаты запости сюда. Будем разбираться.
Кстати, если хочешь чтобы твой код был понятен и по его поводу не возникало много вопросов - 1. каменти как и откуда идут переменные. 2. форматируй нормально плиз.
Добавлено @ 13:58
Цитата

должен найти и то и другое слово....только в разных таблицах...

в разных столюцах (field). запости код где ты определяешь сам $search_name - у тебя в запросе непонятное что-то творится. Не понимаю, почему одна и та же переменная ищется в обоих полях.
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1137 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.