RkBlog

Hardware, programming and astronomy tutorials and reviews.

Zapisywanie danych z formularzy w bazie danych

Kod zawarty w poprzednim warsztacie dotyczącym walidowania formularzy, kod Modelu i tabeli z lekcji o Active Records można dość szybko połączyć i zapisać nasze dane wysłane z formularza w bazie danych.
- Załaduj globalnie (config/autoload.php) klasę 'database' $autoload['libraries'] = array('database', 'validation');
- Skonfiguruj połączenie z bazą danych w config/database.php zgodnie z lekcjami (zostaw pusty prefix)
- Zapisz model "news.php" z lekcji o Active Records
- Utwórz tabelę (w phpmyadmin) o kodzie:
CREATE TABLE `news` (
  `news_id` smallint(5) unsigned NOT NULL auto_increment,
  `news_title` varchar(255) default NULL,
  `news_text` text,
  PRIMARY KEY  (`news_id`)
) ENGINE=MyISAM;
- Edytuj kontroler Formularz do postaci:
<?php
class Formularz extends Controller
{
function index()
 {
 $data["tytul"] = array('name' => 'tytul');
 $data['tresc'] = array('name' => 'tresc', 'rows' => 3, 'cols' => 40);
 
 $rules['tytul'] = "required";
 $rules['tresc'] = "required";
 $this->validation->set_rules($rules);
 
 if ($this->validation->run() == FALSE)
 {
 $data['tytul']['value'] = $this->input->post('tytul');
 $data['tresc']['value'] = $this->input->post('tresc');
 $this->load->view('form', $data);
 }
 else
 {
 $this->load->model('News');
 $this->News->add_news(array('news_title' => $this->input->post('tytul'), 'news_text' => $this->input->post('tresc')));
 echo 'Dane zapisane';
 }
 }
}
- Gotowe

W kontrolerze pojawiły się dwa nowe wiersze. $this->load->model('News'); załadowało model News, a
$this->News->add_news(array('news_title' => $this->input->post('tytul'), 'news_text' => $this->input->post('tresc')));
Wykonuje metodę "add_news" z tego modelu. Metoda ta dodaje (zgodnie z wcześniejszym opisem) wpis do tabeli news.
Jeżeli dane są poprawne to zostaną zapisane w bazie danych, co można podejżeć w phpmyadminie... lub napisać metodę kontrolera listującą wszystkie wpisy:
<?php
function listuj()
 {
 $this->load->model('News');
 foreach ($this->News->get_news()->result() as $val)
 {
 echo $val->news_title.'<BR />';
 }
 }
RkBlog

Kurs Code Igniter, 14 July 2008, Piotr Maliński

Comment article