0

私は現在、エントリを投稿するとすぐにテキストボックスの下にテキストを表示するブログに取り組んでいます。現在、私のページには、データベースベースの最初の10エントリが表示されており、最も古いものが最初に表示されます。最新のブログを最初に表示して、最新の10エントリを表示するにはどうすればよいですか?

これが私のコントローラーです:

class Blog extends CI_Controller {

public function _construct()
{
    parent::__construct();
    $this->load->model("Blogmodel"); 
    $this->load->model("profiles");

}


public function index()
{

    $username = $this->session->userdata('username');

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

    $viewData['username'] = $username;

    $this->load->model('Blogmodel');


    if($this->input->post('act') =='create_post')
    {
        $this->Blogmodel->insert_entry();

    }


    $viewData['blogs'] = $this->Blogmodel->get_last_ten_entries();

    $this->load->view('shared/header');  
    $this->load->view('blog/blogtitle', $viewData);
    $this->load->view('shared/nav');
    $this->load->helper('form');// Load the form helper.

    // Lets set the stuff that will be getting pushed forward...
    $data = array();
    $data['form_open']=form_open();
    $data['form_title'] = form_input(array('name' => 'title'));
    $data['form_text'] = form_textarea(array('name' => 'text'));
    $data['form_hidden'] = form_hidden('act','create_post');
    $data['form_submit'] = form_submit('submit','Make Post');


    $this->load->view('blog/post', $data);
    $this->load->view('blog/blogview');


       $this->load->view('shared/footer');
    }

   }

これが私のモデルです:

class Blogmodel extends CI_Model
 {

 function Blogmodel()
  {
    parent::__construct();
  } 

public function get_last_ten_entries()// this is the function that grabs the entries from my blogs database
{
    $query = $this->db->get('blogs', 10);
    return $query->result();

    }
public function insert_entry()
{
    $this->title = $this->input->post('title');
    $this->body = $this->input->post('text');
    $this->username = $this->session->userdata('username'); 
    $this->date = date("Y-m-d");

    $this->db->insert('blogs', $this);


}

}

意見:

 <?foreach($blogs AS $viewData)
 {
$id = $viewData->id;
$title = $viewData->title;
$body = $viewData->body;
$username = $viewData->username;
$date = $viewData->date;

?>

   <b> <?=$title?></b>
    <p><?=$body?></p>

      <p>posted by:<?=$username?></p>
      <p>date: <?=$date?></p>

<hr>

  <?
   }
   ?> 
4

1 に答える 1

0

idフィールドで結果を並べ替えるだけです(テーブルに1つある場合)

public function get_last_ten_entries()
{
     $this->db->order_by('id', 'DESC');    
     $query = $this->db->get('blogs', 10);
    return $query->result();

 }

または、データベースに行を追加するときにタイムスタンプを追加してから、その列で結果を並べ替えます。

public function insert_entry()
{
    $this->timestamp = time();
    $this->title = $this->input->post('title');
    $this->body = $this->input->post('text');
    $this->username = $this->session->userdata('username'); 
    $this->date = date("Y-m-d");

    $this->db->insert('blogs', $this);   
}

public function get_last_ten_entries()
{
    $this->db->order_by('timestamp', 'DESC');    
    $query = $this->db->get('blogs', 10);
    return $query->result();        
}
于 2012-12-13T23:04:30.877 に答える