【问题标题】:display announcements in user's dashboards per user type using codeigniter使用 codeigniter 在每个用户类型的用户仪表板中显示公告
【发布时间】:2019-02-27 02:52:42
【问题描述】:

我想在不同用户的仪表板中显示公告。我想要做的是将它显示在仪表板中,用户可以在仪表板中永久关闭公告,但是当某个用户关闭仪表板中的公告选项卡时,所有公告都在同一正在删除用户类型。那么你能帮我弄清楚我应该使用什么方法吗?谢谢!

查看

 <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);
    }

【问题讨论】:

  • 我认为 [如果可能的话] 你还需要添加一个带有 user_id 的 where 子句

标签: php html css database codeigniter


【解决方案1】:

我假设您将用户相关数据存储在会话中,所以
控制器:

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');
    }

【讨论】:

    【解决方案2】:

    首先,您将第二个和第三个参数作为数组传递给模型中的updateItem()

    所以最好这样做$var = array()而不是$var = NULL

    其次,您要删除特定用户的公告,因此请使用用户 ID 仅删除一个用户

    $id = $this-&gt;session-&gt;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);
    }
    

    【讨论】:

    • 我已经按照你说的做了,但还是不行。我认为这是因为我的公告表中没有任何 user_id 列。您对如何在提交表单以创建公告时传递所有用户 ID 有任何想法吗?我
    • @Jephte 回答我有一个问题,谁在创建公告?用户还是管理员?
    • 创建公告的是管理员@danish ali
    • @Jephte 在我的脑海中有两个选择,因为我不知道您的项目/任务的整个流程。如果公告是针对某个特定用户的,则在其中添加用户 ID。如果是针对多个用户,则使用这些学生的所有 ID
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2021-03-06
    • 2017-05-24
    • 2021-01-07
    • 2022-11-26
    • 1970-01-01
    相关资源
    最近更新 更多