отображать объявления в информационных панелях пользователей по типам пользователей с помощью codeigniter - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел бы отображать объявления на инструментальных панелях разных пользователей.То, что я пытаюсь сделать, - это отобразить его на приборной панели, в которой пользователь может навсегда закрыть объявление на приборной панели, но происходит то, что, когда определенный пользователь закрывает вкладку объявлений на приборной панели, все объявления в одном и том жетип пользователя удаляется.Так что вы можете помочь мне выяснить, какой подход я должен использовать?Спасибо!

ПРОСМОТР

 <div class="clearfix"></div>
          <?php 
            if($announcements = $this->Bid_Model->fetchItems('announcements')):
            foreach ($announcements as $announce): 
              if($announce->user_type == 6){?>
            <div class="row">
              <div class="col-md-12 col-sm-12 col-xs-12">

              <div class="x_panel">
                <div class="x_title">
                  <h2>Announcement</h2>
                  <ul class="nav navbar-right panel_toolbox">
                    <li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
                    </li>
                    <li class="dropdown">
                      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"></a>
                    </li>
                    <li><a href="<?=base_url()?>Admin/deleteAnnouncement/<?=$announce->announcement_id?>" class="close-link"><i class="fa fa-close"></i></a>
                    </li>
                  </ul>
                  <div class="clearfix"></div>
                </div>

                <div class="x_content">

                <img src="<?php echo base_url().'uploads/';?>announcements/<?=$announce->image;?>" height="500" width="700">

                <h4><?=$announce->title?></h4>
                <h4><?=$announce->content?></h4>


                <div class="ln_solid"></div>
                  <!-- modals -->

                </div>
              </div>
            </div>
            </div>
             <?php } endforeach; endif; ?>
                  <!-- /modals -->
          <br />

КОНТРОЛЛЕР

public function announceSubmit(){
        $this->session->userdata('user_data');
        $id = $this->session->userdata('user_id');
        $title = $this->input->post('title', true);
        $users = $this->input->post('users', true);
        $content = $this->input->post('descr', true);

        $config['upload_path'] = './uploads/announcements/';
        $config['allowed_types'] = 'jpg|png|jpeg';
        $config['max_size'] = '25000';


        $this->load->library('upload',$config);

            if(!$this->upload->do_upload('image-source')){
                print_r($this->upload->display_errors());
            }else{

                $announce_image = $this->upload->data('file_name');

                $data = array(
                    'title' => $title,
                    'user_type' => $users,
                    'content' => $content,
                    'image' => $announce_image,
                    'user_id' => $id
                ); 

                $this->Bid_Model->insertItem('announcements', $data);
                redirect('dashboard');
            }
        }

        public function deleteAnnouncement(){
            $this->Bid_Model->updateItem('announcements',['user_type' => 0],['announcement_id'=>$this->uri->segment(3)]);
            redirect('dashboard');
        }

МОДЕЛЬ

function insertItem($table, $data = NULL){
        $this->db->insert($table, $data);
    }

    function insertItems($table,$data = array()){
        $this->db->insert_batch($table, $data);
    }


    function updateItem($table, $data, $var = NULL){
        if($var != NULL){
            $this->db->where($var);
        }
        $this->db->update($table, $data);
    }

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Во-первых, вы передаете 2-й и 3-й параметры в updateItem() в модели в виде массива.

Так что лучше сделать это $var = array(), а не $var = NULL

Во-вторых, вы удаляете объявления для конкретного пользователя, поэтому используйте идентификатор пользователя, чтобы удалить только одного пользователя

$id = $this->session->userdata('user_id')

function updateItem($table, $data, $var = array()){
    $id = $this->session->userdata('user_id');
    if(count($var) > 0){
        $this->db->where($var);
    }
    $this->db->where('user_id', $id);
    $this->db->update($table, $data);
}
0 голосов
/ 27 февраля 2019

Я предполагаю, что вы храните свои пользовательские данные в сеансе, поэтому
Контроллер:

public function deleteAnnouncement() {
        $this->Bid_Model->updateItem('announcements', ['user_type' => 0], ['announcement_id' => $this->uri->segment(3), 'user_id' => $this->session->userdata('user_id')]);
        redirect('dashboard');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...