Arquivo da Categoria ‘PHP’

Não detectar valor 0 como vazio ou espaço vazio como um valor em PHP

Sexta-feira, 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?
(mais…)

Criar um array com uma série de números ou letras em PHP

Sexta-feira, 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?
(mais…)

Solucionar os problemas de codificação de caracteres (Parte II – PHP)

Quinta-feira, 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:
Exemplo PHP ISO-8859-1

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.
(mais…)

Analisar código PHP com uma simples classe

Sexta-feira, 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?
(mais…)

Filtrar array multi dimensional por valor em PHP

Sexta-feira, 4 de Dezembro, 2009

Uma das grandes lacunas em PHP é que não existe uma função nativa para filtrar um array multi dimensional por valor.

Analisemos o seguinte array:

$data = array(
  0 => array('id' => '1', 'name' => 'home', 'value' => 'setPointer', 'obs' => 'page'),
  1 => array('id' => '2', 'name' => 'width', 'value' => 255, 'obs' => 'layout'),
  2 => array('id' => '3', 'name' => 'heigt', 'value' => 324, 'obs' => 'layout'),
  3 => array('id' => '4', 'name' => 'color', 'value' => 'FF0000', 'obs' => 'page'),
  4 => array('id' => '5', 'name' => 'background', 'value' => '00FF00', 'obs' => 'page'),
  5 => array('id' => '6', 'name' => 'size', 'value' => 255, 'obs' => 'page'),
  6 => array('id' => '7', 'name' => 'position', 'value' => 324, 'obs' => 'layout'),
  7 => array('id' => '8', 'name' => 'left', 'value' => 32, 'obs' => 'layout'),
  8 => array('id' => '9', 'name' => 'top', 'value' => 32, 'obs' => 'layout'),
  9 => array('id' => '10', 'name' => 'right', 'value' => 32, 'obs' => 'page')
);

A partir deste array multi dimensional, desejo filtrar todos os elementos com a chave ‘value’ que tenham um valor igual a 32.

Como faço?
(mais…)