# زبان های اسکریپتی > PHP > CodeIgniter >  multi_part_form

## mohsenshahab

سلام   من یه فرم دارم که چند تا فیلد داره و اطلاعات اون رو به db منتقل می کنه . یکی از فیلد ها هم یک عکس رو  توی یک پوشه آپ میکنه و نام عکس رو در dbذخیره میکنه اما مشکلم اینجاست که نام فیلد عکس رو نمیتونه بگیره و هیچ نامی در db به عنوان نام عکس ذخیره نمیکنه --------------------------------------------

----------


## razzaghi.b

سلام دوست عزیز:
وقتی که فایل تو آپلود میکنی با استفاده از این *$this->upload->data() مینونی اطلاعات فایل بدست بیاری در واقع اطلاعات زیرو بهت میده 
*Array
(
    [file_name]    => mypic.jpg
    [file_type]    => image/jpeg
    [file_path]    => /path/to/your/upload/
    [full_path]    => /path/to/your/upload/jpg.jpg
    [raw_name]     => mypic
    [orig_name]    => mypic.jpg
    [file_ext]     => .jpg
    [file_size]    => 22.2
    [is_image]     => 1
    [image_width]  => 800
    [image_height] => 600
    [image_type]   => jpeg
    [image_size_str] => width="800" height="200"
)

----------


## mohsenshahab

سلام و ممنون از جوابتون .
ولی سوال من چیز دیگه ای هست
سوال من اینه که چه جوری میشه نام فیلد form_upload رو به db فرستاد .همین
چون فرم من تمام اطلاعات (نام .نام حانوادگی و...) رو به db اضافه میکنه ولی به جای نام عکس یه صفر میزاره .ممنون اگه کمک کنین

----------


## razzaghi.b

ببین من با این تابع اسم فایل ها رو چاپ می کنم
             function list_file(){
                $data['file_list'] = get_dir_file_info('./image/uploads/');
                $data['count_file'] = count($data['file_list']);
                    $this->load->view('listfile_view',$data);    
            }
ها لا تو view چاپ میکنم

                    <table width="60%" border="0" cellpadding="0" cellspacing="0" class="grid">
                      <tr>
                        <td width="45%" align="center">نام</td>
                        <td width="15%" align="center">اندازه</td>
                        <td width="30%" align="center">تاریخ ایجاد</td>
                        <td width="10%" align="center">حذف</td>

                      </tr>

                    <?php while (list($key, $val) = each($file_list)) :?>
                     <tr align="center">
                        <td><?=$key?></td>
                        <?php for($i=0;$i<1;$i++):?>
                        <td><?=$file_list[$key]['size']?>  کیلو بایت </td>
                        <td><?=$file_list[$key]['date']?></td>                      
                      <?php endfor;?>
                        <td><a href="index.php/file/remove/<?=$key?>"><img src="image/delete.gif" /></a></td>                      
                      </tr>

                    <?php endwhile;?>                      

                    </table>
به فیلد تو دیتا بیس نگاه کن شاید مقدارش اشتباه شده

----------


## mohsenshahab

سلام آقا رضا و ممنون از جوابتون
من فکر میکنم نتونستم سوالم رو درست مطرح کنم، ببینید من یه db دارم که این فیلد ها رو داره
id   file_name   file_photo

حالا از view شروع میکنم(ببخشید اگه تو سینتکس اشتباه میکنم چون الان خونه نیستم)
 
<?=multipart_form('myclass/upload');?>
<?php
$file_name=array(
'name' => 'file_name',
'id' =>'file_name',
'value' =>''
); ?>
<?=form_input($file_name);?>
<?
$file_photo=array(
'name' => 'file_photo',
'id' =>'file_photo',
'value' =>''
); ?>
<?=form_upload($file_photo);?>
.......................
.......................
......................

حالا توی model مینویسیم

<?php
.........................
..........................
function insert($file_name,$file_photo)
{
$data=array(
'file_name' =>$file_name,
'file_photo' =>$file_photo
);
$this->db->insert('db',$data);


و کنترلر

<?php
...............................
..............................
..............................
function upload()
{
فایل را آپلود می کنیم
}
function insert{
$file_name=$this->input->post($file_name);
$file_photo=$this->input->post($file_photo);
$this->model->insert($file_name,$file_photo);
............................
...........................

ممکنه بگی این چه جور کد نوشتنیه ولی من فقط می خواستم سوالم رو مطرح کنم
اما سوال:"
وقتی اطلاعات رو وارد میکنم نام فایل (file_name ) تو db درج میشه و عکس هم در پوشه مورد نظر آپ میشه اما به جای نام عکس توی db یه 0 میذاره

----------


## razzaghi.b

سلام دوست گل من اسم من بهروز رزاقی هستش  . 'رضا نیست' 
تا جایی که من فهمیدم شما می خوای یه فایل آپلود کنی و اسمشو تو دیتا بیس ذخیره کنی درسته ؟؟؟
حالا به فایلهایی که من برات ضمیمه کردم یه نگاهی بکن ببین درستن ؟؟  :لبخند: 
code.rar

----------


## mohsenshahab

آقا بهروز دست گلت درد نکنه .

----------


## hidensoft

اشتباه شما دوست عزیز در این بود که برای گرفتن نام File از 
$file_name=$this->input->post($file_name);
استفاده کردید
تابع Post اطلاعاتی که توسط POST ارسال بشن رو می تونه داشته باشه اما برای دسترسی به اطلاعات فایل باید از FILES_$ یا کلاس مربوط به آپلود استفاده کنید.

----------

