2011-08-07 37 views
2

建立CMS,我想实现友好的URL时,我一直在努力与2个问题,使用PHP5和MySQL网址5.PHP:动态SEO与父/子关系

基本的数据库结构如下:

 
------------------------------- 
| ID | PageName | ParentID | 
------------------------------- 
| 1 | Page1  | 0  | 
| 2 | Page2  | 0  | 
| 3 | SubPage1  | 1  | 
| 4 | SubSubPage1 | 3  | 
------------------------------- 

我然后要生成像以下网址:

页与ID = 1将具有URL:/第1页
页与ID = 3将具有URL:/第1页/ SubPage1
页与ID = 4将有网址:/第1页/ SubPage1/SubSubPage1

当访问该页面我有一个规则的.htaccess的URL分派到查询字符串,如:?页= /第1页/ SubPage1等

如何查询数据库以将URL与数据库条目进行比较?

+0

也许这个链接可以帮助你:[请在此输入链接的描述] [1] [1]:http://stackoverflow.com/questions/20422497/mysql-modified-preorder-tree-to-create-url – 2015-05-07 01:40:05

回答

2

说你的路线是/Page1/SubPage1/SubSubPage1,您的查询将是:

SELECT p1.id 
    FROM pages AS p1, pages AS p2, pages AS p3 
    WHERE p1.PageName = 'SubSubPage1' AND p1.parentID = p2.ID AND 
      p2.PageName = 'SubPage1' AND p2.parentID = p3.ID AND 
      p3.PageName = 'Page1' 
0

您想比较整个路线还是只选择实际页面的数据?
如果您只想选择实际页面的数据(URL中的最后一个页面名称),只需在$_GET['page']变量(使用/作为分隔符)上使用explode并使用最后一个数组值。
接下来你只需插入这个值到SQL查询(FE SELECT * FROM pages WHERE PageName = 'yourLastValue'

+0

我想比较全的路线,因为如果我只比较最后一个值(这是我的解决方案此刻),只要网址的最后一部分在数据库中,我就可以输入任何网址。 – Fredrik