امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
validation
#1
سلام
افتتاح انجمنو تبریک میگم  Heart
یه فرم ساختم که برای ارسال نظرات باشه. یکی از فیلدها بصورت dropdown هست و از یک جدول اطلاعات درونش نمایش داده میشه. میخوام اگر یکی از فیلدهارا خالی رها کردن خطا نمایش داده بشه. لطفا راهنمایی کنید:
کد نمایش داده صفحه فرم ( هیچ مشکلی نداره ):
کد php:
   public function add(){
 
       $sub $this->aauth->get_subgroups('تیکت');
 
       $ticket_add = array();
 
       foreach ($sub as $data){
 
           $new = array();
 
           $new['id'] = $data->subgroup_id;
 
           $new['name'] = $this->aauth->get_group_name($new['id']);
 
           $ticket_add[] = $new;
 
       }
 
       $this->template->load('ticket/create_ticket',array('groups' => $ticket_add));
 
   

کد بررسی کردن اطلاعات کاربر و ارسال برای ذخیره در دیتابیسSad مشکل در قسمت کامنت شده )
کد php:
    public function create(){
 
       $this->form_validation->set_rules('subject','Subject','required|trim');
 
       $this->form_validation->set_rules('department','Department','required|trim');
 
       $this->form_validation->set_rules('comment','Comment','required|trim');
 
       if($this->form_validation->run() == FALSE){
 
           //$this->template->load('ticket/create_ticket',array('groups' => $ticket_add));
 
       }else{
 
           $create_ticket['ticket_id'] = '';
 
           $create_ticket['user_id'] = $this->aauth->get_user_id();
 
           $create_ticket['subject'] = $this->input->post('subject');
 
           $create_ticket['department_id'] = $this->input->post('department');
 
           $create_ticket['message'] = $this->input->post('comment');
 
           $create_ticket['active'] = 1;
 
           $create_ticket['create_date'] = now();
 
           $this->ticket_model->create($create_ticket);
 
       }
 
   
پاسخ
#2
سلام
ورودتون رو تبریک میگم Smile
برای نمایش خطا از 
کد php:
echo validation_errors(); 

استفاده می کنید؟
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
#3
(2017/02/04، 06:59 AM)admin نوشته است: سلام
ورودتون رو تبریک میگم Smile
برای نمایش خطا از 
کد php:
echo validation_errors(); 

استفاده می کنید؟

سلام تشکر
بله از validation_errors استفاده کردم
پاسخ
#4
(2017/02/04، 07:35 AM)a76205 نوشته است:
(2017/02/04، 06:59 AM)admin نوشته است: سلام
ورودتون رو تبریک میگم Smile
برای نمایش خطا از 
کد php:
echo validation_errors(); 

استفاده می کنید؟

سلام تشکر
بله از validation_errors استفاده کردم
من کاملا متوجه سوالتون نشدم.
ایا مشکلتون اینه که خطایی توسط کد ایگنایتر گرفته نمیشه و بدون پر کردن فیلد های ضرروی شما اطلاعات ذخیره میشه؟
هیچ اروری ندارید؟
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
#5
سلام
مشکل رو حل کردم. کدهای فانکشن add را داخل create نیز اضافه کردم. مرسی شما هم وقت گذاشتید
پاسخ
#6
سلام دوباره
در اعتبارسنجی کردن یک مشکل جدید دارم. مثلا میخوام وقتی کاربر فایلی آپلود میکنه که از حجم تعیین شده بیشتره یا پسوند مجاز نیست سیستم خطا بده و دیگر فیلدهای پرشده داخل دیتابیس ذخیره نشن. کد زیر رو نوشتم:
کد php:
   public function reply()
 
   {
 
       if (!empty($_FILES['userfile']['name'])) {
 
           $config['upload_path'] = './file_ticket';
 
           $config['allowed_types'] = 'gif|jpg|png|jpeg|pdf|doc|docx|txt';
 
           $config['max_size'] = 4000;
 
           $config['max_width'] = 11024;
 
           $config['max_height'] = 7168;
 
           $this->load->library('upload'$config);
 
           $this->upload->initialize($config);
 
           if ($this->upload->do_upload('userfile')) {
 
               $uploadData $this->upload->data();
 
               $file $uploadData['file_name'];
 
           } else {
 
               //$this->upload->display_errors();
 
           }
 
       }
 
           $this->form_validation->set_rules('comment''Comment''required|trim');
 
           if ($this->form_validation->run() == FALSE) {
 
              // $this->template->load('ticket/create_ticket',array('groups' => $ticket_add));
 
           } else {
 
               $reply_ticket['ticket_comment_id'] = '';
 
               $reply_ticket['ticket_id'] = $this->input->post('ticket_id');
 
               $reply_ticket['user_id'] = $this->aauth->get_user_id();
 
               $reply_ticket['comment'] = $this->input->post('comment');
 
               $reply_ticket['create_date'] = now();
 
               $reply_ticket['file'] = $file;
 
               $insert_ticket_comment $this->ticket_model->reply($reply_ticket);
 
               if ($insert_ticket_comment) {
 
                   $show = array();
 
                   $id $this->input->post('ticket_id');
 
                   $groups_id $this->ticket_model->get_groups_id($id);
 
                   $show['show_ticket'] = $this->ticket_model->show($id$groups_id);

 
                   redirect('ticket/show/'.$id);
 
               }
 
           }
 
       
پاسخ
#7
سلام
مورد validation کردن رو میشه لطفا بررسی کنید ؟
واقعا سر این قسمت مشکل اساسی دارم با فایل آپلودینگ نمیتونم براش کد اعتبار سنجی مناسبی بنویسم
پاسخ
#8
سلام
عذرخواهی میکنم دیر پاسخ میدم.
این کد رو ببینید:
کد php:
    public function reply()
 
   {
 
           $config['upload_path'] = './file_ticket';
 
           $config['allowed_types'] = 'gif|jpg|png|jpeg|pdf|doc|docx|txt';
 
           $config['max_size'] = 4000;
 
           $config['max_width'] = 11024;
 
           $config['max_height'] = 7168;
 
           $this->load->library('upload'$config);
 
           $this->upload->initialize($config);

 
           if ( !$this->upload->do_upload('userfile')) {
 
               $error = array('error' => $this->upload->display_errors());
 
               $this->load->view('upload_form'$error);
 
               return;
 
           

 
           $uploadData $this->upload->data();
 
           $file $uploadData['file_name'];


 
           $this->form_validation->set_rules('comment''Comment''required|trim');
 
           if ($this->form_validation->run() == FALSE) {
 
              // $this->template->load('ticket/create_ticket',array('groups' => $ticket_add));
 
           } else {
 
               $reply_ticket['ticket_comment_id'] = '';
 
               $reply_ticket['ticket_id'] = $this->input->post('ticket_id');
 
               $reply_ticket['user_id'] = $this->aauth->get_user_id();
 
               $reply_ticket['comment'] = $this->input->post('comment');
 
               $reply_ticket['create_date'] = now();
 
               $reply_ticket['file'] = $file;
 
               $insert_ticket_comment $this->ticket_model->reply($reply_ticket);
 
               if ($insert_ticket_comment) {
 
                   $show = array();
 
                   $id $this->input->post('ticket_id');
 
                   $groups_id $this->ticket_model->get_groups_id($id);
 
                   $show['show_ticket'] = $this->ticket_model->show($id$groups_id);

 
                   redirect('ticket/show/'.$id);
 
               }
 
           }
 
   


شما باید اول ببینید در زمان آپلود خطا دارید یا نه؟ ما اومدیم اینجا چک میکنیم اگه خطا داشتیم متن خطا رو با متغیر #error ارسال میکنیم به view فرضی با نام upload_from اگر خطایی در زمان آپلود وجود نداشت بقیه کدتون رو که ذخیره در دیتابیس ای هرکاری دیگری باشه رو اجرا می کنید.
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
 سپاس شده توسط a76205
#9
سلام مهندس جان
بعد مدت ها برگشتم سروقت همون پروژه ای که میخواستم به اتمام برسونم  Smile
کدی که شما دادین رو تست کردم، وقتی فرم را ارسال کنم ( با ضمیمه کردن فایل و بدون ضمیمه کردن ) خطا میده:

Unable to load the requested file: upload_form.php


من توضیح بدم میخواستم چیکار کنم و لطفا شما کمکم کنید:

در حال ساختن سیستم تیکت هستم. در این صفحه قرار هست به تیکت پاسخ داده بشه و میتونیم فایل ضمیمه کنیم.
1. اگر فایلی که کاربر ضمیمه میکنه دارای خطا باشه اون خطا برگشت داده بشه و متن مناسبی نمایش بدم
2. اگر کاربر در textarea متن ننویسه فرم اعتبارسنجی بشه و خطا نمایش بدیم.

بخش اول را اصلا بلد نیستم.
بخش دومی فکر میکنم به function قبلیش نیازمنده

کد php:
 public function show()
 
   {
 
       $show = array();
 
       $id $this->uri->segment('3');
 
       $groups_id $this->ticket_model->get_groups_id($id);
 
       $show['show_ticket'] = $this->ticket_model->show($id$groups_id);

 
       foreach ($show['show_ticket'] as $show_value){
 
           $show_gorup_id $show_value['department_id'];
 
           $create_by_id $show_value['user_id'];
 
       }

 
       $show['show_ticket_comment'] = $this->ticket_model->get_reply($id);

 
       foreach ($this->aauth->get_user_groups() as $user_groups) {
 
           $user_groups_id $user_groups->id;
 
       }

 
       if (($this->aauth->is_member('Admin')) ||($user_groups_id == $show_gorup_id) || ($create_by_id == $this->aauth->get_user_id())) {
 
           $this->template->load('ticket/show_ticket'$show);
 
       }else{
 
           echo 'Access Denied';
 
       }
 
   
کد php:
   public function reply()
 
   {
 
       $config['upload_path'] = './file_ticket';
 
       $config['allowed_types'] = 'gif|jpg|png|jpeg|pdf|doc|docx|txt';
 
       $config['max_size'] = 4000;
 
       $config['max_width'] = 11024;
 
       $config['max_height'] = 7168;
 
       $this->load->library('upload'$config);
 
       $this->upload->initialize($config);

 
      // if ( !$this->upload->do_upload('userfile')) {
 
        //   $error = array('error' => $this->upload->display_errors());
 
         //  $this->load->view('upload_form', $error);
 
          // return;
 
       //}

 
       $uploadData $this->upload->data();
 
       $file $uploadData['file_name'];


 
       $this->form_validation->set_rules('comment''Comment''required|trim');
 
       if ($this->form_validation->run() == FALSE) {
 
        //    $this->template->load('ticket/show_ticket',array('groups' => $ticket_add));
 
       //در اینجا چه کدی بنویسم ؟

 
       } else {
 
           $reply_ticket['ticket_comment_id'] = '';
 
           $reply_ticket['ticket_id'] = $this->input->post('ticket_id');
 
           $reply_ticket['user_id'] = $this->aauth->get_user_id();
 
           $reply_ticket['comment'] = $this->input->post('comment');
 
           $reply_ticket['create_date'] = now();
 
           $reply_ticket['file'] = $file;
 
           $insert_ticket_comment $this->ticket_model->reply($reply_ticket);
 
           if ($insert_ticket_comment) {
 
               $show = array();
 
               $id $this->input->post('ticket_id');
 
               $groups_id $this->ticket_model->get_groups_id($id);
 
               $show['show_ticket'] = $this->ticket_model->show($id$groups_id);

 
               redirect('ticket/show/'.$id);
 
           }
 
       }
 
   
پاسخ
#10
نقل قول: در اینجا چه کدی بنویسم ؟
اینجا باید متن خطا رو تنظیم کنید. 

دقیقا تو پست قبلی این مواردی که میخواهید رو توضیح دادم.

شما اول یه فرم ولیدیشن بنویسید اگر خطا نداشت فایل رو چک کنی و اگه خطا نداشت اطلاعاتت رو با موفقیت ثبت کنی.
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
 سپاس شده توسط a76205


پرش به انجمن:


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