美好的一天互联网。我正在使用 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");
}
}
因此,经过几天的尝试,我终于得到它来更新数据库中的某些字段,这在理论上会更新视图中的输出,但现在它给了我这个错误消息:遇到 PHP 错误
严重性:通知
消息:未定义变量:标题
文件名:views/content_about.php
行号:10
它给出了我试图回显的所有变量的错误。我不明白,我没有触及要从数据库中显示的代码,现在我终于能够通过表单更改数据,变量突然未定义。如果有人可以帮助我,我将不胜感激。已经在这个单一的任务上工作了 2 周了!
编辑:当我写这篇文章时,我发现了问题并用箭头来识别它。页面数据必须是“关于”的,因为这就是 foreach 循环获取数据的方式。我不能发布这个,但也许这段代码会帮助别人。尽你所能享受互联网,你刚刚目睹了有人纠正自己,哈哈。