2016-05-14 3 views
1

Я разрабатываю веб-сайт, который рекламирует подержанные автомобили для продажи в codeigniter. Я хочу сделать счетчик посещений для каждой новости по методу в контроллере. Когда пользователь нажимает на новости, модальный текст этой новости открывается, и он должен добавить 1 в мой столбец hitCounter в базе данных. Я пробовал много кодов и способы сделать это, но он не работает. Если кто-то может предложить, что делать в этом случае. Заранее спасибо!Codeigniter: как сделать счетчик посещений для каждой новости

Вот код метода моего контроллера:

   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">&times;</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; 



    } 

ответ

0

Ваша функция модель должна быть что-то вроде этого

public function set_counter($id) 
{ 
    if($id>0) 
    { 
     $sql = "UPDATE avto SET hitCounter = hitCounter + 1 WHERE id = ".$id ; 
     $this->db->query($sql); 
    } 
} 
0

Шаг 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."'";