Базы данных PHP навигации - PullRequest
       13

Базы данных PHP навигации

0 голосов
/ 15 февраля 2012

Допустим, у нас есть следующие таблицы

Таблица Pages:

 id | short_name | long_name   | token
  1 |    Mail    | My mail box | mail
  2 | All mails  | All mails   | all
  3 | Inbox      | Inbox only  | inb
  4 | Users      | Users       | users
  5 | All users  | All users   | all

и таблица navigation:

 id | parent_id  | page_id    
  1 |    0       | 4 
  2 |    0       | 1  
  3 |    1       | 2 
  4 |    1       | 3       
  5 |    4       | 5   

Я долгое время работал только с идентификаторами страниц. Было легко найти детали страницы только с одним значением - $_GET['id'], потому что все идентификаторы страниц уникальны.

Теперь я хочу создать удобочитаемую (основанную на токене) навигационную систему.

Но есть одна проблема. Токены не всегда уникальны.

Например index.php?page=mail&subpage=all и index.php?page=users&subpage=all

Не можете понять, как найти short_name и long_name (или другую информацию о странице) для этих 2 страниц (по 2 - $_GET['page'] и $_GET['subpage'] или более переменных)?

Может, я ошибаюсь. Если вы так думаете, предложите свою идею и объясните. Спасибо заранее.

1 Ответ

0 голосов
/ 15 февраля 2012

Извините, если это не работает из коробки, но помогает ли это?

SELECT * FROM Pages
JOIN navigation ON Pages.id=navigation.page_id
WHERE navigation.parent_id=(SELECT id FROM Pages WHERE token={$page})
AND Pages.token={$subpage}
...