Показывать публикации в соответствии с интересами пользователей

0

Я хочу показывать публикации в соответствии с интересами (по ключевым словам) пользователей.

ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ

id | username
5  | joelsilva

ТАБЛИЦА ПУБЛИКАЦИЙ

id | publication title
8  | The best car of the year!

ТАБЛИЦА ИНТЕРЕСОВ

id | username | interest
8  | joelsilva | car
9  | joelsilva | year

Он показывает все публикации с названием автомобиля и год на главной странице.

Я пробовал это:

$pubs = mysql_query(
    "SELECT * 
      FROM PUBLICATIONS 
      WHERE (interest LIKE '%".$interests."%')
      ORDER BY id desc"
) or die(mysql_error());

Это работает, но только с одним типом интереса в таблице. Если добавление более одного интереса ничего не показывает.

  • 0
    Пожалуйста, объясните, что вы имеете в виду. Какой алгоритм вы хотите использовать?
  • 0
    Многое будет зависеть от того, как вы заполняете $ интерес .... если вы просто объединяете ключевые слова вместе, вы получите% car year year%, поэтому, если у вас нет этих слов в таком порядке, между которыми ничего нет, тогда это не будет работать .. ... Если вы объедините% между ключевыми словами, это может работать лучше, или вам может потребоваться создать запрос, добавив условие ИЛИ для каждого из интересов.
Показать ещё 4 комментария
Теги:

1 ответ

1

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

SELECT DISTINCT
       p.*
       FROM publications p
            INNER JOIN interests i
                       ON p.title LIKE concat('%', i.interest, '%')
       WHERE username = ?
       ORDER BY p.id DESC;

(Кстати: вместо имени пользователя его идентификатор должен быть в таблице интересов. И вам, вероятно, следует взглянуть сюда, чтобы узнать, почему не следует использовать конкатенацию строк при построении запросов, а параметризованные запросы.)

  • 0
    Я использую этот код, вы можете стать $ в нужном месте ...? $ Request_username_user_cookie = $ requestusercookie ["username"]; $ request_interesses_total = mysql_query ("SELECT * FROM интересует ГДЕ user = '$ request_username_utilizador_cookie'"); $ request_interesses = mysql_fetch_assoc ($ request_interesses_total); $ Interesses = $ request_interesses ["интересно"]; $ pubs = mysql_query ("ВЫБЕРИТЕ * ИЗ ПУБЛИКАЦИЙ ГДЕ (интересно como '%". $ Interesses. "%') ORDER BY id desc") ou morrer (mysql_error ());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню