0

codeigniter を使用してデータベースにフォーム値を挿入しようとしましたが、何も起こりません。私のフォームはcomment_form.phpです。

<?php echo validation_errors(); ?>
<?php echo form_open('news/comment_form'); ?>

Name<input type="text" name="comment_name"></input><br />
Email<input type="text" name="comment_email"></input><br />
Comment<input type="text" name="comment_body"></input><br />
<input type="submit" name="submit" value="Comment it" ></input>

</form>

これが私のコントローラーのcomments.phpです

class Comments extends CI_Controller
{

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

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


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

        $this->form_validation->set_rules('comment_name', 'comment_name', 'required');
        $this->form_validation->set_rules('comment_email', 'comment_email', 'required');
        $this->form_validation->set_rules('comment_body', 'comment_body', 'required');

        if ($this->form_validation->run() === FALSE) {
            $this->load->view('templates/header', $data);
            $this->load->view('news/comment_form');
            $this->load->view('templates/footer');
        } else {
            $this->news_model->set_comment();
            $this->load->view('news/success');
        }
    }
}

これは私のモデルです comment_model.php

class Comment_model extends CI_Model
{

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


    public function set_comment()
    {
        //$this->load->helper('url');

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

        $datac = array(
            'comment_name' => $this->input->post('comment_name'),
            'comment_email' => $this->input->post('comment_email'),
            'comment_body' => $this->input->post('comment_body')
        );

        return $this->db->insert('comments', $datac);
    }
}

問題は、フォームを送信するたびに、何も起こらなかったように何も返さないことです。助けてください。

4

5 に答える 5

0

以下のコマンドを使用してクエリをエコーし​​、データベースset_comment$this->db->insert('comments', $datac);同じクエリを手動で実行してみてください。問題が発生する可能性があります。

echo $this->db->last_query();

于 2013-10-22T14:01:39.677 に答える
0

あなたのcomment_form.phpの変更で

echo form_open('news/create_comment');

echo form_open('comments/create_comment');

なんで? form_open() に与える最初のパラメーターはアクションパラメーターであるためです。のようなフォームタグを開き<form action="bla">ます。そして、news/create_comment は呼び出したい正しいページではありません。コントローラーcommentsの名前は ですcomments/create_comment

あなたのcomments.phpの変更で

$this->news_model->set_comment();

$this->comment_model->set_comment();

なんで?単に偽のモデルを指しているだけです。もしかしてコピペミス?

あなたのcomment_model.phpで削除します

$this->load->database();

そして、それをconfig.phpにロードします(ライブラリー配列に「データベース」を追加します)。

なんで?私見これはより適切な解決策です。おそらくデータベースをかなり頻繁に使用することになるでしょう。

それでも問題が発生する場合は、さらに情報が必要です。正確には何が機能していません。デバッグを行ってください。$this->news_model->set_comment()書き込みを呼び出した後var_dump($this->db->last_query());

于 2013-10-22T15:13:44.947 に答える
0

変化 :

$this->load->database();
echo form_open('news/comment_form');
$this->news_model->set_comment();

に:

$this->load->library('database');
echo form_open('news/create_comment');
$this->comment_model->set_comment();

にデータベース ライブラリをロードするとよいでしょうautoload.php。または、コントローラーのコンストラクターで。

于 2013-10-22T14:02:51.003 に答える
0
this->news_model->set_comment()

する必要があります

this->comment_model->set_comment()

PS: 整形してすみません。モバイル版は改行を読み上げません。

于 2013-10-22T14:03:41.693 に答える