RkBlog

Hardware, programming and astronomy tutorials and reviews.

Przykładowy formularz

Omówienie przykładowego formularza i jego obsługi w CI

W tym warsztacie sporządzimy działający formularz. Formularz tworzymy w widoku. Dla przykładu ten nazwiemy form.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?PHP
echo form_open('formularz/submit');
echo form_hidden('czas', time());
echo '<B>Login</B> ';
echo form_input(array('size' => 30, 'name' => 'login'));
echo '<BR /><B>Hasło</B> ';
echo form_password(array('size' => 30, 'name' => 'password'));
echo '<BR /><B>Płeć</B> ';
echo form_dropdown('plec', array('on' => 'On', 'ona' => 'Ona'));
echo '<BR /><B>Zainteresowania:</B> PHP';
echo form_checkbox(array('name' => 'zainteresowania[]', 'value' => 'PHP', 'checked' => FALSE));
echo ', Perl';
echo form_checkbox(array('name' => 'zainteresowania[]', 'value' => 'Perl', 'checked' => FALSE));
echo ', Python';
echo form_checkbox(array('name' => 'zainteresowania[]', 'value' => 'Python', 'checked' => FALSE));
echo ', Java';
echo form_checkbox(array('name' => 'zainteresowania[]', 'value' => 'Java', 'checked' => FALSE));
echo '<BR />';
echo form_submit('submit', 'Wyślij');
?></body></html>
Mamy tutaj formularz stworzony za pomocą pomocnika CI i wykorzystujący większość pól. Warto przyjżeć się checkboxom. Nazwa pola to zainteresowania[] - nawiasy kwadratowe na końcu oznaczają tablicę - jeżeli kilka pól nazwiemy tak samo np "zainteresowania" to wartość tego pola po wysłaniu formularza zostanie określona przez ostatnie pole, resztę danych stracimy. Gdy dodamy [] dane ze wszystkich pól o tej samej nazwie będą przetrzymywane w tablicy.

Formularz wysyła dane do formularz/submit czyli kontroler: formularz, metoda: submit. Oto kontroler wyświetlający formularz jak i wynik:
<?php
class Formularz extends Controller
{
function index()
 {
 // załadowanie formularza
 $this->load->view('form');
 }
function submit()
 {
 // załadowanie wynikowego formularza, przekazanie danych
 $this->load->view('wynik', array('czas' => $this->input->post('czas'), 'login' => $this->input->post('login'), 'password' => $this->input->post('password'), 'plec' => $this->input->post('plec'), 'zainteresowania' => $this->input->post('zainteresowania')));
 }
}
Pod adresem index.php/formularz zobaczymy nasz formularz. Po jego wysłaniu dane zostaną przekazane do drugiego widoku (wynik), który je wyświetli. $this->input->post('nazwa_pola') zwraca wartość pola o podanej nazwie. Widok wynik.php wygląda tak:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?PHP

echo '<B>Login</B> '.$login;
echo '<BR /><B>Czas</B> '.$czas;
echo '<BR /><B>Hasło</B> '.$password;
echo '<BR /><B>Płeć</B> '.$plec;
echo '<BR /><B>Zainteresowania:</B><BR>';
foreach($zainteresowania as $val)
 {
 echo $val.'<BR />';
 }
?></body></html>
Wyświetla wszystkie dane, a zainteresowania, które są tablicą wyświetla w pętli. Powyższe trzy pliki prezentują pełen formularz, lecz brakuje jeszcze walidacji danych - sprawdzania ich poprawności i obecności. Tym zajmiemy się w kolejnym Warsztacie

Praca Domowa

- Spróbuj stworzyć własny formularz, który po wysłaniu wyświetli wprowadzone dane. Użyj różnych typów pól
RkBlog

14 July 2008;

Comment article