【问题标题】:Fetch data from DB with CodeIgniter使用 CodeIgniter 从数据库中获取数据
【发布时间】:2019-03-10 21:11:56
【问题描述】:

我需要帮助从数据库中获取数据并在视图中显示它们。 我的数据库名称是 directory 和表 usernames,其中包括:id、title、body、slug、username、platform、gender、age 和 created_at。 我使用 foreach 显示数据库中的所有帖子,但我现在想显示基于 platform 的特定帖子。 我该怎么做?

这是我用来显示数据库中按 id 排序的所有用户名的代码:

<div class="col-md-6 mb-4">
    <div class="card">

    <div class="card-body" style="height: 130px;">
      <h5 class="card-title"><?php echo $username_data['title']; ?></h5>
      <p class="card-text"><?php echo word_limiter($username_data['body'], 24); ?></p>
  </div>
    <div class="card-footer text-muted">
        <div class="row">
            <div class="col-6">
                <small>Created at: <?php echo $username_data['created_at'];?></small><br> 
          <strong>Is <?php echo $username_data['gender'];?></strong>
            </div>
            <div class="col-6 text-right">
                <a href="<?php echo site_url('usernames/' . $username_data['slug']); ?>" class="btn btn-primary text-right">View full message</a>
            </div>
        </div>
  </div>
</div>
</div>

这是我的模型:

<?php
class Usernames extends CI_Controller{
    public function index(){
        $data['title'] = 'Lastest Posts';

        $data['posts'] = $this->post_model->get_usernames();

        $this->load->view('templates/header');
        $this->load->view('usernames/index', $data);
        $this->load->view('templates/footer');
    }

    public function view($slug = NULL){ 
        $data['post'] = $this->post_model->get_usernames($slug);
        $query = $this->db->get('usernames');

        if(empty($data['post'])){
            show_404();
        }

        $data['title'] = $data['post']['title'];

        $this->load->view('templates/header');
        $this->load->view('usernames/view', $data);
        $this->load->view('templates/footer');

    }

    public function create(){
        $data['title'] = 'Create Post';

        $this->form_validation->set_rules('title','Title','required');
        $this->form_validation->set_rules('body','Message','required');
        $this->form_validation->set_rules('username','Username','required');
        $this->form_validation->set_rules('age','Age','required');
        $this->form_validation->set_rules('gender','Gender','required');
        $this->form_validation->set_rules('platform','Platform','required');

        if($this->form_validation->run() === FALSE){
            $this->load->view('templates/header');
            $this->load->view('usernames/create', $data);
            $this->load->view('templates/footer');
        } else {
            $this->post_model->create_username();
            redirect('usernames');
        }   
    }
    public function snapchat(){
        $data['title'] = 'Lastest Posts';

        $data['posts'] = $this->post_model->get_usernames();



        $this->load->view('templates/header');
        $this->load->view('usernames/snapchat', $data);
        $this->load->view('templates/footer');
    }
}

型号:

<?php
class Post_model extends CI_Model{
    public function __construct(){
        $this->load->database();
    }
    public function get_usernames($slug = FALSE){
        if($slug === FALSE){
            $this->db->order_by('usernames.id', 'DESC');
            $query = $this->db->get('usernames');
            return $query->result_array();
        }

        $query = $this->db->get_where('usernames', array('slug' => $slug));
        return $query->row_array();
    }

    public function create_username(){
        $slug_link = substr(str_replace(['+', '/', '='], '', base64_encode(random_bytes(16))), 0, 16);
        $slug = url_title($this->input->post('title').'-'.$slug_link);

        $data = array(
            'title' => $this->input->post('title'),
            'slug' => $slug,
            'body' => $this->input->post('body'),
            'platform' => $this->input->post('platform'),
            'age' => $this->input->post('age'),
            'gender' => $this->input->post('gender'),
            'username' => $this->input->post('username')
        );

        return $this->db->insert('usernames', $data);
    }
}

一切正常,但我真的不知道如何获取这些数据。 我需要在这个特定页面('telegram.php')中显示所有包含来自平台的 Telegram 的行。 如前所述,我的数据库结构如下:

目录(数据库名称)

用户名(表名)

->id->title->body->slug->user

【问题讨论】:

    标签: php codeigniter fetch


    【解决方案1】:
    public function get_usernames_from_platform($platform){
            if(!empty($platform)){
                $this->db->where('platform',$platform);
                $this->db->order_by('usernames.id', 'DESC');
                $query = $this->db->get('usernames');
                return $query->result_array();
            }
    
            return array();
        }
    

    将方法添加到您的模型中并调用它以获取控制器中相应方法中的相应数据。

    【讨论】:

    • 它给了我这个错误:消息:函数 Post_model::get_usernames_from_platform() 的参数太少,在第 79 行的 C:\wamp64\www\directory\application\controllers\Usernames.php 中传递了 0正好是 1 个预期
    • get_usernames_from_platform('Telegram') 如果你想从平台电报中获取。这真的是基本的东西。你应该学习而不是直接问
    • 那么请解释一下为什么 StackOverflow 还存在?它是用来提问并得到答复的。这种评论有点不尊重,因为我不能在一周内学会所有东西。如果我们都能够如此幸运地生来像你一样博学。
    • 你的问题是原因,Codeigniter 有一个文档网站。 StackOverflow 适用于已经尝试了所有最后手段但开发人员仍在解决问题的问题。我想你在问这个问题之前没有尝试阅读文档并尝试那里写的内容
    • 谁决定了你最后的选择?你?还是我的知识?
    【解决方案2】:

    好像少了它的构造函数 $this->load->model('post_model');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2020-04-22
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多