2016-05-10 16 views
0

Ich versuche, Bild in das Formular hochzuladen. Alle Daten in Form können in der Datenbank gespeichert werden, die Bilder annehmen. Und die Bilder werden auch nicht in den Upload-Pfad eingefügt. Ich möchte machen, wenn Benutzer alle Formularinformationen ausfüllen und ein Bild hochladen, Benutzer klicken Sie auf die Schaltfläche Senden und alle Daten einschließlich Bild speichern in der Datenbank. Was ist falsch an meinem Code? Danke.Bild ist nicht in Datenbank codeigniter hochgeladen

//view.php

<?php echo form_open_multipart('writereview/create');?> 
<label for="sitename"><span>Sitename <span class="required">*</span></span><input type="text" class="input-field" name="sitename" value="" /></label> 
<input type="file" name="images" size="20" /> <br /> 
<label><span>&nbsp;</span><input type="submit" value="Submit" /></label> 

// Controller

public function create() //insert data 
{ 
    $data['title'] = 'Write Review'; // Capitalize the first letter 
    $this->load->helper(array('html', 'url', 'form')); 

    $this->config_model->writereview(); 

    $this->load->view('templates/header', $data); 
    $this->load->view('writereview/writereview'); 
    $this->load->view('templates/footer'); 
} 

// Modell

public function writereview() 
{ 
    $this->load->helper('url'); 

    $type = explode('.', $_FILES["pic"]["name"]); 
    $type = strtolower($type[count($type)-1]); 
    $url = "./assets/images/".uniqid(rand()).'.'.$type; 
    if(in_array($type, array("jpg", "jpeg", "gif", "png"))) 
     if(is_uploaded_file($_FILES["pic"]["tmp_name"])) 
      if(move_uploaded_file($_FILES["pic"]["tmp_name"],$url)) 
       return $url; 


    $data = array(
     'sitename' => $this->input->post('sitename'), 
     'images'=>$this->input->post('images') 
    ); 
    return $this->db->insert('review', $data); 
} 
+0

Dateinamen ist 'name =" images "' und du '$ _FILES [" pic "]' das ist falsch. Verwenden Sie '$ _FILES [" images "]' – Saty

+0

Es tut mir leid. Es funktioniert nicht .. – David

+0

Mögliche Duplikate von [Wie hochzuladen Bild in CodeIgniter?] (Http://stackoverflow.com/questions/17315962/how-to-upload-image-in-codeigniter) –

Antwort

0

Änderung Array Ihre Einsatzdaten

$data = array(
     'sitename' => $this->input->post('sitename'), 
     'images'=>$uploaded_file_name 
    ); 

auch $_FILES["pic"]["name"] to $_FILES["images"]["name"]

ändert es gibt keinen Beitrag Schlüssel Bilder als Eingabetyp Datei mit dem Namen ...

der komplette Code für Ihr Beispiel ist ...

 $image_name =''; 
     if (isset($_FILES['images']['tmp_name']) && $_FILES['images']['tmp_name'] != '') 
     { 
      $config['upload_path'] = 'assets/images/'; 
      $config['allowed_types'] = 'gif|jpg|png|jpeg'; 
      $config['max_size'] = '20000'; // change it to your max file size 
      $this->load->library('upload', $config); 
      $this->upload->initialize($config); 
      if (!$this->upload->do_upload('images')) {//if upload error 
      print_r($this->upload->display_errors());//print error 
      }else{ 
      $data = $this->upload->data(); 
      $image_name = $data['file_name']; 
      } 
     } 
     $data = array(
      'sitename' => $this->input->post('sitename'), 
      'images'=>$image_name 
     ); 
     return $this->db->insert('review', $data); 
+0

Ich habe geändert, aber wenn ich auf Absenden klicken, passiert nichts. Es wird nicht mit writeereview/create verlinkt. – David

+0

remove return $ url; –

+0

Ich weiß nur, ich habe keine Bibliothek Datei Anruf hochladen. Was sollte in der Upload-Bibliothek enthalten sein? – David

Verwandte Themen