رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خالی شدن مقادیر
#1
در اکتیورکورد

من یه تابع نوشتم که فیلد ها رو چک میکنه و بعد میریزه تو متغیر خودشون
بعد هم اگر مشکلی نباشه متد 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();

پاسخ
تشکر شده توسط:
#2
حل شد

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

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

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




کاربران در حال بازدید این موضوع: 1 مهمان