Zapisywanie danych z formularzy w bazie danych
14 July 2008
Comments
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;
<?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';
}
}
}
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
Comment article