Помогите плиз написать модуль

 
Посетитель
small user social cms
Сообщений: 26
Привет. Начал изучать php+mysql по необходимости, дошёл до запросов с JOIN-ами, и не могу с ними разобраться.

Короче, суть вопроса (версия инстант 1.10.6):
Пишу модуль, который выводит все рубрики объявлений списком (вложенность не важна) по алфавиту. В module.php пишу
Код PHP:
  1. function selectCatBoard($cfg){
  2. $inCore = cmsCore::getInstance();
  3. $inDB = cmsDatabase::getInstance();
  4. $sql = "SELECT * FROM cms_board_cats ORDER BY title ASC";
  5. $result = $inDB->query($sql) ;
  6. if ($inDB->num_rows($result)){
  7. while($item = $inDB->fetch_assoc($result)){
  8. $massiv[] = $item;
  9. }
  10. }
  11. return $massiv;
  12. }
всё работает, нормально выводятся категории.

Теперь надо к каждой категории добавить счётчик, сколько там объявлений. И вот тут я так понимаю, нужен JOIN с cms_board_items, а как правильно его написать - я ни бум-бум. Даже не буду приводить синтаксис того, что я пробовал делать, чтоб не ржали надо мной)))

Просто ткните носом, и желательно поясните на человечьем языке, почему именно так. Заранее спасибо.
Редактировалось: 1 раз (Последний: 6 октября 2016 в 09:56)
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проектаКубок зрительских симпатий
Сообщений: 3090
Поищите примеры в файлах по запросу "content_count"

там и запросы в базу есть и циклы.
Реклама
cms
Посетитель
small user social cms
Сообщений: 26
Jestik:
Поищите примеры
я, думаете, не искал? Со вчера мучаюсь) привык сначала разбираться сам, только потом помощи просить. Я ж говорю:
Тэм:
Даже не буду приводить синтаксис того, что я пробовал делать, чтоб не ржали надо мной)))
запросы видел, но на примере не получилось сделать. Видимо, пока знаний не хватает. Потому и прошу:
Тэм:
Просто ткните носом, и желательно поясните на человечьем языке, почему именно так
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проектаКубок зрительских симпатий
Сообщений: 3090
та я просто сам начинающий, делаем самопис, недавно юзали джойны, но они для меня что то туго даються - долго въезжаю с формированием запроса.

та и БД первой ветки нету, надо устанавливать смотреть
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Как то так
Код PHP:
  1. function selectCatBoard($cfg){
  2. $inCore = cmsCore::getInstance();
  3. $inDB = cmsDatabase::getInstance();
  4. $sql = "SELECT * FROM cms_board_cats ORDER BY title ASC";
  5. $result = $inDB->query($sql) ;
  6. if ($inDB->num_rows($result)){
  7. while($item = $inDB->fetch_assoc($result)){
  8. $count = "SELECT COUNT(*) FROM cms_board_items WHERE category_id = ".$item['id'].""
  9. $massiv[] = $item;
  10. }
  11. }
  12. return $massiv;
  13. }
И тогда в $massiv['count'] должно быть, что вам надо.

Но если хотите с JOIN, то как то так

Код PHP:
  1. SELECT cat.*, COUNT(it.category_id) as num_item
  2. FROM cms_board_cats cat
  3. LEFT JOIN cms_board_items it ON it.category_id=cat.id
  4. GROUP BY cat.id
Не проверял, но суть такая.
Редактировалось: 1 раз (Последний: 6 октября 2016 в 11:02)
Посетитель
small user social cms
Сообщений: 26
Lora, спасибо, общими усилиями (вы, я и один парень со стаковерфлов))) у меня получилось
Код PHP:
  1. select bc.title, bc.id,
  2. count(bi.id) as count
  3. from cms_board_cats bc left join cms_board_items bi
  4. on bc.id = bi.category_id
  5. group by bc.title order by bc.title asc
Тему закрываю! Пошёл учиться дальше.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.