dqc2017 2017-05-22 19:42
浏览 26

按下提交按钮帖子已被删除CodeIgniter

I have problem while I'm trying to post comment in post, when I enter (name,email and body of comment) and pressing Submit button, my post has been deleted automaticaly. I am trying to find a error but can not see where I made a mistake

Post Controller

<?php


class Posts extends CI_Controller{

    function __construct(){
        parent::__construct();
        $this->load->database();
        $this->load->model('Posts_model');
    }

    public function index($page='home'){

        $data['posts']= $this->Posts_model->get_posts();

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


    public function view($mjestoOdredista=NULL){


        $data['posts'] = $this->Posts_model->get_posts($mjestoOdredista);
        $post_id = $data['posts']['id'];
        $data['comments'] = $this->comment_model->get_comments($post_id);




        if(empty($data['posts'])){
            show_404();
        }
        $data['id'] =$data['posts'];

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


    public function create(){
        //check if user is logged in
        if(!$this->session->userdata('logged_in')){
            redirect('users/login');
        }

        $data['title'] ='Create Posts';
        $data['categories'] = $this->Posts_model->get_categories();



        if($this->form_validation->run()===FALSE){

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

        }else {

            //upload image
            $config['upload_path'] = './assets/images/posts';
            $config['allowed_types'] = 'gif|jpg|png';
            $config['max_size'] = '2048';
            $config['max_width'] = '500';
            $config['max_height'] = '500';

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

            if(!$this->upload->do_upload()){
                $error=array('error'=>$this->upload->display_errors());
                $post_image='noimage.jpg';
            }else{
                $data = array('upload_data'=>$this->upload->data());
                $post_image = $_FILES['userfile']['name'];
            }
            $this->Posts_model->create_post($post_image);
            $this->session->set_flashdata('post_creted', 'You post has been created') ;
            redirect('posts');
        }

    }

    public function delete($id){

        if(!$this->session->userdata('logged_in')){
            redirect('users/login');
        }


        $this->Posts_model->delete_post($id);
        $this->session->set_flashdata('post_deleted', 'You post has been deleted  ') ;
        redirect('posts');
    }



    public function edit($mjestoOdredista){
        if(!$this->session->userdata('logged_in')){
            redirect('users/login');

        }

        $data['mjestoOdredista']= $this->Posts_model->get_posts($mjestoOdredista);

        //Check if user is logged in
        if($this->session->userdata('user_id') !=$this->Posts_model->get_posts($mjestoOdredista)['user_id'])
            redirect('posts');
        $data['categories'] = $this->Posts_model->get_categories();

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

        $data['id'] = 'Edit Post';
        $this->load->view('templates/header');
        $this->load->view('posts/edit',$data);
        $this->load->view('templates/footer');
    }


    public function update(){
        if(!$this->session->userdata('logged_in')){
            redirect('users/login');
        }

        $this->Posts_model->update_post();
        $this->session->set_flashdata('post_updated', 'You post has been updated ') ;
        redirect('posts');

    }

    }

?>

Post Model

<?php


 class Posts_Model extends CI_Model{

    public function __construct(){
        $this->load->database();

    }

     function get_posts($mjestoOdredista=FALSE){
        if($mjestoOdredista === FALSE){

            $this->db->order_by('posts.id','DESC');
            $this->db->join('categories','categories.id = posts.category_id');
            $query=$this->db->get('posts');
            return $query->result_array();  
        }

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

    //Kreiranje post
    public function create_post($post_image){
        $mjestoPolaska = url_title($this->input->post('title'));
        $data=array(
                'mjestoPolaska' => $mjestoPolaska,
                'mjestoOdredista' => $this->input ->post('Mjesto Odredista'),
                'datumPolaska' => $this->input ->post('Datum Polaska'),
                'datumPovratka' => $this->input ->post('Datum Povratka'),
                'brojMjesta' => $this->input ->post('Broj Mjesta'),
                'cijena' => $this->input ->post('cijena'),
                'opis' => $this->input ->post('Opis'),
                'category_id'=>$this->input->post('category_id'),
                'user_id' =>$this->session->userdata('user_id'),
                'post_image'=>$post_image

        );

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

     //Brisanje posta
    public function delete_post($id){
        $this->db->where('id',$id);
        $this->db->delete('posts');
        return true;
    }


    //editovanje posta
    public function update_post(){
        $mjestoPolaska=url_title($this->input->post('Mjesto Polaska'));
        $data=array(
                'mjestoPolaska' => $mjestoPolaska,
                'mjestoOdredista' => $this->input ->post('Mjesto Odredista'),
                'datumPolaska' => $this->input ->post('Datum Polaska'),
                'datumPovratka' => $this->input ->post('Datum Povratka'),
                'brojMjesta' => $this->input ->post('Broj Mjesta'),
                'cijena' => $this->input ->post('cijena'),
                'opis' => $this->input ->post('Opis'),
                'category_id'=>$this->input->post('category_id'),
                'user_id' =>$this->session->userdata('user_id'),
                'post_image'=>$post_image

        );
        $this->db->where('id',$this->input->post('id'));
        return $this->db->update('posts',$data);

    }

    public function get_categories(){
        $this->db->order_by('name');
        $query = $this->db->get('categories');
        return $query->result_array();
    }

    public function get_posts_by_category($category_id){

        $this->db->order_by('posts.id','DESC');

        $this->db->join('categories','categories.id = posts.category_id');
        $query=$this->db->get_where('posts',array('category_id'=>   $category_id));
        return $query->result_array();

    }

    }



 ?>

View

<h2>Info o voznji:</h2>

<div class></div>

<div class="post-body">
<hr>

<?php echo form_open('/posts/delete/'.$posts['id']);?>
         <?php if($this->session->userdata('user_id')==$posts['user_id']);?>
                <a class="btn btn-default " href="posts/edit/">Edit</a>
                <input type="submit" value="Delete" class="btn btn-danger">

</div>

<hr>
<h3>Comments</h3>
    <?php if($comments):?>
    <?php foreach ($comments as $comment):?>
    <div class="well">
        <h5><?php  echo $comment['body']; ?>[by <strong><?php echo $comment['name']?></strong>]</h5>
     </div>
            <?php endforeach;?>
            <?php  else : ?>
    <p>No Comments to display</p>

    <?php endif;?>



<hr>
<h3>Add Comment</h3>
<?php echo validation_errors();?>

<?php echo form_open('comments/create/'.$posts['id']); ?>

<div class="form-group">
<label>Name</label>
<input type="text" name="name" class="form-control">

<div class="form-group">
<label>Email</label>
<input type="text" name="name" class="form-control">

<div class="form-group">
<label>Body</label>
<textarea name="body" class="form-control"></textarea>
</div>

<button class="btn btn-primary" type="submit">Submit</button>

</form>

</div>
</div>

Comment Controller

    <?php
    class Comments extends CI_Controller{

        public function create($post_id){
            $post_id = $this->input->post('post_id');
            $data['post'] = $this->Posts_model->get_posts($post_id);

            $this->form_validation->set_rules('name', 'Name', 'required');
            $this->form_validation->set_rules('email', 'Email', 'required');
            $this->form_validation->set_rules('body', 'Body', 'required');

            if($this->form_validation->run()===FALSE){
                $this->load->view('templates/header');
                $this->load->view('posts/view',$data);
                $this->load->view('templates/footer');
            }else {
                $this->comment_model->create_comment($post_id);
                redirect('posts/'.$slug);
            }
        }

    }
    ?>

**Comment Model**


<?php

class Comment_model extends CI_Model{

    public function __construct(){
        $this->load->database();
    }

    public function create_comment($post_id = NULL){
        $data=array(
            'post_id'=>$post_id,
            'name' => $this->input->post('name'),
            'email' => $this->input->post('email'),
            'body' => $this->input->post('body'),
        );
        return $this->db->insert('comments',$data);
    }

    public function get_comments($post_id){
        $query = $this->db->get_where('comments',array('post_id'=>$post_id));
        return  $query->result_array();
    }


}
  • 写回答

1条回答 默认 最新

  • dsy48837 2017-05-22 19:55
    关注

    Let's take a look at the view:

    <div class="post-body">
    <hr>
    
    <?php echo form_open('/posts/delete/'.$posts['id']);?>
             <?php if($this->session->userdata('user_id')==$posts['user_id']);?>
                    <a class="btn btn-default " href="posts/edit/">Edit</a>
                    <input type="submit" value="Delete" class="btn btn-danger">
    
    </div>
    

    Here are a few problems:

    • Your if-statement has a semicolon at the end, which essentially makes it a no-op.
    • You have two forms in your view, but only one </form> or form_close() call (and it's after the comment creation form). Essentially, it boils down to invalid HTML; pressing the Submit button will submit the first form (since it was never closed).

    The below code addresses those problems:

    <div class="post-body">
        <hr>
        <?php if ($this->session->userdata('user_id') == $posts['user_id']): ?>
            <?= form_open('/posts/delete/' . $posts['id']) ?>
            <a class="btn btn-default" href="/posts/edit/<?= $posts['id'] ?>">Edit</a>
            <input type="submit" value="Delete" class="btn btn-danger">
            <?= form_close() ?>
        <?php endif ?>
    </div>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭