Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Codeingiter] Zapisywanei nazwy pliku do bazy.
Forum PHP.pl > Forum > PHP > Frameworki
abcll
Witam, dopiero zaczynam swoją przygodę z tym frameworkiem. Napotkałem być może banalny problem. Stworzyłem stronę z portfolio i jestem na etapie tworzenia panelu administaracyjnego i funkcji dodawania prac do portfolio.
Utworzyłem formularz który składa się z pola do uploadu i wpisania nazwy klienta.
Mam problem z tym aby nazwa uploadowanego pliku zapisywała się w bazie danych. Chciałbym żeby nazwa wgrywanego pliku również zapisywała się do bazy danych tak aby można było całość wyświetlać w widoku.
Prosiłbym o jakąs małą podpowiedź ponieważ jestem początkujący w temacie codeignitera.

Poniżej wklejam kod swoich plików odpowiedzialnych za upload i zapis.

controller: portfolio.php
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. class Portfolio extends CI_Controller
  4. {
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. $this->load->library('pagination');
  9. $this->load->model('Portfolio_model');
  10. $this->load->helper('form');
  11. $this->load->library('form_validation');
  12. }
  13.  
  14. public function dodaj_prace()
  15. {
  16. $config['upload_path'] = './images/portfolio/miniatury';
  17. $config['allowed_types'] = 'gif|jpg|png';
  18.  
  19. $this->load->library('upload', $config);
  20. if ( ! $this->upload->do_upload())
  21. {
  22. $error = array('error' => $this->upload->display_errors());
  23. }
  24. else
  25. {
  26. $data = array('upload_data' => $this->upload->data());
  27. }
  28.  
  29. $data["klient"] = array('name' => 'klient');
  30. $rules['klient'] = "required";
  31.  
  32. $this->form_validation->set_rules($rules);
  33. if ($this->form_validation->run() == FALSE)
  34. {
  35. $data['klient']['value'] = $this->input->post('klient');
  36. $this->load->view('home_view', $data);
  37. }
  38. else
  39. {
  40.  
  41. $this->Portfolio_model->dodaj_prace(array('klient' => $this->input->post('klient')));
  42. echo 'zapisano w bazie';
  43. }
  44. }


model: Portfolio_model.php

  1. function dodaj_prace($data)
  2. {
  3. return $this->db->insert('portfolio', $data);
  4. }


widok: home_view.php
  1. <?php echo form_open_multipart('portfolio/dodaj_prace'); ?>
  2. <form method="post" accept-charset="utf-8" action="index.php/portfolio/dodaj_prace" /><Br />
  3. Wybierz plik: <br />
  4. <input type="file" name="userfile" size="20" /><br /><br />
  5. Wpisz nazwę klienta:<br />
  6. <?php echo form_input('klient', ''); ?><br /><br />
  7. <?php echo form_submit('mysubmit', 'Zapisz'); ?>
szok
  1. if($this->upload->do_upload())
  2. {
  3. $this->load->library('Images');
  4. $file = $this->upload->data();
  5. $do_bazy = array('nazwa_pliku' => $file['file_name']);
  6. }


Dokumentacja CI: http://codeigniter.com/user_guide/librarie..._uploading.html

$this->upload->data()

This is a helper function that returns an array containing all of the data related to the file you uploaded. Here is the array prototype:

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"
)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.