Postagens

Mostrando postagens de setembro, 2012

MySQL - Utilizando funções no MySQL - criando slug

Muitas vezes precisamos retirar de um campo de um banco de dados acentos de palavras, pontos e colocar traços no lugar dos espaços. Este formato é comumente chamado de "slug" e possui inúmeras utilidades como parametro de URL, chave de comparação, indice e etc. É comum também utilizar-se funções externas para gerar o slug mas hoje trago uma solução que pode ser implementada no próprio MySQL. A solução é uma função. Esta não é a mais elegante versão, pois usa a "força bruta" do REPLACE para cada caractere, mas funciona bem. delimiter // CREATE FUNCTION slug(Texto VARCHAR(150)) RETURNS VARCHAR(150) NOT DETERMINISTIC BEGIN DECLARE Resultado VARCHAR(150); SET Resultado = UPPER(Texto); SET Resultado = REPLACE(Resultado,' ','-'); SET Resultado = REPLACE(Resultado,'\'',''); SET Resultado = REPLACE(Resultado,'`',''); SET Resultado = REPLACE(Resultado,'.',''); SET

PHP - Classes genéricas com vários níveis - stdClass

O PHP tem uma ferramenta muito interessante chamada Standard Class ou "stdClass". Com ela pode-se criar um objeto sem precisar criar uma classe. O "stdClass" permite que sejam criadas apenas propriedades para seu objeto. Um exemplo de utilização seria para arquivos de configuração, onde necessitamos apenas de "chave"=>"valor" para ativar, desativar ou "printar" algo. Sua sintaxe é: <?php $config = new StdClass; ?> Podemos então começar a criar nosso objetos: <?php $config = new StdClass; $config->titulo = "Branca de Neve"; $config->subtitulo = "Sete anões"; ?> Também podemos criar Arrays: <?php $config = new StdClass; $config->titulo = "Branca de Neve"; $config->subtitulo = "Sete anões"; $config->elenco = Array( "principal" => "Branca de neve", "coadjuvante" => "Bruxa" ) ?>

Regexp - Encontrando o conteúdo até o primeiro ponto

Podemos dizer que REGEXP é uma arte, uma fina arte porque envolve muito, mas muito tempo de aprendizado e prática, além de ser bem "elegante" já que ao invés de usarmos milhares de comandos e "despedaçarmos" as strings para encontrar algo, o REGEXP nos permite fazer isto com apenas uma linha, e muitas vezes com meia duzia de caracteres. Uma dificuldade comum é capturar todo o conteúdo entre um certo padrão e outro quando queremos apenas que esta captura seja somente até a primeira ocorrência, e não todas até a ultima. Um exemplo utilizando uma palavra inicial até o primeiro ponto: /palavra.*\./ Este padrão irá encontrar "Nesta frase existe uma palavra que deverá ser encontrada. Mas ela não foi. " Ou seja, irá pesquisar até o ultimo ponto possível. Mas não queremos isto. Queremos que ele encontre até o primeiro ponto apenas. Para isto colocamos uma negação [^.] no REGEXP A expressão fica: /palavra.[^.]*\./ Este padrão irá encontrar &q

MySQL - Listando apenas os nomes de campos de uma tabela

Para listar apenas os nomes dos campos de uma tabela basta executar a query abaixo: SELECT column_name FROM information_schema.columns WHERE table_name = 'nome_de_sua_tabela' Fácil e rápido!