За последние 24 часа нас посетили 55583 программиста и 1719 роботов. Сейчас ищут 882 программиста ...

Посчитать кол-во постов в категориях

Тема в разделе "PHP для новичков", создана пользователем leshiy, 1 мар 2015.

  1. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Есть код который считает кол-во промодерированных постов в каждой категории и выводит сумму напротив данной категории.
    Нужно посчитать кол-во не промодерированных постов и так же вывести их напротив данной категории.
    Пример:
    категории | промодерированные посты | не промодерированные посты
    видео ------------------------ 26 --------------------------------------------2
    картинки --------------------65 --------------------------------------------8
    Код (Text):
    1.                     <?
    2.             $result2 = mysql_query("select `categories`.*, count(`date`.`id`) as date
    3. from `categories`
    4. left join `date` on `date`.`cat` = `categories`.`id`
    5. WHERE `date`.`moderation`=1
    6. group by `categories`.`id`");
    7. if (!$result2)
    8. {exit(mysql_error());}
    9. if (mysql_num_rows($result2) > 0)
    10. {$myrow2 = mysql_fetch_array($result2);
    11. do
    12. {
    13. echo '<li class="m_naz">'.$myrow2["id"].' - <a title="'.$myrow2["tit"].'" href="'.$myrow2["tit"].'"><strong>'.$myrow2["tit"].'<strong></a> - '.$myrow2["date"].'</li>';}
    14. while ($myrow2 = mysql_fetch_array($result2));}
    15. else{exit();}
    16.      ?>  
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    видимо
    WHERE `date`.`moderation`=0
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    leshiy, ты хочешь получить оба числа в одном запросе? Почитай про функцию count() - она считает количество строк у которых выражение в скобках не равно null. Используй это:
    count(if(blablabla, 1, null)) или
    count(nullif(a, b))
     
  4. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Вот так получилось.
    Код (Text):
    1.                $result2 = mysql_query("    SELECT `categories`.*, count(`date`.`id`) AS date,
    2.     count(IF(date.date = CURDATE(),1,NULL)) `segodny`
    3.     FROM `categories`
    4.     LEFT JOIN `date` ON `date`.`cat` = `categories`.`id`
    5.     WHERE `date`.`moderation`=1
    6.     GROUP BY `categories`.`id`");
    Одна проблема выводятся 0 в категориях где сегодня ничего не добавлялось.Можно их как нибудь убрать?
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    странно, ты вроде спрашивал про одни условия подсчета, а написал другие… ну да ладно.

    ну а зачем ты LEFT JOIN использовал?! что просил, то и получил. почитай маленько про соединения