|
|
|
| сделал такую констукцию
$query = "select id_article from paragraphes WHERE MATCH(name) AGAINST('$_POST[name]*' IN BOOLEAN MODE) GROUP BY id_article";
$post = mysql_query($query);
if($post)
{
$num = mysql_num_rows($post);
if($num>0)
{
while($posts = mysql_fetch_array($post))
{
$idol = mysql_query("SELECT * FROM articles WHERE id_article =' ".$posts['id_article']."'");
while($pos = mysql_fetch_array($idol))
{
echo " <a href=../article/index.php?id_article=".$pos['id_article'].">".$pos['name']."</a><br>";
}
}
}
else
{
echo "По запросу ничего не найдено.";
exit();
}}
|
как мне в ввыводе обойтись одним запросом, я понял. что это делается с оператором IN , но сколько не поролся ничего не получилось.
и сразу вдогонку еще один вопрос.
Как можноорганизовать поиск по нескольким базам без переключателя. Чтобы сначала скрипт выполнял один запрос, затем другой потом третий и.т.д. если для каждого результата разная форма вывода. | |
|
|
|
|
|
|
|
для: куч1963
(23.06.2006 в 17:07)
| | Для этого необходимо воспользоваться многотабличным запросом
select articles.* from articles, paragraphes
WHERE MATCH(paragraphes.name) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
GROUP BY articles.id_article
|
| |
|
|
|
|
|
|
|
для: cheops
(23.06.2006 в 23:34)
| | Спасибо Сheops,
немного скорректировал запрос таким образом
select articles.id_article AS id_article,
articles.name AS name,
paragraphes.name AS text,
paragraphes.id_article
from articles, paragraphes
WHERE articles.id_article = paragraphes.id_article AND MATCH(paragraphes.name) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
GROUP BY articles.id_article
|
вывод делаю стандартно
$post = mysql_query($query);
if($post)
{
$num = mysql_num_rows($post);
if($num>0)
{
while($posts = mysql_fetch_array($post))
{
echo " <a href=../article/index.php?id_article=".$posts['id_article'].">".$posts['name']."</a><br>
}
|
пробоввал выводить отрывок текста с $_POST[name], но получается только когда полное соответствие :((;
А на второй вопрос так ответа не получил.
Сейчас у меня поиск по базе организован так
В переключателе выбираю где искать, в форме обработки switch-чем выбираю запросы.
А как реализовать поиск без переключателя, типа ввел слово в форму а в обработчике происходит поиск по всем нужным таблицам. Запхнуть запросы в цикл или как? Структура запросов разная. | |
|
|
|
|
|
|
|
для: куч1963
(24.06.2006 в 09:00)
| | Вам поможет оператор LIKE
articles.id_article = LIKE paragraphes.id_article | |
|
|
|
|
|
|
|
для: valenok
(24.06.2006 в 09:48)
| | С запросом все нормально, немного шалит вывод участка текста, где найдено вхождение
делаю так
<?= strtok (stristr($posts['text'], $_POST['name']),'.');?>
|
мне выдается кусок текста вида ...слово запроса ---- до первой точки, но начинает ерунда вылазить, когда после искомого слова стоит точка. по идее надо выводить предложение, но тогда слово надо подсвечивать, а подсветка сработает, если будет наскок я понимаю точное соответствие паттерну.
но меня больше интересует одновременный запрос на несколько таблиц
делаю
$query = " select articles.id_article AS id_article,
articles.name AS name,
paragraphes.name AS text,
paragraphes.id_article
from articles, paragraphes
WHERE articles.id_article = paragraphes.id_article AND MATCH(paragraphes.name) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
GROUP BY articles.id_article
UNION SELECT p_id AS id, name AS links_name FROM links WHERE MATCH(name) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
GROUP BY name";
$post = mysql_query($query);
//Проверяю
$num = mysql_num_rows($post);
echo $num;
//Результат пустое окно
|
По отдельности два селекта работают.
И еще прицепом идет проблема,
результат надо разбить на части, равные колличеству селектовБ чтобы было так:
найдено в раделе 1: найдено в разделе 2:
Я мыслю это сделать так
while($posts = mysql_fetch_array($post))
{
if(!empty($posts['id_article']))
{
echo " <a href=../article/index.php?id_article=".$posts['id_article'].">".$posts['name']."</a><br>";
}
else
{
echo " в разделе 1 ничего не найдено";
}
// if(!empty($posts['id']))...
}
|
Только в таком виде разнобой | |
|
|
|
|
|
|
|
для: куч1963
(24.06.2006 в 11:21)
| | Не идет запрос
$query = " select articles.id_article AS id_article,
articles.name AS name,
paragraphes.name AS text,
paragraphes.id_article
from articles, paragraphes
WHERE articles.id_article = paragraphes.id_article AND MATCH(paragraphes.name) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
GROUP BY articles.id_article
UNION SELECT p_id AS id, name AS links_name FROM links WHERE MATCH(name) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
GROUP BY name";
|
Кто может помогите разобраться в чем дело! | |
|
|
|
|
|
|
|
для: куч1963
(24.06.2006 в 16:54)
| | В чём выражается "не идёт" - выводит ошибку или не возвращает записи? | |
|
|
|
|
|
|
|
для: cheops
(24.06.2006 в 16:56)
| | не возвращает записи
По отдельности работают, а после объединения вывода данных нет | |
|
|
|