Когато получавате публикации, името на колоната е book_id . Когато изтриете е id . Така че може би трябва да го промените на book_id .
Също така $this->uri->segment(3) в този случай ще върне null, защото function delete() нямаше параметри. Повече подробности прочетете тук
Но ще направя някои промени:
Контролер:
public function delete()
{
$id=$this->uri->segment(3); // Try to write any id here, or in function put parameter
$this->book_model->deletepost($id);
$data['books']=$this->book_model->getposts();
$this->load->view('showbooks',$data);
}
Модел:
public function getposts() {
return $this->db->get('books')->result_array();
}
public function deletepost($id) {
$this->db->where('book_id',$id); // I change id with book_id
$this->db->delete('books');
}