PDA

View Full Version : خطا



H:Shojaei
سه شنبه 16 مهر 1392, 19:35 عصر
با سلام خدمت دوستان
يه كلاس كنترلر ساختم كه توش يه تابع از مدل رو فراخواني ميكنه و و تو واسه ثبت مقاديري كه از ويو مياد...
حالا به يه مشكل خوردم كه اصلا نميدونم چي هست اين خطا رو ميده برنامه:(راستي ديشب با همين كار ميكرد نميدونم چرا الآن اينطوريه؟؟)

You must use the "set" method to update an entry.

Filename: C:\Program Files\EasyPHP-5.3.3.1\www\system\database\DB_active_rec.php

Line Number: 1174

H:Shojaei
سه شنبه 16 مهر 1392, 23:32 عصر
فكر كنم بهتر بود اول كدها رو هم ميذاشتم:
كنترلر:

class Blog extends CI_Controller
{
function __construct()
{
parent::__construct();


}
function insert()
{

$this->load->helper('form');
$this->load->view('blog/view_insert');
$this->load->model('BlogModel');
$this->BlogModel->insert();

//$this->BlogModel->insert();
}

}
مدل:


class BlogModel extends CI_Model
{
function BlogModel()
{
// Call the Model constructor
parent::__construct();
$this->load->database();
}
function insert()
{
$this->db->insert('Entries', $_POST);
}
}

اسم جدول هم entires
با تشكر پيشاپيش...

engmmrj
سه شنبه 16 مهر 1392, 23:36 عصر
معلومه که error میده !
کد زیر الان چیکار میکنه !

$this->db->insert('Entries', $_POST);
باید به صورت زیر بنویسید !

$this->db->insert('table' , array( 'field'=> 'value') ) ;

H:Shojaei
سه شنبه 16 مهر 1392, 23:42 عصر
ممنون از پاسختون ولي نه همين كار ميكرد يعني الآن هم وقتي اين دو خط:

$this->load->model('BlogModel');
$this->BlogModel->insert();
رو برميدارم و پيج رو رفرش ميكنم كه پيج كامل لود ميشه بعد همين دو خط رو ميذارم و مقادير رو ارسال ميكنم درسته تا زماني كه دوباره پيجو ببندم و دوباره كه بازش كنم همين خطا رو ميده...
موندم واقعا توش...

H:Shojaei
سه شنبه 16 مهر 1392, 23:43 عصر
اون كد هم مقادير ارسالي رو كه داخل $_POST هستن رو داخل جدول كه اسمش Entires هست ميريزه كه در حالت معمولي درسته...
يعني وقتي فيلدها مشخص نشن مثل اون طوري كه شما نوشتيد مقادير به ترتيب تو فيلدهاي خودشون قرار ميگيرن.

pary_daryayi
چهارشنبه 17 مهر 1392, 07:41 صبح
یعنی insert اتفاق میفته ولی این خطا رو هم میده ؟
احتمالا جای دیگه بدون اینکه مدل رو لود کنید فانکشن اونو صدا زدید .
اینو در construct بزارید :


$this->load->model('BlogModel','',TRUE);

engmmrj
چهارشنبه 17 مهر 1392, 10:23 صبح
ببخشید شما میدونید MVCچیه ؟ تو MVC مدل view نمی تونه مقداری برای model ارسال کند ، view مقادیر خودش را برای Controller ارسال می کنه ، الان شما تو کد هاتون اومدین یک راست $_POST رو نوشتین تو Model باید اول بدید به Controller بعد از Controller بدید به Model به صورت زیر می تانید عمل کنید در ضمن به جایی اینکه $_POST هارو اینجوری بنویسید از کلاس input استفاده کنید چون کلاس input به شرطی که مقدار true به عنوان آرگومان بدید بهش خودش داده هارو escape میکنه !

public function controller() {

$post = $this->input->post(null , true);

$this->load->model('models');

$this->models->insert($post['name']);

}

public function insert($name) {

$this->load->database();
$this->db->insert('table',array('name'=>$name));
}