Programação para a Internet II 2.5. PHP Formulários Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt
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. 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>... (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 2
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 http://www.xpto.pt?nome=to&apelido=ninho (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 3
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:... <form method="post">...elementos... </form>... (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 4
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>... (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 5
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 (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 6
Caixa de texto Usada quando se pretende inserir uma ou mais linhas de texto <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) (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 7
Checkbox Escolher uma ou mais opção de uma lista 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 <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> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 8
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="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]); } } }?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 9
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 uma opções, terão que ter o mesmo nome. (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 10
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 <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> 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 selected usada quando se pretende seleccionar por defeito uma determinada opção (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 11
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="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]); } } }?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 12
Botões Usados para submeter o formulário, e não só... <input type="submit" name="submit" value="submit" /> <input type="reset" name="reset" value="reset" /> <input type="button" name="button" value="button" /> Atributos name - Permite identificar o elemento de formulário type identifica o tipo de input (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 13
Password Usados em situações em que é necessário introduzir passwords O texto introduzido é substituído por asteriscos (*) <input name="nomedoelemento" type="password" size="20" maxlength="20" /> 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 (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 14
File Utilizado para fazer upload de ficheiros <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) Nota: nesta secção apenas se apresenta o elemento HTML file, mais à frente ir-se-á apresentar como se processa o upload de ficheiros com PHP. (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 15
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 (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 16
Aceder aos valores dos campos de formulário via GET (valores passados no endereço do pedido - URL). <?php $nome = $_GET["nome"];?> Aceder aos valores dos campos de formulário via POST (valores encapsulados no corpo do pedido) <?php $nome = $_POST["nome"];?> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 17