Перейти к содержимому


Пользователь месяца
ShowPrint ShowPrint 1-й за Сентябрь
Очков активности: 283 2 темы, 21 сообщение, 7 баллов репутации
Сайт: ShowPrint.ru
ТОП самых активных за этот месяц
  • Фотография Medvedoc
    #1

    Medvedoc
    Очков активности: 462 8 тем, 53 сообщения, 4 балла репутации

  • Фотография ShowPrint
    #2

    ShowPrint (ShowPrint.ru)
    Очков активности: 300 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #3

    BLIK
    Очков активности: 210 Вне конкурса за определение пользователя месяца

  • Фотография Игорь Ку
    #4

    Игорь Ку (dudesday.ru)
    Очков активности: 108 4 темы, 6 сообщений, 4 балла репутации

  • Фотография WGN
    #5

    WGN (worldgamenews.com)
    Очков активности: 84 Вне конкурса за определение пользователя месяца

  • Фотография Ixman
    #6

    Ixman (o5cat.ru)
    Очков активности: 72 0 тем, 16 сообщений, 3 балла репутации

  • Фотография Алексей111
    #7

    Алексей111 (xvideo24.ru)
    Очков активности: 66 8 тем, 20 сообщений, 1 балл репутации

  • Фотография yuran
    #8

    yuran (yurbol.ru)
    Очков активности: 37.5 1 тема, 22 сообщения, 1 балл репутации

  • Фотография Zevss
    #9

    Zevss (domles43.ru)
    Очков активности: 22.5 2 темы, 9 сообщений, 1 балл репутации

  • Фотография falka
    #10

    falka (mygoodjob.ru)
    Очков активности: 16.5 3 темы, 2 сообщения, 1 балл репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 26.09.2018
  • Яндекс выдача: 18.10.2018
Топ 5 участников по репутации


Вывод статьи в нескольких категориях

#1 bo4kov

bo4kov
  • Неактивные
  • 26 сообщений
  • Репутация: 0
0

Отправлено 05 May 2015 - 16:57

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

В общем вывод статьи (которая относится к одной категории) работает, вот код: 

$category = 1; // id категории 
$query = "(SELECT * FROM `articles` WHERE cat_articles = $category)"; // cat_articles - id категории к которой относится статья 
$res = mysql_query($query); 
$products = array(); 
 while($row = mysql_fetch_assoc($res)){ 
   $products[] = $row; 
} 
print_r($products);

А как сделать вывод статьи которая относится к нескольким категориям, например cat_articles = 1|5|20   ? 
Здесь нужно использовать explode(). Но как все это связать с sql запросом? может нужно делать два запроса?


 

 

  • 0

#2 ShowPrint

ShowPrint
  • Пользователь PRO
  • 3049 сообщений
  • Репутация: 835

Отправлено 05 May 2015 - 19:49

Попробуйте cat_articles заключать в "спец.символы" с двух сторон, т.е. для Вашего примера: 

cat_articles = |1|5|20|

 и запрос сформировать следующим образом:

$query = "(SELECT * FROM 'articles' WHERE cat_articles LIKE '|'.$category.'|')";

Если не получится, то почитайте про LIKE в рунете, давно пользовался - точно не помню... В таких случаях точно используется LIKE, сомнения лишь в том как правильно прописать:

'|'.$category.'|'

  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#3 bo4kov

bo4kov
    Topic Starter
  • Неактивные
  • 26 сообщений
  • Репутация: 0

Отправлено 06 May 2015 - 15:17

@ShowPrint, спасибо большое. Насчет оформления, то вот так у меня работает:

$query = "(SELECT * FROM 'articles' WHERE cat_articles LIKE ('%|" .$category. "|%')";

  • 0

#4 ShowPrint

ShowPrint
  • Пользователь PRO
  • 3049 сообщений
  • Репутация: 835

Отправлено 06 May 2015 - 15:25

@bo4kov, вполне логично, почему нет... Рад что смог помочь... Не забывайте "спец.символы" ставить с двух сторон во избежание недоразумений...


  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#5 Ixman

Ixman
  • Пользователь PRO
  • 2903 сообщений
  • Репутация: 745

Отправлено 06 May 2015 - 15:29

@ShowPrint,@bo4kov,  LIKE вообще нужно исключить из своего рациона, это гадость будет сильно тормозить при больших объёмах информации  и посещаемости

@bo4kov, а так подробнее бы о том как ваши id храняться, и вообще точнее изложите суть. А вообще делается элементарно

WHERE cat_articles IN ('1','5','20') ... 

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


  • 0


#6 bo4kov

bo4kov
    Topic Starter
  • Неактивные
  • 26 сообщений
  • Репутация: 0

Отправлено 06 May 2015 - 15:29

@Ixman, ну а другой способ решения моей задачи  - это только создавать дополнительную таблицу с id статьи и id категории, а потом с помощью JOIN выводить, так? или есть еще способы? 


  • 0

#7 Ixman

Ixman
  • Пользователь PRO
  • 2903 сообщений
  • Репутация: 745

Отправлено 06 May 2015 - 15:35

@bo4kov, да таблица с ID категории и ID статьи но выводится тем же способом что и я показал выше, только там вместо перечисления ID sql запрос, выглядит как-то так

WHERE cat_articles IN (SELECT `cat_id` FROM `article2category` WHERE `art_id` = '1') ... 

  • 0


#8 bo4kov

bo4kov
    Topic Starter
  • Неактивные
  • 26 сообщений
  • Репутация: 0

Отправлено 06 May 2015 - 15:35

@Ixman,  Ну допустим id категории в статье хранится вот в таком виде 1|2|3|5. В общем у меня пока тестовая таблица так что все можно будет изменить. Так что все таки лучше использовать доп. таблицу? или вложенный запрос IN() подойдет? Что быстрее работает и не тормозит сайт?


  • 0

#9 Ixman

Ixman
  • Пользователь PRO
  • 2903 сообщений
  • Репутация: 745

Отправлено 06 May 2015 - 15:36

Данный способ работает безупречно, опробовано лично мное не раз


  • 0


#10 bo4kov

bo4kov
    Topic Starter
  • Неактивные
  • 26 сообщений
  • Репутация: 0

Отправлено 06 May 2015 - 15:39

@Ixman, спасибо, ну тогда пойду создавать таблицу  


  • 0

robot

robot
  • Пользователь PRO
  • 2652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru