[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Счётчик кликов на php с последующим выводом(Codeig
semjaza
Делаю сайт и передо мной стала такая задача-сделать счётчик переходов по ссылке(чтобы считать кол-во просмотров статьи) и выводить кол-во в виде внутри блока. Работаю с Codeigniter. Соответственно имеется :
1.Контроллер Articles

class Articles extends CI_Controller {

function index()
{
$this->load->library('pagination');
$config['base_url'] = base_url().'index.php/articles/index/';
$config['total_rows'] = $this->db->count_all('articles');
$config['per_page'] = '2';
$config['full_tag_open'] = "<div class='pagination'>";
$config['full_tag_close'] = '</div>';
$config['first_link'] = 'Первая';
$config['last_link'] = 'Последняя';
$config['prev_tag_open'] = "<div class='prev_1'>";
$config['prev_tag_close'] = '</div>';
$config['next_tag_open'] = "<div class='prev_4'>";
$config['next_tag_close'] = '</div>';
$config['last_tag_open'] = "<div class='prev_2'>";
$config['last_tag_close'] = '</div>';
$config['first_tag_open'] = "<div class='prev_3'>";
$config['first_tag_close'] = '</div>';
$config['num_tag_open'] = "<div class='prev_5'>";
$config['num_tag_close'] = '</div>';
$config['cur_tag_open'] = "<div class='prev_6'>";
$config['cur_tag_close'] = '</div>';

$this->pagination->initialize($config);

$this->load->model('articles_model');
$this->load->helper('text');
$data['pages'] = $this->pages_model->get_pages();
$data['pages_dop'] = $this->pages_model->get_pages_dop();
$data['pages_dop2'] = $this->pages_model->get_pages_dop2();
$data['pages_info'] = $this->pages_model->get_pages_info('articles');
$data['categories'] = $this->pages_model->get_cat();
$data['articles'] = $this->articles_model->get_all_articles($config['per_page'],$this->uri->segment(3));
$data['latest_articles'] = $this->pages_model->get_latest_articles();
$data['user'] = $this->session->userdata('user');
$data['user_info']['status'] = $this->session->userdata('status');
$data['user_info']['avatar'] = $this->session->userdata('avatar');
$name = 'articles';
$this->template->page_view($data,$name);
}

function cat($cat)
{
$this->load->library('pagination');
$this->load->model('articles_model');
$this->load->helper('text');
$data['pages'] = $this->pages_model->get_pages();
$data['pages_dop'] = $this->pages_model->get_pages_dop();
$data['pages_dop2'] = $this->pages_model->get_pages_dop2();
$data['pages_info'] = $this->pages_model->get_pages_info('articles');
$data['categories'] = $this->pages_model->get_cat();
$data['articles'] = $this->articles_model->get_cat_articles($cat);
$data['latest_articles'] = $this->pages_model->get_latest_articles();
$data['user'] = $this->session->userdata('user');
$data['user_info']['status'] = $this->session->userdata('status');
$data['user_info']['avatar'] = $this->session->userdata('avatar');
$name = 'articles';
$this->template->page_view($data,$name);
}

}


2.Модель Article

class Articles_model extends CI_Model {

function get_all_articles($num, $offset)
{
$this->db->order_by('id','desc');
$query = $this->db->get('articles',$num, $offset);
return $query->result_array();
}

function get_cat_articles($cat)
{
$this->db->order_by('id','desc');
$this->db->where('category',$cat);
$query = $this->db->get('articles');
return $query->result_array();
}

function get_article($title)
{
$this->db->where('title_en',$title);
$query = $this->db->get('articles');
return $query->row_array();
}

function add_comment($add)
{
$this->db->insert('comments',$add);
}

function get_comments($title)
{
$this->db->order_by('id','desc');
$this->db->where('note_id',$title);
$query = $this->db->get('comments');
return $query->result_array();
}

}


3. Вид articles_view

<div class="middle">
<!--Контейнер-->
<div class="container">
<main
class="content"><!--Контент-->
<?php foreach($articles as $item):?>
<div
class="articles">
<div
class="view_stat"><?=$item['views'];?></div><!--Колличество просмотров-->
<div class="zag_stat"><a href="<?=base_url();?>index.php/article/<?=$item['title_en'];?>"><?=$item['title'];?></a></div>
<div
class="author_stat"><div><?=$item['author'];?></div></div>
<div
class="date_stat"><div><?=$item['date'];?></div></div>
<div
class="img_stat"><img src="<?=base_url();?>img/mini_img/<?=$item['mini_img'];?>" alt="<?=$item['title'];?>"/></div>
<?
$string = $item['text'];?>
<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>
<div
class="both"></div>
</div>
<?php
endforeach;?>
<div
class="both"></div>
<div
class="pag"><?php echo $this->pagination->create_links();?></div>
</main>
</div>



Подскажите логику скрипта.В URL передаётся title_en каждой статьи из поля в таблице.

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

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

Вот код:
1.Вид

<a id="add_v" href="<?=base_url();?>index.php/article/<?=$item['title_en'];?>">Читать далее→</a></span></p></div>


2.Модель

function add_views($add_v)
{
$click = $this->db->where('views',$add_v);
$new_click = $click + 1;
$this->db->insert('articles',$new_click);
}


3.Контроллер

if($this->input->post('add_v'))
{
$this->articles_model->add_views($add_v);
}


Подскажите что не так...сайт пропадает)Профи хэлп


Структура таблицы базы
user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.