2013-03-07 17 views
0

我試圖上傳一個圖像與汽車製造,年份,租賃和付款數據 以及圖像上傳。我的圖像路徑也插入到數據庫中,但我仍然無法確定如何組合兩者。 我得到一個error Array to string conversion,它不輸入​​我的數據和圖片上傳。在codeigniter的mysql表中上傳圖像和數據

汽車表:

car_make | car_model | car_year | car_lease | car_payment | imgpath 
acura | G37 Sedan | 2009 | 48  | 350  | assets/images/acura_1.jpg 

控制器:

public function car_validation_do_upload() { 

     $this->load->library('form_validation'); 


     $this->form_validation->set_rules('car_make', 'Car Make', 'required'); 
     $this->form_validation->set_rules('car_model', 'Car Model', 'required'); 
     $this->form_validation->set_rules('car_year', 'Car Year', 'required'); 
     $this->form_validation->set_rules('car_lease', 'Car Lease', 'required'); 
     $this->form_validation->set_rules('car_payment', 'Car Payment', 'required'); 

     if($this->form_validation->run() == TRUE) { 

      $config['upload_path'] = './assets/images/'; 
      $config['allowed_types'] = 'gif|jpeg|jpg|png'; 
      $this->load->library('upload', $config); 




      $newRow = array("car_make" => $this->input->post('car_make'), 
         "car_model" => $this->input->post('car_model'), 
         "car_year" => $this->input->post('car_year'), 
         "car_lease" => $this->input->post('car_lease'), 
         "car_payment" => $this->input->post('car_payment')); 

      $data = array('upload' => $this->upload->data()); 

      $result = array_merge($newRow, $data); 

     $this->load->model("model_users"); 

     $this->model_users->insert1($result); 
     $this->session->set_flashdata('message', 'car inserted into database!'); 
     redirect('main/insertCar'); 


    } 


    else { 
    $this->load->view('insert_car'); 
    } 


    } 


Model: 
public function insert1($data) { 

     $this->db->insert("cars", $data); 
     } 

View 
<?php 

    //echo form_open('main/car_validation_insert'); 
    echo form_open_multipart('main/car_validation_do_upload'); 
     echo validation_errors(); 

     if($this->session->flashdata('message')){ 
    echo $this->session->flashdata('message'); 
    } 
    ?> 

    <table width="504" style="margin-left:15px;"> 
<tr> 
<td colspan="2"><p class="table-title">Insert Car</p></td> 
<td></td> 

</tr> 

<tr> 
<td>Car Make: </td> 
<td><input type="text" name="car_make" class="textbox" tabindex="1"/></td> 
<td>&nbsp;&nbsp;&nbsp;</td> 


</tr> 
<tr> 
    <td>Car Model:</td> 
    <td><input type="text" name="car_model" class="textbox" tabindex="2"/></td> 
    <td>&nbsp;</td> 

</tr> 
<tr> 
    <td>Car Year:</td> 
    <td><input type="text" name="car_year" class="textbox" tabindex="3"/></td> 
    <td>&nbsp;</td> 

</tr> 
<tr> 
    <td>Car Lease:</td> 
    <td><input type="text" name="car_lease" class="textbox" tabindex="4"/></td> 
    <td>&nbsp;</td> 

</tr> 
<tr> 
    <td>Car Payment:</td> 
    <td><input type="text" name="car_payment" class="textbox" tabindex="5"/></td> 
    <td>&nbsp;</td> 

</tr> 

<tr> 
    <td>Car Image:</td> 
    <td><input type="file" name="userfile" size="20" /></td> 
    <td>&nbsp;</td> 

</tr> 

<tr> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
</tr> 

</table> 


<input type="submit" name="submit" value="submit" id="button" class="button" style="margin-left:140px;" /> 

<?php 

echo form_close(); 
?> 
+0

即時得到錯誤到表 – Masoman 2013-03-07 21:22:21

回答

1

更改此:

$data = array('upload' => $this->upload->data()); 

$result = array_merge($newRow, $data); 

要這樣:

if ($this->upload->do_upload()){ 
    $image_data = $this->upload->data(); 
    //this will create a new key with the name upload in your newRow 
    //so theres no need to use the function array_merge 
    $newRow['imgpath'] ='assets/images/'.$image_data['file_name']; 
} 
else{ 
    //do something here 
    echo 'error uploading image' 
} 

的$ IMAGE_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 
    [client_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" 
) 

你可以找到所有關於codeingiter的用戶指南文件上傳類的信息:插入值時 http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html

+0

嗨,我試過你的代碼它說未定義的變量:數組。我已經閱讀了用戶指南,我的表單更加複雜,因爲我試圖將文本和圖像上傳到同一張表。我還可以嘗試什麼?謝謝。這條線的 – Masoman 2013-03-07 21:55:22

+0

:$ newRow ['upload'] = $ array ['full_path'];我想改變'full_path'爲其他東西嗎? – Masoman 2013-03-07 21:56:23

+0

對不起,而不是$數組應該是$ image_data – 2013-03-07 21:57:21