New-dev.ru
Как реализовать поиск по названию и указанному доп полю?
Сегодня, 00:54
$db->query("
SELECT * FROM " . PREFIX . "_post
WHERE " . PREFIX . "_post.approve = 1
{$this_date}
AND (
title LIKE '%{$query}%'
OR xfields LIKE '%new|{$query}%'
OR xfields LIKE '%year|{$query}%'
)
ORDER BY date DESC
LIMIT 5
");
Kentavr
Как реализовать поиск по названию и указанному доп полю?
Сегодня, 00:14
lutskboy, Вы понимаете что строка которую вы мне написали для меня просто бесполезная? Я дал свой код выше. Если вы действительно хотите помочь, то напишите нормальное решение. Что на что заменить. А не просто кусок кода с которым непонятно что делать ))
vitnet Четко написал все, просто в моем случае не сработало.
lutskboy
Как реализовать поиск по названию и указанному доп полю?
Вчера, 23:49
WHERE (title LIKE '%Rembo%' OR SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'title_en|', -1 ) , '||', 1 ) LIKE '%Rembo%' OR SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'title_ru|', -1 ) , '||', 1 ) LIKE '%Rembo%')
Kentavr
Как реализовать поиск по названию и указанному доп полю?
Вчера, 20:44
vitnet,
Этот код тоже не дает нужного результата. Ищет по всем существующим полям (
// Функция для извлечения значения доп. поля
function get_xfield_value($field_name) {
return "SUBSTRING_INDEX(SUBSTRING_INDEX(xfields, '{$field_name}\"', -1), '\"', 1)";
}
$conditions = ["title LIKE '%{$query}%'"];
$custom_fields = ['new', 'year']; // Добавляйте новые поля сюда
foreach ($custom_fields as $field) {
$conditions[] = get_xfield_value($field) . " LIKE '%{$query}%'";
}
$where_clause = implode(' OR ', $conditions);
$db->query("SELECT id, short_story, title, date, xfields, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1" . $this_date . " AND ({$where_clause}) ORDER by date DESC LIMIT 5");
Kentavr
Как реализовать поиск по названию и указанному доп полю?
Вчера, 15:14
Извиняюсь запутался и не так написал. Код был такой изначально Искало по всем полям и заголовку.
$db->query( "SELECT * FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1" . $this_date . " AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5" );
Я сделал так и стало искать только по заголовку
$db->query( "SELECT * FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1" . $this_date . " AND (title LIKE '%{$query}%') ORDER by symboy DESC LIMIT 5" );
Мне нужно чтобы искало по двум указанным полям и заголовку. В любом случае ваш код я попробовал, не сработало. ищет по заголовку как и было у меня, по нужным полям ничего не найдено.
vitnet
Как реализовать поиск по названию и указанному доп полю?
Вчера, 11:37
Так не пробовали?
$db->query("SELECT id, short_story, title, date, xfields, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (title LIKE '%{$query}%' OR SUBSTRING_INDEX(SUBSTRING_INDEX(xfields, 'new|', -1), '||', 1) LIKE '%{$query}%' OR SUBSTRING_INDEX(SUBSTRING_INDEX(xfields, 'year|', -1), '||', 1) LIKE '%{$query}%' ORDER by date DESC LIMIT 5");
// Функция для извлечения значения доп. поля
function get_xfield_value($field_name) {
return "SUBSTRING_INDEX(SUBSTRING_INDEX(xfields, '{$field_name}|', -1), '||', 1)";
}
$conditions = ["title LIKE '%{$query}%'"];
$custom_fields = ['new', 'year']; // Добавляйте новые поля сюда
foreach ($custom_fields as $field) {
$conditions[] = get_xfield_value($field) . " LIKE '%{$query}%'";
}
$where_clause = implode(' OR ', $conditions);
$db->query("SELECT id, short_story, title, date, xfields, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1" . $this_date . " AND ({$where_clause}) ORDER by date DESC LIMIT 5");