Пользовательская навигационная помощь - PullRequest
0 голосов
/ 12 февраля 2010

В настоящее время я пытаюсь создать навигацию, которая частично построена пользователем, в основном у пользователя есть основная навигация, в которой, если они нажимают на название категории, на странице для этой категории создается блок. Если они снова нажимают на ту же ссылку, блок удаляется со страницы, веб-сайт настраивается, чтобы запоминать, какие блоки пользователь выбрал там в последний вист, моя проблема в том, чтобы меню отображалось правильно.

Как работает меню, так это то, что основные навигационные ссылки создаются, и когда пользователь щелкает ссылку, эта ссылка получает класс «сохранено», когда он нажимает ее снова, класс «сохраняется» удаляется.

Когда пользователь возвращается на сайт, класс первичных навигационных ссылок должен сохранять класс, если отображается соответствующий блок.

Что мне нужно сделать, так это найти способ получить все ссылки для первичной навигации из базы данных и проверить, были ли они выбраны пользователем в их последнем висте.

Структура базы данных такая,

ЭТО ТАБЛИЦА, КОТОРАЯ ОТКРЫВАЕТ МОИ ПЕРВИЧНЫЕ ССЫЛКИ

   CREATE TABLE categoryTable (
  categoryId int(11) NOT NULL auto_increment,
  categoryTitle varchar(25) NOT NULL,
  categoryAbstract varchar(60) NOT NULL,
  categorySlug varchar(25) NOT NULL,
  categoryIsSpecial int(1) NOT NULL,
  categoryOnline int(1) NOT NULL,
  categoryDateCreated int(10) NOT NULL,
  dashboardUserId int(11) NOT NULL,
  PRIMARY KEY  (categoryId)
)

И ЭТО ТАБЛИЦА, КОТОРАЯ ХРАНИТ ИНФОРМАЦИЮ О БЛОКАХ, КОТОРЫЙ ПОЛЬЗОВАТЕЛЬ ОТКРЫЛ

    CREATE TABLE userMenuTable (
  menuEntryId int(11) NOT NULL auto_increment,
  categoryId int(11) NOT NULL,
  cookieId varchar(32) NOT NULL,
  PRIMARY KEY  (menuEntryId),
  KEY categoryId (categoryId,cookieId),
  KEY cookieId (cookieId)
)

Я попытался выполнить этот запрос, чтобы получить все категории, которых нет в userMenuTable, но он не работает,

SELECT *
FROM `categoryTable`
WHERE `categoryId`
NOT IN (
SELECT `userMenuTable`.`categoryId`
FROM (`userMenuTable`)
LEFT JOIN `categoryTable` ON 
`categoryTable`.`categoryId` = `userMenuTable`.`categoryId`
WHERE `userMenuTable`.`cookieId` = '{$cookieId}')

Я, очевидно, делаю что-то не так, может кто-нибудь пролить свет на мою проблему?

1 Ответ

1 голос
/ 12 февраля 2010

Почему вы используете NOT IN в вашем запросе выше? Кажется, IN было бы более уместным. В любом случае, вот более простой / эффективный запрос, который должен работать:

SELECT cat.*
FROM userMenuTable user
LEFT JOIN categoryTable cat ON cat.categoryId = user.categoryId
WHERE user.cookieId = '{$cookieId}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...