quinta-feira, 17 de abril de 2014

Evitar campos em branco na string - PHP

Desafio: evitar que caracteres em branco no começo ou final de campos digitados pelo usuário invalidem consulta no banco.



Para quem não está programando no PHP "puro" principalmente, há uma forma de evitar espaços em branco no início e final de uma string. Exemplo: quem nunca copiou e colou uma senha e ficou um espaço em branco no final, com o site acusando que a senha estava incorreta?

Para isso, temos a função trim(). Ela tem outras funcionalidades, mas no meu dia-a-dia pelo menos, a principal função dela é remover facilmente os espaços em branco:


$user = trim($_POST['user']);
$password = trim($_POST['password']);

$sql = "SELECT * FROM usuarios WHERE user = '$user' AND password = '$password';



Obs.: NUNCA coloque um post diretamente na query como está no exemplo. Isso é uma GRAVE falha de segurança. Uma porta escancarada para o seu sistema sofrer um SQL Injection. Falaremos mais sobre essa falha em um outro post

terça-feira, 15 de abril de 2014

Limitar o número de casas decimais no javascript

Desafio: limitar o número de casas decimais em variáveis do tipo ponto flutuante (float).



Para isso, basta utilizar a função toFixed(n), onde "n" é o número de casas decimais desejada. Vamos mais além e ainda vamos exibir corretamente um valor de moeda no formato string sem o uso de nenhum plugin usando a função replace(). Vamos ao exemplo:


var precoGasolina = 2.899;
var quantLitros = 49;

var subTotal = precoGasolina * quantLitros; //142.051

var total = "R$ " + subTotal.toFixed(2).replace(".", ",");

alert(total); //142.05


Qualquer dúvida, comentários!

segunda-feira, 14 de abril de 2014

Case insensitive LIKE no Oracle

Desafio: Fazer com que "joão" seja igual a "João" em uma query no Oracle.



A função like do MySql já é case insensitive. No Postgres, basta usar o ilike. Mas no Oracle o buraco é mais embaixo.

Para fazer uma busca case insensitive, é necessário colocar todos os caracteres dos dois lados da busca como maiúsculos, ou os dois como minúsculos. Desta forma:

SELECT * FROM usuarios WHERE UPPER(nome) LIKE UPPER('%joão%')

ou...

SELECT * FROM usuarios WHERE LOWER(nome) LIKE LOWER('%joão%')



Qualquer dúvida, perguntar nos comentários