Programação para a Internet II
2.5. PHP – Formulários
Nuno Miguel Gil Fonseca
nuno.fonseca@estgoh.ipc.pt
PHP – Hypertext Preprocessor
Formulários
Os formulários constituem uma das principais formas
de interacção entre “clientes” e “servidores”.
São um dos principais responsáveis pelo surgimento de
sites dinâmicos, com informação dinâmica.
sites dinâmicos, com informação dinâmica.
Um dos principais requisitos de um programador de
PHP é a sua capacidade de saber trabalhar com
formulários.
Estrutura básica de um formulário em (X)HTML
...
<form ...>
...elementos...
</form>
PHP – Hypertext Preprocessor
Formulários (cont.)
GET e POST
Existem duas formas de fazer chegar a informação contida nos
formulários desde o browser dos clientes até ao servidor.
No caso do GET, a Informação é enviada textualmente no
endereço do pedido que é feito ao servidor
endereço do pedido que é feito ao servidor
PHP – Hypertext Preprocessor
Formulários (cont.)
GET e POST
Já no caso do POST, a informação segue encapsulada no pedido
HTTP, ou seja, escondida do utilizador.
Para definir se os dados serão envidados por GET ou por POST,
basta fazer:
basta fazer:
...
<form
method="POST"
>
...elementos...
</form>
...
PHP – Hypertext Preprocessor
Formulários (cont.)
Acção
Quando um formulário é submetido, é suposto que alguma acção
seja executada, ou seja, que algum ficheiro PHP seja
chamado...
...
<form
action="xpto.php"
method="POST">
...elementos...
</form>
...
PHP – Hypertext Preprocessor
Formulários (cont.)
Elementos de formulário
Linha de texto
Usada quando se pretende inserir
uma linha de texto
<input type="text" name="nomeDoElemento" id="nomeDoElemento" value="valor inicial" size="20" maxlength="20" />
Atributos
name -Permite identificar o elemento de formulário
type – identifica o tipo de input
value – permite especificar um valor por defeito
size – permite especificar o tamanho da “caixa” de texto (em numero de
caracteres)
maxlength – permite especificar o número máximo de caracteres que podem ser
escritos na “caixa” de texto
Formulários (cont.)
Elementos de formulário(cont.)
Caixa de texto
Usada quando se pretende inserir
uma ou mais linhas de texto
PHP – Hypertext Preprocessor
<textarea name="nomeDoElemento" id="nomeDoElemento" cols="40" rows="4">valor inicial</textarea>
Atributos
name - Permite identificar o elemento de formulário
cols – permite especificar a largura da caixa de texto (em numero de caracteres)
rows – permite especificar a altura da caixa de texto (em número de linhas)
Formulários (cont.)
Elementos de formulário(cont.)
Checkbox
Escolher uma ou mais opção de uma lista
Atributos
name - Permite identificar o elemento de formulário
– identifica o tipo de input
PHP – Hypertext Preprocessor
type – identifica o tipo de input
value – permite especificar o valor que é passado no caso da opção estar seleccionada
checked – usada quando se pretende seleccionar por defeito uma determinada opção
<input type="checkbox" name="checkboxa" value="checked" checked="checked" />opção a<br> <input type="checkbox" name="checkboxb" value="checked" />opção b<br>
<input type="checkbox" name="checkboxc" value="checked" />opção c<br> <input type="checkbox" name="checkboxd" value="checked" />opção d<br>
PHP – Hypertext Preprocessor
Formulários (cont.)
Elementos de formulário(cont.)
Checkbox (cont)
Por vezes não se sabe à partida quantas checkboxes iremos ter, pelo que é
necessário proceder de forma diferente...
<input type="checkbox" name="nomeDaCheckbox[]" value="a" checked="checked" />opção a<br> <input type="checkbox" name="nomeDaCheckbox[]" value="a" checked="checked" />opção a<br> <input type="checkbox" name="nomeDaCheckbox[]" value="b" />opção b<br>
<input type="checkbox" name="nomeDaCheckbox[]" value="c" />opção c<br> <input type="checkbox" name="nomeDaCheckbox[]" value="d" />opção d<br>
<?php
if(isset($_POST["nomeDaCheckbox"])){ $valores = $_POST["nomeDaCheckbox"]; if (count($valores)>0){
for($i=0;$i<count($valores);$i++){ print($valores[$i]);
} }
PHP – Hypertext Preprocessor
Formulários (cont.)
Elementos de formulário(cont.)
RadioButton
Ideal para quando é necessário escolher
apenas uma opção de uma lista
sim <input name="radiobutton" type="radio" value="sim" checked="checked" /> não <input name="radiobutton" type="radio" value="nao" />
Atributos
name - Permite identificar o elemento de formulário
type – identifica o tipo de input
value – permite especificar o valor que é passado no caso da opção estar seleccionada
checked – usada quando se pretende seleccionar por defeito uma determinada opção
Nota: Para dois ou mais radiobuttons permitirem a selecção de apenas
não <input name="radiobutton" type="radio" value="nao" />Formulários (cont.)
Elementos de formulário(cont.)
SelectBox
Ideal para quando é necessário escolher
uma ou mais opções de uma lista
O select define o grupo de opções, option define cada uma das opções
PHP – Hypertext Preprocessor
<select name="nomeDoSelect" id="nomeDoSelect">
Atributos de select
name- Permite identificar o elemento de formulário
Atributos de option
value – permite especificar o valor que é passado no caso da opção estar seleccionada
<select name="nomeDoSelect" id="nomeDoSelect">
<option value="a" selected="selected">opção a</option> <option value="b">opção b</option>
<option value="c">opção c</option> </select>
PHP – Hypertext Preprocessor
Formulários (cont.)
Elementos de formulário(cont.)
SelectBox(cont)
Por vezes temos a necessidade de escolher mais do que uma opção
<select name="nomeDoSelect[]" multiple="multiple" size="4"><option value="a" selected="selected">opção a</option> <option value="a" selected="selected">opção a</option> <option value="b">opção b</option>
<option value="c">opção c</option> </select>
<?php
if(isset($_POST["nomeDoSelect"])){ $valores = $_POST["nomeDoSelect"]; if (count($valores)>0){ for($i=0;$i<count($valores);$i++){ print($valores[$i]); } } }
Formulários (cont.)
Elementos de formulário(cont.)
Botões
Usados para submeter o formulário, e não só...
PHP – Hypertext Preprocessor
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
Atributos
name - Permite identificar o elemento de formulário
type – identifica o tipo de input
<input type="reset" name="reset" value="Reset" /> <input type="button" name="button" value="Button" />
Formulários (cont.)
Elementos de formulário(cont.)
Password
Usados em situações em que é necessário introduzir passwords
O texto introduzido é substituído por asteriscos (*)
PHP – Hypertext Preprocessor
Atributos
name - Permite identificar o elemento de formulário
type – identifica o tipo de input
size – permite especificar o tamanho da “caixa” de texto (em numero de caracteres)
maxlength – permite especificar o número máximo de caracteres que podem ser escritos na
“caixa” de texto
Formulários (cont.)
Elementos de formulário(cont.)
File
Utilizado para fazer upload de ficheiros
PHP – Hypertext Preprocessor
<input name="nomeDoElemento" type="file" size="10" />
Atributos
name - Permite identificar o elemento de formulário
type – identifica o tipo de input
size – permite especificar o tamanho da “caixa” de texto (em numero de caracteres)
<input name="nomeDoElemento" type="file" size="10" />
Nota: nesta secção apenas se apresenta o elemento HTML file, mais à frente ir-se-á apresentar como se processa o upload de
PHP – Hypertext Preprocessor
Formulários (cont.)
Elementos de formulário(cont.)
Campos escondidos
Utilizado para transmitir informação não visível aos utilizadores
<input name="nomeDoElemento" type="hidden" value="abc" />Atributos
name - Permite identificar o elemento de formulário type – identifica o tipo de input
value – o valor que será transmitido