构建没有项目ID的URL并获取正确的项目

时间:2011-08-08 20:05:45

标签: php mysql .htaccess url

我有一段时间遇到这个问题,

假设我们有一个电影网站

我们在数据库中有一部名为Test-movies123!的电影,

现在我要做的是创建一个URL watch/test-movie123-{$id}/,然后使用ID

查询DB

现在问题是ID不应该在那里,我该如何解决这个问题呢? 如果我从网址获取test-movie123并进行搜索,我找不到它,因为它没有!,除非我使用LIKE,但这不是非常值得信赖......

任何人都可以提出任何建议?非常感谢

2 个答案:

答案 0 :(得分:4)

好吧,你可以创建一个规则来获取电影标题并将其变成一个slu ..所以,你知道你总是小写标题,删除除字母,数字和短划线以外的任何内容,并将空白转换为单个短划线。

然后将其存储在数据库的另一列中,并确保强制使用唯一性。获取URL并从中搜索该列。

从那时起,你只需要处理如果你上传了第二个产生完全相同的slug的视频会发生什么。这有很多选项...附加一个随机数slug,增加一个数字并附加它等等。

答案 1 :(得分:2)

要做到这一点,你可能在数据库中有类似primary_key的东西 “测试movies123”。

想象一下,您有一个控制面板,您可以在表单中插入电影。 然后使用标题Test Movies123!将它保存在数据库中,如下例所示:

id:AUTO_INCREMENT NUMBER keyname:sanityTitle(“Test Movies123!”)< - 这应该保存“test-movies123” 标题:“测试电影123!” 东西:“blablabla”

注意sanityTitle()将是您从标题中准备友好网址的功能。

然后你的网址会是这样的 watch / test-movie123 /在url中使用正则表达式控件 要么 看/?id = test-movie123 raw

您将在表格中搜索INDEXED或PRIMARY键,“keyname”,它将输出1行,包含所有内容。