تالار گفتمان nCIS.ir

نسخه‌ی کامل: خالی شدن مقادیر
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
در اکتیورکورد

من یه تابع نوشتم که فیلد ها رو چک میکنه و بعد میریزه تو متغیر خودشون
بعد هم اگر مشکلی نباشه متد save  صدا میکنم تا توی دیتا بیس ذخیره کنه
ولی فیلدها تو متد insert  که توسط متد save صدا می شه خالی هستن


public function insertdb(){
     
      if(isset($_POST['submit'])){
          $news = new news();
        // print_r($_POST);
          $error = array();
          
          if(!empty($_POST['title'])){
              $news->title = $_POST['title'];
          }else{
              $error[] = 'لطفا عنوان خبر را وارد کنید';
          }           
          if(!empty($_POST['cat_id'])){
              
            echo   $news->cat_id = $_POST['cat_id'];
              
          }else{
              $error[] = 'لطفا دسته بندی خبر را انتخاب کنید';
          }
          if(!empty($_POST['status'])){
              $news->status = $_POST['status'];
          }else{
              $error[] = 'لطفا وضعیت نمایش را انتخاب کنید';
          }
          if(isset($_FILES['picture'])&& !empty ($_FILES['picture']['name'])){
              
              $news->picture = $_FILES['picture']['name'];
              
          }else{
              $error[] = 'لطفاعکس خبر را انتخاب کنید';
          }
           if(!empty($_POST['description'])){
              
              $news->description = $_POST['description'];
              
          }else{
              $error[] = 'لطفا متن خبر را انتخاب کنید';
          }           
          if(!empty($_POST['public_date'])){
              
              $news->public_date = $_POST['public_date'];
              
          }else{
              $news->public_date = NULL;
          }
          if(!empty($_POST['expire_date'])){
              
              $news->expire_date = $_POST['expire_date'];
              
          }else{
              $news->expire_date = NULL;
          }
          if(!empty($_POST['keywords'])){
              
              $news->keywords = $_POST['keywords'];
              
          }else{
              $news->keywords = NULL;
          }
          if(empty($error)){
               
              $news->create_date = NULL;
              $news->update_date = NULL;
              $news->owner_id = 1;
              $news->visit = 1;
              $news->like = 1;
              $news->dislike = 1;
              
             //print_r($news);
              if($this->save()){
                  echo "خبر با موفقیت درج شد";
              }
              else{
                  echo mysql_error();
              }
              
          }else{
              foreach($error as  $value){
                  echo $value.'<br>';
              }
          }
      }





متد insert


private function insert(){
      print_r($this->fields); 
      $fields = array_map('Database::Escape',$this->fields);
       
       $resault = Database::Query(" INSERT INTO `news` VALUES (NULL,'{$fields['cat_id']}','{$fields['owner_id']}','{$fields['title']}','{$fields['description']}','{$fields['keywords']}','{$fields['visit']}','{$fields['like']}','{$fields['dislike']}','{$fields['picture']}','{$fields['create_date']}','{$fields['public_date']}','{$fields['update_date']}','{$fields['expire_date']}',{$fields['status']}) ");
       $this->isNew = false;
       $this->id = Database::InsertId();
       return $resault;
   }



متد save



public function save(){
       if($this->isNew){
            $this->insert();
       }
       else{
            $this->update();
       }
   }



تو بخش ویو هم به این شکل صداشون می کنم



$news = new news();
                                                      print_r($news);
                                                      $news->insertdb();

حل شد

متد save باید به این شکل صدا میکردم
$news->save()

قبلا اینجوری صدا میکردم

$this->save()
this$ فقط توی خود کلاس کاربرد داره نه خارج از اون. خارج از کلاس باید اسم شئ رو بدین.