【发布时间】:2009-09-23 15:10:49
【问题描述】:
我的实际问题是我将如何创建一个自动完成下拉标签来引用特定页面,比如在这个网站上。
我已经有一个自动完成下拉菜单,它会在 db 字段中查找以 something%(通配符),但这只是一个词
如果您希望在一个字段中有 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";
谢谢,理查德
【问题讨论】:
-
查看您的 sql 查询,它将返回与输入的任何标签 (OR) 匹配的目标,而不是所有标签 (tag1 AND tag2)
-
我知道,你的语法更好。我只是在尝试,如果我记得一些语法是如何工作的。太糟糕了,不允许子选择。顺便说一句,我在看到您编辑答案之前就这样做了。
标签: php mysql autocomplete