2017-05-07 3 views
0

Ich habe ein kleines Problem beim Versuch, ein Upload-Formular in Codeigniter zu machen. Nicht sicher, was ich falsch mache, alles andere wird korrekt in der Datenbank. Ich habe in der Dokumentation nachgeschaut und verschiedene Dinge ausprobiert, aber ich komme nicht weiter. Jede Rückmeldung wird sehr geschätzt!
Vielen Dank im Voraus.Codeigniter Bild Upload und Pfad zur Datenbank

Modell:

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

     $slug = url_title($this->input->post('naam'), 'dash', TRUE); 

       $config['upload_path'] = '/file_path/'; 
       $config['allowed_types'] = 'gif|jpg|png|jpeg'; 
       $this->load->library('upload', $config); 
       $this->upload->data('full_path');); 
       $data_upload_files = $this->upload->data(); 

       $image = $data_upload_files[full_path]; 

       $data = array(

      'naam' => $this->input->post('naam'), 
      'voornaam' => $this->input->post('voornaam'), 
      'id' => $slug, 
      'text' => $this->input->post('text'), 
      'picture'=>$this->input->post('picture') 
    ); 

     return $this->db->insert('student', $data); 
    } 

Controller:

public function create() 
      { 
       $this->load->helper('form'); 
       $this->load->library('form_validation'); 

       $data['title'] = 'Create a new Student'; 

       $this->form_validation->set_rules('naam', 'Naam', 'required'); 
       $this->form_validation->set_rules('voornaam', 'Voornaam', 'required'); 
       $this->form_validation->set_rules('text', 'Text', 'required'); 

       if ($this->form_validation->run() === FALSE) 
        { 
        $this->load->view('templates/header', $data); 
        $this->load->view('students/create'); 
        $this->load->view('templates/footer'); 

        } 
       else 
        { 
        $this->student_model->set_newstudent(); 
        $this->load->view('students/success'); 
        } 
      } 

Ansicht:

<?php echo validation_errors(); ?> 


<?php echo form_open_multipart('student/create');?> 

<div class="form-group"> 
<label for="naam">Naam</label><br> 
<input type="input" name="naam" class="form-control" /><br /> 
</div> 
<div class="form-group"> 
<label for="voornaam">Voornaam</label><br> 
<input type="input" name="voornaam" class="form-control"/><br /> 
</div> 
<div class="form-group"> 
<label for="text">Vertel iets over jezelf:</label><br> 
<textarea name="text" class="form-control" rows="5"></textarea><br /> 
</div> 

<div class="form-group"> 
<label for="text">Kies een profiel foto:</label><br> 
<input type="file" name="userfile" class="btn btn-default btn-file" /> 

</div> 
<input type="submit" class="btn btn-success" name="submit" 
value="Create student" style="width:100%;margin-bottom:1%" /> 

</form> 
+0

Was ist das? '$ this-> upload-> create' –

+0

Tut mir leid mein Fehler, es sollte $ this-> upload-> data ('full_path') sein; – Moya

+0

Welche Version von Codeigniter benutzen Sie bitte? –

Antwort

2

Wie ich sehe, gibt es keine

$this->upload->do_upload() 
File uploading Class

UPDATE

Der Code sollte in etwa so aussehen,

: 210

, dass die Funktion verantwortlich für die Durchführung der Upload und es ist nicht, dass es in Ihrem Code, können Sie dies lesen möchten Controller:

public function create(){ 
$this->load->helper('form'); 
$this->load->library('form_validation'); 
$data['title'] = 'Create a new Student'; 
$this->form_validation->set_rules('naam', 'Naam', 'required'); 
$this->form_validation->set_rules('voornaam', 'Voornaam', 'required'); 
$this->form_validation->set_rules('text', 'Text', 'required'); 
if ($this->form_validation->run() === FALSE){ 
    $this->load->view('templates/header', $data); 
    $this->load->view('students/create'); 
    $this->load->view('templates/footer'); 
}else{ 
    // Upload the files then pass data to your model 
    $config['upload_path'] = '/file_path/'; 
    $config['allowed_types'] = 'gif|jpg|png|jpeg'; 
    $this->load->library('upload', $config); 

    if (!$this->upload->do_upload('userfile')){ 
     // If the upload fails 
     echo $this->upload->display_errors('<p>', '</p>'); 
    }else{ 
     // Pass the full path and post data to the set_newstudent model 
     $this->student_model->set_newstudent($this->upload->data('full_path'),$this->input->post()); 
     $this->load->view('students/success'); 
    } 
} 
} 

Modell:

public function set_newstudent($path,$post){ 
$data = array( 
'naam' => $post['naam'], 
'voornaam' => $post['voornaam'], 
'text' => $post['text'], 
'picture'=>$path 
); 

return $this->db->insert('student', $data); 
} 
+0

Vielen Dank für Ihre Antwort Herr. Kann ich das zur Funktion create() hinzufügen? oder muss es eine separate Funktion sein? – Moya

+0

Es gibt keine solche Funktion wie create, kannst du mir sagen, wo hast du diese Funktion gefunden? –

+0

In der Steuerung – Moya

0

Das Problem ist in Ihrem Code, wo Sie Upload-Bibliothek verwenden. Sie verwenden die falsche Funktion zum Hochladen von Dateien. Unten ist der korrekte Code:

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

     // Check file uploaded or not 
     if ($this->upload->do_upload('userfile')) { 
      $data_upload_files = $this->upload->data(); 
      $image = $data_upload_files[full_path]; 
     } else { 
      // possibly do some clean up ... then throw an error 

     } 

Dieser Code sollte funktionieren.

+0

Es tut mir leid, es funktioniert nicht, ich habe den Code in der Steuerung auf die oben genannten geändert, aber ich bekomme immer noch nicht das Ergebnis – Moya

+0

Kann ich wissen, welchen genauen Fehler Sie auf dem Bildschirm bekommen? –

+0

Die Sache ist, ich bekomme keinen Fehler. Der Benutzer wird erstellt und die Felder Vorname und Nachname werden in die Datenbank geschrieben, aber ich sehe kein Bild, obwohl es angehängt wurde – Moya

Verwandte Themen