0

こんばんはインターネット。私は codeigniter を使用して基本的な cms に取り組んでいます。データベースからのデータが表示されるように設定しました。

最初の2ページのコントローラーのコードは次のとおりです

class Site extends CI_Controller {
public function index(){
    $this->home();
}

public function home(){
    $this->load->model("model_get");
    $data["results"] = $this->model_get->getData("home");
    $this->load->view("site_header");
    $this->load->view("site_nav");  
    $this->load->view("content_home", $data);
    $this->load->view("site_footer");
}

public function about(){
$this->load->model("model_get");
    $data["results"] = $this->model_get->getData("about");
    $this->load->view("site_header");
    $this->load->view("site_nav");  
    $this->load->view("content_about", $data);
    $this->load->view("site_footer");

}

データベースからデータを取得するモデルは次のとおりです。

class Model_get extends CI_Model{
    function getData($page){
        $query = $this->db->get_where("pageData", array("page" => $page));
        return $query->result();
    }
}

データベースのデータを出力するビューは次のとおりです

<div id="content">
        <?php  

            foreach($results as $row){
                $title = $row->title;
                $text1 = $row->text1;
                $text2 = $row->text2;                   
            }

            echo heading($title, 1);

        ?>

        <p><?php echo $text1;  ?></p>
        <p><?php echo $text2;  ?></p>

問題なく動作していますが、フォームを使用してデータベース内のデータを変更したいと考えていました。これが私のフォームのビューのコードです

<div id="content">
<?php

    $this->load->helper("form");

    echo validation_errors();

    echo form_open("site/updatevalues");

    echo form_label("Heading", "title");

    $data = array(
                "name" => "title",
                "id" => "title",
                "value" => set_value("title"),
                "style" => "width:100%",
                "rows" => "rows:3"
            );



    echo form_textarea($data);


    echo form_label("Text 1", "text1");

    $data = array(
                "name" => "text1",
                "id" => "text1",
                "value" => set_value("text1"),
                "style" => "width:100%",
                "rows" => "rows:3"                  
            );

    echo form_textarea($data);

    echo form_label("Text 2: ", "text2");

    $data = array(
                "name" => "text2",
                "id" => "text2",
                "value" => set_value("text2"),
                "style" => "width:100%",
                "rows" => "rows:3"
            );

    echo form_textarea($data);

    echo form_submit("dataSubmit", "Submit");


    echo form_close();

?>

これは、上記のビューからのフォーム入力を使用しているコントローラーのコード スニペットです。

public function updatevalues(){
        $this->load->library("form_validation");

        $this->form_validation->set_rules("title", "Heading", "required|xss_clean");
        $this->form_validation->set_rules("text1", "Text 1", "required|xss_clean");
        $this->form_validation->set_rules("text2", "Text 2", "required|xss_clean");

        if($this->form_validation->run() == FALSE){
            $data ["success"] = "";
            $this->load->view("site_header");
            $this->load->view("site_nav");  
            $this->load->view("data_input", $data);
            $this->load->view("site_footer");
        } else {    
            echo $data["success"] = "The page has been updated";
            $this->load->view("site_header");
            $this->load->view("site_nav");  
            $this->load->view("data_input", $data);
            $this->load->view("site_footer");

            $this->load->model("model_update");

            $newRow = array(
                    "id" => "3",
                    "title" => set_value("title"),
                    "page" => "Contact Page",  **<---This was the problem**
                    "text1" => set_value("text1"),
                    "text2" => set_value("text2")
                );

            $this->model_update->update1($newRow);


        }

    }

これは、データベース内のデータの更新を処理しているモデルです。ここでは最初の関数を使用しています

class Model_update extends CI_Model{
    function update1($data){
    $this->db->update("pagedata", $data, "id = 3");     

    }

    function update2($data){
    $this->db->update_batch("pagedata", $data, "id");
    }

}

したがって、これを理解しようと何日も試みた後、理論的にはビューの出力を更新するデータベースの特定のフィールドを更新するようになりましたが、今では次のエラーメッセージが表示されます:A PHPエラーが発生しました

重大度: 通知

メッセージ: 未定義の変数: タイトル

ファイル名: views/content_about.php

ライン番号: 10

エコーしようとしているすべての変数に対してエラーが発生しています。わかりません。データベースから表示するコードに触れていません。最終的にフォームを介してデータを変更できるようになったので、変数は突然未定義になります。誰かがこれで私を助けることができれば、私はそれを感謝します. この単一のタスクに 2 週間取り組んでいます。

編集:これを書いているときに、問題を把握し、それを特定するために矢印を付けました。foreach ループがデータを取得する方法であるため、ページ データは「about」である必要があります。これを投稿することはできませんでしたが、このコードは他の人に役立つかもしれません。できる限りのことをしてインターネットを楽しんでください。誰かが自分自身を修正しているのを目撃したばかりです(笑)。

4

1 に答える 1

0

サイト コントローラー機能のホームで次の行を変更します。

これから:

$data["results"] = $this->model_get->getData("home");

これに:

$data["results"] = $this->model_get->getData("ホームページ");

あなたがこれをスティーブンのYouTubeチュートリアルから取ったので、私はこれを知っています.

于 2014-03-11T16:09:34.743 に答える