我的实际问题是如何创建一个自动完成下拉标记,这些标记将引用特定页面,例如在此网站上。
我已经有了一个autocomlete下拉列表,它在db字段中查找以。开头的单词 %(通配符),但这只是一个单词
如果您想在一个字段中使用5个标记,逗号分隔为tag1,tag2,tag3等,该怎么办? 这将引用一个特定的页面。 你会如何开始查询以查找以字母F开头的标签,例如,提取它们并将它们放在下拉列表中,并在同一时间从url字段中获取url。
并输入两个或多个标签, 结果应该更精确
这些只是我自己的想法,我还没弄清楚最好的方法是什么。
修改 我使用下面的信息来烹饪这样的东西。 我仍然需要使用搜索结果制作一个页面,所以很久没有准备好。
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";
谢谢,理查德
答案 0 :(得分:1)
我可能没有该页面的单个字段中的标签(以逗号分隔),而是“标签”表:
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
答案 1 :(得分:1)
我建议使用jQuery来制作自动填充字段。它有一个很好的界面: