29 de Janeiro, 2010
Quando trabalhamos com as variáveis $_POST ou $_GET, acontece que muitas vezes enviamos valores 0 (zero).
Por exemplo: É muito provável que na variável $_POST['preco'], possa conter um valor 0 (zero), já que se trata de de uma variável que vai armazenar o preço de um determinado produto.
No entanto, quando se trata de um campo obrigatório, temos de efectuar uma validação de protecção. De este modo evitamos que alguém envie um valor vazio.
Mas… Que passará caso o valor enviado seja um 0 (zero)? Será que a validação será bem efectuada? Será que vai permitir que o valor 0 (zero) seja considerado valido?
Ler o resto desta entrada
Na categoria PHP | Sem Comentários »
22 de Janeiro, 2010
Apesar de andar nestas lides da programação, tento sempre estar ao dia, mas é uma tarefa complicada.
PHP tem muitas funções e por vezes quando estou procurando uma que melhor se adequa ao meu projecto, deparo-me com outras que nem sequer sabia que existiam.
É o caso da da função range() de PHP.
Esta função pode ser bastante útil e tem como função criar um array com uma determinada serie de números ou letras, dependendo dos parâmetros introduzidos.
Quero um array que tenha uma sequência de valores que comece no número 3 e termine no número 10.
Será que posso criar um array com estes requisitos apenas com uma instrução de PHP?
Ler o resto desta entrada
Na categoria PHP | Sem Comentários »
15 de Janeiro, 2010
Existe projectos que são uma autêntica dor de cabeça, no entanto, aprendemos muito com eles.
Imaginem que temos que ordenar um determinado resultado de forma ascendente, mas queremos que um determinado valor tenha prioridade sobre os outros valores e que saia em primeiro lugar.
Para evitar linhas de programação desnecessárias vamos analisar uma solução para MySQL.
Analisemos a seguinte tabela “demos”:

Ordenamos a tabela ascendentemente pelo valor:
SELECT * FROM demos ORDER BY value ASC;
Resultado:

Até aqui tudo muito simples e o resultado foi o esperado. No entanto, quero que o valor “Value4″ da coluna “value” saia primeiro que todos e que os restantes valores continuem ordenados ascendentemente. Basicamente quero definir este valor como um valor prioritário, um valor relevante.
É possível? Se pode fazer?
Ler o resto desta entrada
Na categoria MySQL | 8 Comentários »
8 de Janeiro, 2010
Em MySQL um valor NULL ou vazio, quando se ordena, tem mais peso que qualquer valor. No entanto, existe outras base de dados em que isto não é assim. Por exemplo, em Oracle um valor NULL ou vazio, quando se ordena, tem menos peso que qualquer valor.
Dependendo da utilização que se queira dar, esta situação pode ser boa ou má.
Normalmente necessito ordenar determinados campos tanto por valores alfabéticos como numéricos, mas alguns desses campos por vezes contêm valores NULL ou vazios.
Quando ordeno estes campos ascendentemente (ASC), os valores NULL ou vazios ficam nas primeiras posições do resultado e quando ordeno estes campos descendentemente (DESC), os valores NULL ou vazios ficam nas últimas posições do resultado.
Até aqui tudo bem, já que os valores NULL ou vazio tem mais peso que qualquer valor.
Temos a seguinte tabela:

Vamos a executar o seguinte comando na base de dados:
SELECT * FROM demos ORDER BY value ASC;
Resultado:

Mas, e se eu quero ordenar um campo ascendentemente (ASC) sem que me saiam nas primeiras posições do resultado os valores NULL ou vazios?
Ler o resto desta entrada
Na categoria MySQL | Sem Comentários »
1 de Janeiro, 2010
Com as duas entregas anteriores sobre problemas de codificação de caracteres (Parte I – Apache e Parte II – PHP), praticamente todos os erros de codificação de caracteres (charset) deveriam estar solucionados.
No entanto, cada vez mais projectos PHP utilizam comunicações com base de dados. Uma das base de dados livres mais conhecida é MySQL. As base de dados servem basicamente para armazenar e enviar informação.
Os que utilizam esta tecnologia já reparam que muitas vezes a informação armazenada é diferente da informação enviada ou vice-versa. Exacto, que por vezes se vê uns caracteres esquisitos no conteúdo das tabelas da base de dados ou se vê caracteres esquisitos quando recebemos a informação da base de dados.
E porque? A informação não deveria ser igual em ambas as partes?
Sim… De facto, deveria ser igual em ambas as partes. Mas esta situação devesse a que ambos sistemas (MySQL e PHP) se comunicam com um sistema de codificação de caracteres diferente. Se usamos o exemplo do capitulo anterior, PHP se esta comunicando em UTF-8, no entanto, MySQL por defeito se comunica em “Latin 1″. Por isso, esses caracteres esquisitos.
Vamos recordar a teoria referida na primeira parte:
“Se trabalhamos com UTF-8, então todos os ficheiros e comunicações devem de se realizar com este tipo de codificação de caracteres.”
Portanto que temos que fazer?
Ler o resto desta entrada
Na categoria MySQL | Sem Comentários »
24 de Dezembro, 2009
Agora que já funciona correctamente a codificação de caracteres das páginas estáticas (ler “Parte I – Apache“), vamos às páginas dinâmicas PHP.
PHP tem o seu próprio método de codificação de caracteres que vem configurado por definição como ISO-8859-1. Mesmo usando um ficheiro/script em UTF-8 com a meta tag definida para UTF-8, vai sair caracteres esquisitos.
Vamos à prática. Abrimos Notepad e escrevemos o seguinte código html:
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Charset</title>
</head>
<body>
<div>Exemplo simples de codificação de caracteres (charset)</div>
<div>á é í ó ú à è ì ò ù ä ë ï ö ü ¡ ¿ ñ</div>
</body>
</html>
Gravámos o documento como charset.php e alteremos a opção “Codificação:” para UTF-8.
Subimos este ficheiro ao servidor e testamos (Requisitos: Apache + PHP).
Resultado:

Se a extensão deste ficheiro fosse “.htm”, não havia problemas de codificação de caracteres porque se tratava de uma página estática.
Mas como a extensão deste ficheiro é “.php” então se trata de uma página dinâmica PHP. Isto quer dizer que todo código HTML desta página é gerado pelo intérprete de PHP e não pelo servidor Apache.
Como o intérprete de PHP vem configurado por defeito como ISO-8859-1, este vai ler o ficheiro (em UTF-8) com uma codificação de caracteres errada gerando caracteres esquisitos.
Ler o resto desta entrada
Na categoria PHP | Sem Comentários »
18 de Dezembro, 2009
Os problemas de codificação de caracteres (charset) são muito comuns e nos tempos de hoje ainda se vê muitas páginas com este tipo de problemas.
Em teoria para solucionar este tipo de problemas é bastante fácil Se trabalhamos com UTF-8, então todos os ficheiros e comunicações devem de se realizar com este tipo de codificação de caracteres.
No entanto, na prática isto é bem mais difícil de implementar e se perde muitas vezes horas tentando buscar boas soluções.
Apesar de ser um tema complexo, tentarei explicar da maneira mais simples algumas soluções que a mim me parecem interessantes e as melhores para solucionar este tipo de problemas.
No entanto, caso tenham dúvidas sobre alguma explicação ou queiram aportar as vossas soluções/ideias, podem sempre usar os comentários.
Ler o resto desta entrada
Na categoria Apache | 1 Comentário »
11 de Dezembro, 2009
dBug é uma classe de PHP muito efectiva para ver o que se passa em determinadas fases de um script quando este está em desenvolvimento.
Com dBug podes ver de uma maneira limpa, ordenada e colorida o conteúdo de String’s, Array’s, Objectos, Base de dados e dados XML.
Outra característica é que se pode personalizar as cores simplesmente com uma folha de estilos CSS.
As tabelas criadas pelo dBug podem ser expandidas ou contraídas com um click.
Como usá-lo?
Ler o resto desta entrada
Na categoria PHP | Sem Comentários »