18 de Fevereiro de 2007

Validação automática de dados

Lista de erros

Gosto de guardar uma lista com informações sobre erros, para fazer processamentos posteriores com essas informações. Por exemplo, pode-se apresentar uma lista de avisos no corpo das páginas e marcar os campos inválidos de formulários.

function erro($id = NULL, $tipo = NULL, $dados = NULL)
{
static $erros = array();

// a) devolver a primeiro erro, e retira-o da lista
if($id == NULL)
{
return array_shift($erros);
}

// b) adicionar entrada na lista de erros
array_push($erros, array($id, $tipo, $dados));
}

Validação de dados

Antes de fazer alterações na base-de-dados a partir de entradas dos utilizadores, deve-se validá-las. Em vez de construir várias linhas com instruções condicionais, prefiro indicar essas informações num vector (array) e colocá-lo como argumento numa função que faça automaticamente a validação. Mostro um trecho que procura campos obrigatórios que estão vazios:

foreach($inf_dados as $k=>$v) {
// verificar se há campos obrigatórios vazios
if( array_key_exists('obrigatorio', $inf_dados[$k]) &&
$inf_dados[$k]['obrigatorio'] == true && empty($in_dados[$k]) )
{
erro('obrigatorio-' . $k, 'warning');
++$no_erros;
}
} // if

// ...
} // foreach

 

Ao chamar essa função, são removidas automaticamente as entradas que não pertencem ao contexto, usando o vector para validação. Por isso, na chamada da função, posso usar como argumento a variável $_POST (com todos os valores dos formulários com métodos de envio post), o que poupa trabalho.

// remover entradas que não existem em $inf_dados
foreach( $in_dados as $k=>$v ) {
if( !array_key_exists($k, $inf_dados) )
{
unset($in_data[$k]);
} // if
} // foreach

 

Mais tarde irei enviar um novo artigo mais aprofundado sobre o tema.

Artigo relacionado

Sugestões

Escrito por PedroAC em 19:36:22 | Link permanente | Comments (0) |

11 de Fevereiro de 2007

Efeito button hover com CSS

Para aplicar efeitos com sobreposição de apontador, usa-se a pseudo-classe hover. Por exemplo, neste blog ao sobrepor o apontador num botão (como na pesquisa), esse parece ser pressionado.

button
{
font-weight: bold;
background-color: #1446b4;
color: #ffffff;
border: 1px solid #0e3280;
border-bottom-width: 2px;
border-left-width: 2px;
vertical-align: middle;
padding: 0 6px;
margin: 0;
}


button:hover
{
cursor: pointer;
border-width: 1px;
background-color: #174fcc;
margin-right: 1px;
margin-top: 1px;
}

Read more...
Escrito por PedroAC em 13:20:23 | Link permanente | Comments (0) |

30 de Janeiro de 2007

Aventuras com CSS neste blog

Tive de fazer alterações no design do site ao descobrir problemas com o IE (como costume) e limitações do serviço (que espero serem ultrapassadas pelo suporte técnico do serviço). Já estava a pensar em mudar o visual para algo mais organizado, elegante e personalizado (espero que gostem).

Neste artigo mostro algumas medidas que usei para refazer o visual do site, com dicas, sugestões e problemas encontrados que podem ajudar a personalizar e melhorar os vossos sites. Não vou escrever sobre tudo o que fiz (o texto já vai longo...), e mais tarde farei artigos sobre temas específicos aqui tratados, aprofundando melhor.

Também espero receber críticas, sugestões e textos sobre experiências, que podem ajudar-me e aos webdesigners.

Teste offline

Visualizei o código fonte da página (em XHTML), gravei num ficheiro e procurei pela ligação do ficheiro CSS:

<link rel="stylesheet" media="screen, projection" type="text/css" href="http://pedroac.blog.com/css/" />

Portanto, o ficheiro CSS encontra-se em http://pedroac.blog.com/css. Guardei uma cópia, num ficheiro "pedro.css" e substituí a referência da ligação ao ficheiro CSS, no código XHTML, deste modo:

<link rel="stylesheet" media="screen, projection" type="text/css" href="pedroac.css" />

Isto vai permitir testar as modificações realizadas no computador que uso, isto é, em offline, publicando o código quando tiver testado previamente.

Com o Mozilla Firefox é possível ver os resultados de edição CSS em tempo real, usando o editor de CSS do plugin Web Developer. Basta aceder a Web Developer > CSS > Editar CSS, fixar o editor, para não perder os dados ao mudar de separador ou link, e mudar o código directamente. Depois de ficar satisfeito com os resultados, grava-se num ficheiro.

Read more...
Escrito por PedroAC em 21:14:45 | Link permanente | Comments (2) |

23 de Janeiro de 2007

Framework para Web; DAO #1

Há algum tempo que penso fazer uma pequena framework para aplicações Web, e decidi começar pelo Data Access Object. Depois de ter lido artigos de Tony Marston, tive uma ideia diferente sobre programação informática, e decidi refazer o trabalho que tinha feito.

Agora vou implementar uma classe genérica para Data Manipulation Languages baseando em ideias de Marston, começando pelo MySQL, que tenho instalado num Ubuntu. Existem algumas opções de implementação que não concordo, como o parser de SQL (ou melhor, da parte WHERE). Acho que seria boa ideia fazer uma máquina de estado para o efeito, mas não sei seria a eficiência interpretador PHP...

Read more...
Escrito por PedroAC em 21:22:40 | Link permanente | Comments (0) |

Design do blog; Cascading Style Sheets

Muitos autores de blogs não personalizam as suas aparências, talvez por desconhecerem a linguagem CSS (Cascading Style Sheets). Para separar o conteúdo de documentos Web e o seu formato, utiliza-se as CSS. É uma linguagem fácil de usar, apesar de algumas inconsistências entre navegadores Web.

Infelizmente existem problemas com o IE quanto a tamanhos relativos em layouts. Desde que descobri isso, passei a usar valores absolutos (ex: pixels) para não ter demasiado trabalho a testar no Firefox e no IE, mas tenho preferência por layouts fluidos.

Read more...
Escrito por PedroAC em 00:12:19 | Link permanente | Comments (0) |