在CodeIgniter

时间:2016-05-17 13:24:06

标签: php codeigniter

这里我有控制器news.php:

<?php

class News extends CI_Controller{

    public function __construct(){
         parent::__construct();
                $this->load->model('news_model');
                $this->load->helper('url_helper');
    }

    public function index(){

        $data['news'] = $this->news_model->get_news();

        $data['title'] = 'News archive';

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

    public function view($slug = NULL)
        {
               $data['news_item'] = $this->news_model->get_news($slug);

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

        $data['title'] = "News in Detail(s)";

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

                public function create()
        {
                $this->load->helper('form');
                $this->load->library('form_validation');

                $data['title'] = 'Create a news item 22';

                $this->form_validation->set_rules('title', 'Title', 'required');
                $this->form_validation->set_rules('text', 'Text', 'required');

                $data['updateid'] = '' ;


                if ($this->form_validation->run() === FALSE)
                {
                    $this->load->view('templates/header', $data);
                    $this->load->view('news/create');
                    $this->load->view('templates/footer');

                }
                else
                {
                    $this->news_model->set_news();
                    if($update == 1){
                    redirect('/news', 'location');
                 }
                }
        }

        public function update($id){

                $this->load->helper('form');
                $this->load->library('form_validation');

            $data['updateid'] = $id;
            $data['title'] = "Update News in Detail(s)";
            $data['update'] = $this->news_model->edit_load_data($id);

            $this->load->view('news/create',$data);

        if ($this->input->post('submit')) {

               $update =   $this->news_model->update_news($id);
               if($update == 1){
                    redirect('/news', 'location');
                 }
            }



        }
}

?>

这是我的模型文件news_model.php:

<?php


class News_model extends CI_Model{

    public function __construct(){

        $this->load->database();
    }

    public function get_news($slug= false){

        if($slug == false){
            $query= $this->db->get('news');
             return $query->result_array();
        }

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

    public function set_news(){

            $this->load->helper('url');

            $slug = url_title($this->input->post('title'), 'dash', TRUE);




            $data = array(
            'title' => $this->input->post('title'),
            'slug' => $slug,
            //'text' => $this->input->post('text')
           'text' => $this->input->post('select')
            );

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

    public function edit_load_data($id){

         $query = $this->db->get_where('news', array('id' => $id));


            return $query->row_array();

    }

    public function update_news($id){

        $this->load->helper('url');

            $slug = url_title($this->input->post('title'), 'dash', TRUE);


        $data = array(
            'title' => $this->input->post('title'),
            'slug' => $slug,
            //'text' => $this->input->post('text')
           'text' => $this->input->post('select')
            );

                 $this->db->where('id', $id);


            return $this->db->update('news', $data);




    }

}
?>

这是我的表单create.php文件:

 <?php echo validation_errors(); 
    echo $updateid;
    ?>
    <?php if($updateid == ''){ ?>
    <?php echo form_open('news/create'); ?>
    <?php } else { ?>
    <?php echo form_open('news/update/'.$updateid); ?>
    <?php }  ?>


        <label for="title">Title</label>
        <input type="input" name="title" value="<?php echo $update['title']; ?>" /><br />

        <label for="text">Text</label>
        <textarea name="text" ><?php echo set_value('text'); ?></textarea><br />

          <label for="text">Select</label>
    <select name="select">
    <option <?php if($update['text']=='text1'){ echo "selected";} ?> value="text1">text1</option>
       <option <?php if( $update['text']=='text2'){ echo "selected";} ?> value="text2">text2</option>
    </select>
    <br />



        <input type="submit" name="submit" value="Create news item" />

    </form>

在这里,当我要去新闻/创建时出错:

  

遇到PHP错误

     

严重性:注意

     

消息:未定义的变量:更新

     

文件名:news / create.php

     

行号:15

     

回溯:

     

文件:C:\ xampp \ htdocs \ mylab \ application \ views \ news \ create.php行:15   功能:_error_handler

     

文件:C:\ xampp \ htdocs \ mylab \ application \ controllers \ News.php行:54   功能:查看

     

文件:C:\ xampp \ htdocs \ mylab \ index.php行:315功能:require_once   “/&gt;

我能为此做些什么?我想为同一个文件create.php添加和编辑 那可能吗?

2 个答案:

答案 0 :(得分:0)

我不知道这会产生你想要的结果,但它会阻止使用未定义的变量。

<?php
echo validation_errors();
$updateid = isset($updateid) ? $updateid : '';
echo $updateid;

if($updateid == '')
{
  echo form_open('news/create');
}
else
{
  echo form_open('news/update/'.$updateid);
}

if(!isset($update))
{
  $update['title'] = NULL;
  $update['slug'] = NULL;
  $update['text'] = NULL;
}
?>

<label for="title">Title</label>
<input type="input" name="title" value="<?php echo $update['title']; ?>" /><br />

<label for="text">Text</label>
<textarea name="text" ><?php echo set_value('text'); ?></textarea><br />

<label for="text">Select</label>
<select name="select">
  <option <?php
  if($update['text'] == 'text1')
  {
    echo "selected";
  }
  ?> value="text1">text1</option>
  <option <?php
  if($update['text'] == 'text2')
  {
    echo "selected";
  }
  ?> value="text2">text2</option>
</select>
<br />

<input type="submit" name="submit" value="Create news item" />

</form>

您应该修改模型,以便在输入不存在时返回默认数组。我无法确定您将$update发送到视图的位置。

答案 1 :(得分:0)

我认为你没有返回$ update ['title'],$ update ['text']等。你要返回$ title,$ text ...

  

尝试将$ update ['title']更改为create.php中的$ title以查看内容   发生