За последние 24 часа нас посетили 18074 программиста и 1648 роботов. Сейчас ищут 1272 программиста ...

Счётчик кликов на php с последующим выводом(Codeigniter)

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

  1. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Делаю сайт и передо мной стала такая задача-сделать счётчик переходов по ссылке(чтобы считать кол-во просмотров статьи) и выводить кол-во в виде внутри блока. Работаю с Codeigniter. Соответственно имеется :
    1.Контроллер Articles
    Код (Text):
    1.  
    2. class Articles extends CI_Controller {
    3.    
    4.     function index()
    5.     {
    6.         $this->load->library('pagination');
    7.         $config['base_url'] = base_url().'index.php/articles/index/';
    8.         $config['total_rows'] = $this->db->count_all('articles');
    9.         $config['per_page'] = '2';
    10.         $config['full_tag_open'] = "<div class='pagination'>";
    11.         $config['full_tag_close'] = '</div>';
    12.         $config['first_link'] = 'Первая';
    13.         $config['last_link'] = 'Последняя';
    14.         $config['prev_tag_open'] = "<div class='prev_1'>";
    15.         $config['prev_tag_close'] = '</div>';
    16.         $config['next_tag_open'] = "<div class='prev_4'>";
    17.         $config['next_tag_close'] = '</div>';
    18.         $config['last_tag_open'] = "<div class='prev_2'>";
    19.         $config['last_tag_close'] = '</div>';
    20.         $config['first_tag_open'] = "<div class='prev_3'>";
    21.         $config['first_tag_close'] = '</div>';
    22.         $config['num_tag_open'] = "<div class='prev_5'>";
    23.         $config['num_tag_close'] = '</div>';
    24.         $config['cur_tag_open'] = "<div class='prev_6'>";
    25.         $config['cur_tag_close'] = '</div>';
    26.  
    27.         $this->pagination->initialize($config);
    28.        
    29.         $this->load->model('articles_model');
    30.         $this->load->helper('text');
    31.         $data['pages'] = $this->pages_model->get_pages();
    32.         $data['pages_dop'] = $this->pages_model->get_pages_dop();
    33.         $data['pages_dop2'] = $this->pages_model->get_pages_dop2();
    34.         $data['pages_info'] = $this->pages_model->get_pages_info('articles');
    35.         $data['categories'] = $this->pages_model->get_cat();
    36.         $data['articles'] = $this->articles_model->get_all_articles($config['per_page'],$this->uri->segment(3));
    37.         $data['latest_articles'] = $this->pages_model->get_latest_articles();
    38.         $data['user'] = $this->session->userdata('user');
    39.         $data['user_info']['status'] = $this->session->userdata('status');
    40.         $data['user_info']['avatar'] = $this->session->userdata('avatar');
    41.         $name = 'articles';
    42.         $this->template->page_view($data,$name);
    43.     }
    44.    
    45.     function cat($cat)
    46.     {
    47.         $this->load->library('pagination');
    48.         $this->load->model('articles_model');
    49.         $this->load->helper('text');
    50.         $data['pages'] = $this->pages_model->get_pages();
    51.         $data['pages_dop'] = $this->pages_model->get_pages_dop();
    52.         $data['pages_dop2'] = $this->pages_model->get_pages_dop2();
    53.         $data['pages_info'] = $this->pages_model->get_pages_info('articles');
    54.         $data['categories'] = $this->pages_model->get_cat();
    55.         $data['articles'] = $this->articles_model->get_cat_articles($cat);
    56.         $data['latest_articles'] = $this->pages_model->get_latest_articles();
    57.         $data['user'] = $this->session->userdata('user');
    58.         $data['user_info']['status'] = $this->session->userdata('status');
    59.         $data['user_info']['avatar'] = $this->session->userdata('avatar');
    60.         $name = 'articles';
    61.         $this->template->page_view($data,$name);
    62.     }
    63.        
    64. }
    2.Модель Article
    Код (Text):
    1.  
    2. class Articles_model extends CI_Model {
    3.  
    4.     function get_all_articles($num, $offset)
    5.     {
    6.         $this->db->order_by('id','desc');
    7.         $query = $this->db->get('articles',$num, $offset);
    8.         return $query->result_array();
    9.     }
    10.    
    11.     function get_cat_articles($cat)
    12.     {
    13.         $this->db->order_by('id','desc');
    14.         $this->db->where('category',$cat);
    15.         $query = $this->db->get('articles');
    16.         return $query->result_array();
    17.     }
    18.    
    19.     function get_article($title)
    20.     {
    21.         $this->db->where('title_en',$title);
    22.         $query = $this->db->get('articles');
    23.         return $query->row_array();
    24.     }
    25.    
    26.     function add_comment($add)
    27.     {
    28.         $this->db->insert('comments',$add);
    29.     }
    30.    
    31.     function get_comments($title)
    32.     {
    33.         $this->db->order_by('id','desc');
    34.         $this->db->where('note_id',$title);
    35.         $query = $this->db->get('comments');
    36.         return $query->result_array();
    37.     }
    38.    
    39. }
    3. Вид articles_view
    Код (Text):
    1.  
    2. <div class="middle">
    3.         <!--Контейнер-->
    4.         <div class="container">
    5.             <main class="content"><!--Контент-->
    6.                 <?php foreach($articles as $item):?>
    7.                     <div class="articles">
    8.                         <div class="view_stat"><?=$item['views'];?></div><!--Колличество просмотров-->
    9.                         <div class="zag_stat"><a href="<?=base_url();?>index.php/article/<?=$item['title_en'];?>"><?=$item['title'];?></a></div>
    10.                         <div class="author_stat"><div><?=$item['author'];?></div></div>
    11.                         <div class="date_stat"><div><?=$item['date'];?></div></div>
    12.                         <div class="img_stat"><img src="<?=base_url();?>img/mini_img/<?=$item['mini_img'];?>" alt="<?=$item['title'];?>"/></div>
    13.                         <?$string = $item['text'];?>
    14.                         <div class="text_stat"><p><?=$string = character_limiter($string,780);?><span class="chitat"><a href="<?=base_url();?>index.php/article/<?=$item['title_en'];?>">Читать далее→</a></span></p></div>
    15.                         <div class="both"></div>
    16.                     </div>
    17.                 <?php endforeach;?>
    18.                 <div class="both"></div>
    19.                 <div class="pag"><?php echo $this->pagination->create_links();?></div>
    20.             </main>
    21.         </div>
    Подскажите логику скрипта.В URL передаётся title_en каждой статьи из поля в таблице.

    Что-то вроде того-в контроллере должно быть событие при нажатии на ссылку(счётчик), в модели происходит обновление строки views, в виде вывод переменной(уже есть)?
    Я не ошибаюсь?
    п.с. сильно не серчайте -я новичок)первый динамический сайт...

    Проделал следующее
    -В виде добавил селектор(id) для ссылки при клике на которую запуститься функция из модели;
    -В модели добавил функцию которая добавляет клик к значению в базе;
    -В контроллере создал условие что при клике на ссылку с селектором add_v происходит запуск функции из модели;

    Вот код:
    1.Вид
    Код (Text):
    1.  
    2. <a id="add_v" href="<?=base_url();?>index.php/article/<?=$item['title_en'];?>">Читать далее→</a></span></p></div>
    2.Модель
    Код (Text):
    1.  
    2. function add_views($add_v)
    3.     {
    4.         $click = $this->db->where('views',$add_v);
    5.         $new_click = $click + 1;
    6.         $this->db->insert('articles',$new_click);
    7.     }
    3.Контроллер
    Код (Text):
    1.  
    2. if($this->input->post('add_v'))
    3.         {
    4.             $this->articles_model->add_views($add_v);
    5.         }
    Подскажите что не так...сайт пропадает)Профи хэлп


    Структура таблицы базы
    [​IMG]
     
  2. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Так что-то не работает?
     
  3. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Так в чем собственно вопрос то? А то я уже чуть не подумал что вы решили похвалиться своим кодом =)
     
  4. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Извиняюсь за свою истерику...вообщем не добавляются просмотры) может функцию в модели неправильно написал? Или в контроллер нужно что-то передать перед условием?или условие написано неверно ?подскажите )
     
  5. metadon

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

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

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Что то я часто на форуме стал видеть подобные сообщения =)
     
  7. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    А как по другому помочь? Так человек в своём скрипте легко может найти ошибку. Когда-то он же должен познать основы отладки.
     
  8. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Ну спасибо за совет...будем пробовать)
     
  9. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Один только вопрос-я вообще правильно строю условие в контроллере? так можно обращаться к ссылке(через её id)?у input есть атрибут name,который указывается в условии, а у ссылки?вид:
    Код (Text):
    1. <a id="add_v" href="<?=base_url();?>index.php/article/<?=$item['title_en'];?>">Читать далее→</a>
    условие в контроллере:
    Код (Text):
    1. if($this->input->post('add_v'))
     
  10. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    В смысле???:
    Да и к инпуту с PHP вы никак не обратитесь =)
     
  11. semjaza

    semjaza Новичок

    С нами с:
    22 окт 2013
    Сообщения:
    40
    Симпатии:
    0
    Тогда у меня резонный вопрос-то что в скобках после post-'add_v' это name инпута обычно или нет?я это читаю так-если нажата кнопка 'add_v', то выполнить функцию из модели...так ведь?только у меня ссылка,а не кнопка...правильно?

    Добавлено спустя 18 секунд:
    ))

    Добавлено спустя 19 минут 48 секунд:
    Понял что чушь пишу)input это класс)
     
  12. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Ну что я вам скажу, читайте ))