2017-06-20 22 views
0

おはよう!私は自分のデータベースに製品の写真をアップロードし、別のビューページにその製品を表示するフォームを作ったが、実際には機能していない。CodeIgniterで写真をアップロードしようとしていますが、機能していません

これが私の見解では、私のフォームです:

<form action="<?php echo site_url('Product/product_form'); ?>" method="post"> 


     <h2> Cadeau aanbieden</h2> 

     <table class="aanbieding-cadeau"> 
     <tr> 

      <td><?php echo form_input(array('id'=>'product_naam', 'name'=>'product_naam', 'placeholder' => '1. Naam van het cadeau', 'size'=>25));?></td> 
     </tr> 
     <tr> 

      <td><?php echo($selectField);?></td> 
     </tr> 
     <tr> 

      <td><?php echo form_input(array('id'=>'ophaal_plaats', 'name'=>'ophaal_plaats', 'placeholder' => '3.Kies een stad', 'size'=>25));?></td> 
     </tr> 
     <tr> 

      <div class="checkbox"> 
    <label><input type="checkbox" value="">Gebruik adres van mijn account</label> 
</div> 

      <td> 
      <h4>Upload foto</h4> 

       <?php 
    echo $this->session->flashdata('msg'); 
    $arr = array('name' => 'product_foto', 'type'=>'file'); 
echo form_open_multipart(); 
    echo form_upload($arr); 
     echo form_submit('upload', 'Upload'); 

    ?> 
      </td> 


     </tr> 
     <tr> 

      <td><?php echo form_textarea(array('type'=>'textarea','id'=>'product_beschrijving', 'name'=>'product_beschrijving', 'placeholder' => '5. Vertel iets over dit cadeau..', 'size'=>25));?></td> 
     </tr> 
     <tr> 

      <td><button type="submit" class="btn btn-primary">Cadeau aanbieden!</button> 
     </td> 
     </tr>  
     </table> 
    </form> 

そして、この画像をアップロードするために働いていないthatsの私の見解ではコードです:

<?php 
    echo $this->session->flashdata('msg'); 
    $arr = array('name' => 'product_foto', 'type'=>'file'); 
echo form_open_multipart(); 
    echo form_upload($arr); 
     echo form_submit('upload', 'Upload'); 

    ?> 

私は絵がないフォームを送信読み込まれ、画像は自分の画像フォルダに追加されません。

これは私の製品コントローラです:

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 
class Product extends CI_Controller { 


    var $data = array(); 

    public function index() 
{ 

    $this->load->view('product_form', $this->data); 


    $query = $this->db->query('SELECT * FROM products'); 
    $image_id = $query->num_rows() + 1; 

    $config = array (
    'upload_path' => './upload/', 
    'allowed_types' => 'jpg|jpeg|png|bmp', 
    'max_size' => 0, 
    'filename' => $image_id 

    ); 

    $this->load->library('upload', $config);   

    if ($this->upload->do_upload('file')) { 
    $this->db->insert('products', array(
     'product_foto' => $this->upload->file_name 
)); 
    $this->session->set_flashdata('msg', 'Success'); 
    } 


} 


public function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('product_model'); 
    $this->load->helper(array('form', 'url')); 
} 

public function product_form() 
{ 
    $save = array(
     'product_naam'   => $this->input->post('product_naam'), 
     'product_beschrijving'   => $this->input->post('product_beschrijving'), 
     'product_categorie' => $this->input->post('product_categorie'), 
     'ophaal_plaats' => $this->input->post('ophaal_plaats'), 
     'product_foto' => $this->input->post('product_foto'), 
     'date_created' => date('Y-m-d'), 
     'date_updated' => date('Y-m-d') 
     ); 

    $this->product_model->saveProduct($save); 
    redirect('https://kadokado-ferran10.c9users.io/AlleCadeausController'); 
} 
} 

注:私は私の通常のフォームの外、このコードを使用すると、私は自分のデータベースと画像に画像をアップロードすることができますが、私のフォルダに追加されますん:

<?php 
echo $this->session->flashdata('msg'); 
echo form_open_multipart(); 
echo form_upload('file'); 
echo form_submit('upload', 'Upload'); 
echo form_close(); 
?> 

誰かが、あなたのフォームで おかげ

+0

正常に動作していれば、通常のフォーム** enctype = "multipart/form-data" **を設定してください –

答えて

0

をコード化されていない、そこに持っている:あなたは

テキスト/プレーンファイルアップロードコントロールを持つフォームを使用している場合は、この値は必須ですいくつかの家具の問題。

  1. は、画像をアップロードすることが不可欠である形でをenctype属性のenctype = "multipart/form-data" を追加します。
  2. ダブル送信ボタンを使用する必要はありません。したがって、を削除してください。echo form_submit( 'upload'、 'Upload');を表示します。
  3. ビューの上にフォームタグを使用しました。したがって、使用する必要はありませんecho form_open_multipart();をもう一度表示してください。

希望すると、これが役立ちます。

0

を私を助けることができると思いますが、任意のファイルのアップロードを行う際に、ENCTYPEが必要です。

あなたのフォームは以下のようになります。

<form action="<?php echo site_url('Product/product_form'); ?>" method="post" enctype="multipart/form-data"> 

enctype属性は、フォームデータをサーバーに送信するときにエンコードする方法を指定します。

注: enctype属性は、method="post"の場合にのみ使用できます。

構文:<form enctype="value">

アプリケーション/ x-www-form-urlencodedで:デフォルト。すべての文字が前に(スペースは「+」記号に変換され、特殊文字はASCIIのHEX値に変換されます)

マルチパート/フォームデータを送らエンコードされている:いいえ文字はエンコードされていません。スペースは「+」記号に変換されますが、特別な文字はあなたのビューで

関連する問題