создать опцию поиска для локальных веб-страниц, пометив страницу - PullRequest
0 голосов
/ 21 сентября 2009

Мой реальный вопрос: как мне создать выпадающий список автозаполнения для тегов, которые ссылаются на определенную страницу, как на этом сайте?

У меня уже есть раскрывающийся список автозаполнения, и он ищет в поле БД слово, начинающееся с что-то% (подстановочный знак), но это только одно слово

Что делать, если у вас есть 5 тегов, разделенных запятой, таких как tag1, tag2, tag3 и т. Д., В одном поле это будет относиться к одной конкретной странице. Как начать запрос с поиска тегов, начинающихся, например, с буквы F, извлечь их и поместить в выпадающий список, а также получить URL-адрес из поля URL-адреса одновременно с курсом.

, а также набрав два или более тегов, результаты должны стать более точными

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

EDIT Я использовал информацию ниже, чтобы приготовить что-то вроде этого. Мне все еще нужно создать страницу с результатами поиска, так что она давно не готова.

CREATE TABLE tag_targets (
  tag_target_id MEDIUMINT UNSIGNED NOT NULL auto_increment,
  tag_target_naam varchar(30) NOT NULL,
  tag_target_url varchar(255) NOT NULL,
  PRIMARY KEY  (tag_target_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE tags (
  tag_id MEDIUMINT UNSIGNED NOT NULL auto_increment,
  tag varchar(30) NOT NULL,
  PRIMARY KEY  (tag_id),
  UNIQUE KEY tag (tag)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE target_tag (
  tag_target_id MEDIUMINT UNSIGNED NOT NULL,
  tag_id MEDIUMINT UNSIGNED NOT NULL,
  FOREIGN KEY (tag_target_id) REFERENCES tag_targets(tag_target_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


$q = "SELECT t1.tag_target_url,t2.tag FROM tag_targets AS t1,tags AS t2, target_tag AS t3 WHERE t1.tag_target_id = t3.tag_target_id AND t2.tag_id = t3.tag_id AND tag LIKE '$queryString%' LIMIT 10";

спасибо, Ричард

Ответы [ 2 ]

1 голос
/ 23 сентября 2009

Я бы рекомендовал использовать jQuery для создания полей автозаполнения. Имеет хороший интерфейс для их создания:

http://docs.jquery.com/Plugins/Autocomplete

1 голос
/ 21 сентября 2009

Я бы, вероятно, не имел тегов в одном поле для этой страницы (через запятую), а в таблице "тегов":

tags:
ID | name
---------
 1 | tag1
 2 | tag2
 3 | tag3
 4 | tag4


page_tags:
page_id | tag_id
----------------
      1 | 2 
      1 | 3
      2 | 1
      3 | 4
      3 | 3

Вы можете запросить любые теги простым способом, а также получить любые подходящие страницы.

Например, если пользователь введет «tag3», он будет соответствовать страницам 1 и 3, а «tag2, tag3» (или «tag3, tag2» - порядок не имеет значения) будет соответствовать только странице 1.

Пример SQL-запроса для вышеупомянутого:

SELECT 
    page_tags.page_id
FROM
    page_tags INNER JOIN tags
    ON page_tags.tag_id=tags.id
WHERE
    tags.name IN ('tag3', 'tag2') 
GROUP BY
    page_id HAVING count(page_tags.tag_id) = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...