За последние 24 часа нас посетили 17528 программистов и 1724 робота. Сейчас ищут 854 программиста ...

Счётчик статей в категории на Codeigniter

Тема в разделе "Прочие вопросы по PHP", создана пользователем semjaza, 20 ноя 2014.

  1. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Пишу небольшой блог...работаю с Codeigniter...есть задумка и часть реализации по вопросу подсчета статей в категориях и вывода их в блоке(рядом с категорией)...
    Получилось следующее:
    В модели написал метод подсчёта примерно так-
    function count_art (что передается?)
    {
    $this->db->where('category',что передается?);
    $this->db->from('articles');
    return $query->db->count_all_results();
    }
    В виде right_block_view выводятся категории в цикле....какую переменную мне нужно передать в метод чтоб выводить значение для каждой категории своё?
     
  2. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Смотри у тебя есть категории, по простому id и category_name
    сделай ещё одну колонку для категорий, например count_articles и там храни кол-во статей в этой категории
    а при добавлении статьи в категорию прибавляй значение count_articles при удалении уменьшай и т.д.
     
  3. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Спасибо за ответ вот допустим теперь структура моей таблицы с категориями:

    id title title_en keywords count_articles
    1 Логотипы logotype ключ 0
    2 Веб-дизайн web ключ 0
    3 Полиграфия poly ключ 0
    4 Анимация anim ключ 0
    5 Фирстиль firstyle ключ 0

    И есть для каждой категории свой метод в модели(который подсчитывает кол-во статей в категории)
    Например :
    Код (Text):
    1. function count_art ()
    2. {
    3. $this->db->where('category','logotype');
    4. $this->db->from('articles');
    5. return $query->$this->db->count_all_results();
    6. }
    Как мне теперь занести результат работы данного метода(наверное через update) в ячейку таблицы(count_articles-поле logotype)???
    Заранее спасибо за ответ....
     
  4. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
  5. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Про update я знаю...а что подставлять вместо числа?то что получил в функции подсчёта? через что?переменная?

    Добавлено спустя 24 минуты 58 секунд:
    Код (Text):
    1. function get_count_art()
    2.     {
    3.         $this->db->where('category','logotype');
    4.         $this->db->from('articles');
    5.         return $query = $this->db->count_all_results();
    6.     }
    7.    
    8.     function update_count_articles()
    9.     {
    10.         $this->db->update('categories', $this, array('count_articles' => $this->articles_model->get_count_art()));
    11.     }

    Если сделать что-то такое то выдаст ошибку-


    A Database Error Occurred

    You must use the "set" method to update an entry.


    Filename: Y:\home\sait1.loc\www\system\database\DB_active_rec.php

    Line Number: 1272
     
  6. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    А что тебе нужно записать в базу? То и подставляй.
    На счёт ошибки, то читай документацию, как там советуют обновлять запись.
    В чём конкретно проблема при чтении документации?
     
  7. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Спасибо за ответ...почитаю документацию)
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Запрос смотри. Ты даже не взглянул. Ошибка про запрос, а ты даже не посмотрел
     
  9. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Так не делают. Не заносят подсчет строк бд в бд, в этом нет смысла. Чтобы узнать не изменилось ли количество статей - надо еще раз посчитать чтобы сравнить. А зачем тогда сохранять - посчитали - сразу выводите. Иначе вносите новый счет при каждом добавлении\удалении статьи через админку.

    А нафига вы мучаете объекты для операции типа

    update table set column=value

    BDSM?
     
  10. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Как сделать правильно?максимально правильно...чтоб потом 10 не переделывать...
     
  11. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Идеал не достижим. Просто храни кол-во статей в категории и уменьшай это количество при удалении статьи, а при добавлении увеличивай.

     
  12. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Ок...спасибо за ответ)