Я разрабатываю веб-сайт, который рекламирует подержанные автомобили для продажи в codeigniter. Я хочу сделать счетчик посещений для каждой новости по методу в контроллере. Когда пользователь нажимает на новости, модальный текст этой новости открывается, и он должен добавить 1 в мой столбец hitCounter в базе данных. Я пробовал много кодов и способы сделать это, но он не работает. Если кто-то может предложить, что делать в этом случае. Заранее спасибо!
Здесь код моего контроллера:
public function clickCounter($id) { $this->news_model->set_counter($id); }
Здесь мой код просмотров:
<?php foreach ($news as $news_item): ?> <div class="font-icon-list col-lg-3 col-md-3 col-sm-4 col-xs-12" style="padding: 15px;" onclick="document.getElementById('<?php echo $news_item['id']; ?>').style.display='block'; "> <div class="font-icon-detail"><img src="<?php echo base_url(); echo "images/thumb/images/"; echo $news_item['image_path']; ?>" alt="" style=" max-width: 220px; height:100%;"> <input type="text" value="<?php echo $news_item['location']; echo " - "; echo $news_item['price']; ?>"> <input type="text" value="<?php echo $news_item['telno']; ?>"> </div> </div> <div id="<?php echo $news_item['id']; ?>" class="w3-modal"> <div class="w3-modal-content w3-animate-zoom" > <header class="w3-container"> <span onclick="document.getElementById('<?php echo $news_item['id']; ?>').style.display='none'" class="w3-closebtn">×</span> </header> <div class="row"> <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12" style="background-color: white; padding:0;"> <table class="table table-hover table-striped" style="white-space:wrap; overflow:hidden;"> <tr> <td colspan="2" class="text-center"><?php echo $news_item['title']; ?></td> </tr> <tr> <td>Сана</td><td><?php echo $news_item['date']; ?></td> </tr> <tr > <td>Нархи</td><td><?php echo $news_item['price']; ?></td> </tr> <tr> <td>Исми ва шарифи</td><td><?php echo $news_item['name']; ?></td> </tr> <tr> <td>Телефон рақам</td><td><?php echo $news_item['telno']; ?></td> </tr> <tr> <td colspan="2" class="text-center">Қўшимча маълумот:</td> </tr> <tr> <td class="text-justify" colspan="2"><?php echo $news_item['info']; ?></td> </tr> </table> </div> </div> </div> </div> <?php endforeach; ?>
Вот мой код модели:
public function set_counter($id) { $sql = "SELECT * FROM avto WHERE id = ?" ; $query = $this->db->query($sql, $id); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { $data['hitCounter'] = $row['hitCounter']; } $numHits= $data['hitCounter']; $numHits = $numHits + 1; $data = array( 'hitCounter' => $numHits, ); $this->db->where('id', $id); $this->db->update('avto', $data); } return false; }
Ваша модель должна быть чем-то вроде этого
public function set_counter($id) { if($id>0) { $sql = "UPDATE avto SET hitCounter = hitCounter + 1 WHERE id = ".$id ; $this->db->query($sql); } }
Шаг 1: Функция контроллера вызова onClick
<button type="button" class="btn btn-success" onclick="<?php echo base_url()?>controller/function">Click Here</button>
Шаг 2. В контроллере определите соответствующую функцию и добавьте запрос на обновление.
вам нужно обновить счет в таблице, потому что в режиме реального времени счетчик не может быть сохранен в сеансе, поскольку несколько пользователей используют веб-сайт
теперь добавьте таблицу с именем tbl_count и примените ниже запроса
$qry = "UPDATE `tbl_count` SET `hits`=`hits` +1 WHERE `news_id` = '".$news_id."'";