こんばんはインターネット。私は 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」である必要があります。これを投稿することはできませんでしたが、このコードは他の人に役立つかもしれません。できる限りのことをしてインターネットを楽しんでください。誰かが自分自身を修正しているのを目撃したばかりです(笑)。