Postagens

MYSQL - Utilizando UNION e multiplas queries para agrupar resultados

Um comando muito pouco utilizado é o UNION mas ele é extremamente útil quando queremos efetuar selects de uma tabela ou várias e uni-las em um único resultado. Isto permite ao programa que receber os dados poder trata-los de uma unica vez ao invés de ter de efetuar vários selects separadamente e junta-los. Neste post vamos trabalhar com duas coisas interessantes que são o comando UNION e SELECTS de uma mesma tabela mas com diferentes critérios. Vamos utilizar como base a tabela 'teste' abaixo id nome idade estado 1 Pedro 50 SP 2 Antonio 30 RJ 3 Amélia 20 SP 4 Marta 15 RJ 5 Maria 80 SP O objetivo é selecionar a maior idade da tabela. Podemos fazer isto de maneira muito fácil pelo comando abaixo: SELECT MAX(idade) FROM teste idade 80 Ótimo, porém o problema é que apenas recuperamos o valor da idade máxima, sem as informações sobre quem possui esta idade, ou seja, não trouxemos a linha inteira. Para que possamos fa...

PHP - LENDO ARQUIVOS CSV COM A FUNÇÃO fgetcsv

O PHP possui muitas funções pouco conhecidas mas que quebram um galhão na hora de fazer algo rapidamente e com poucas linhas. Ler e parsear um arquivo no formato CSV pode ser bem chato mas com a função fgetcsv se torna bem tranquilo. Podemos dizer que utilizar funções nativas ao invés de cria-la no próprio script é muito mais eficiente e rápido, tanto na questão da velocidade de se programar quanto na execução. Procure sempre utilizar as funções nativas. Vamos começar criando um script muito simples apenas para ilustrar como a função fgetcsv funciona e depois daremos uma solução completa para ler um arquivo e convertê-lo em array. Vamos trabalhar com um arquivo chamado "test.csv" com a seguinte estrutura: nome;idade Joao;25 carlos;50 O script básico é o que segue abaixo: <?php $handle = fopen("test.csv", "r"); $linha = fgetcsv($handle, 1000, ";"); var_dump($linha); O resultado será: array(2) { [0]=> string...

Linux - Substituindo conteúdo de arquivos textos com sed

O Linux pode surpreende-lo de forma muito positiva inúmeras vezes. Uma das coisas mais bacanas que já utilizei e que sei que muita gente procura e não encontra com facilidade é a busca e substituoção de valores dentro de um arquivo texto. Uma grande parte das dicas que encontramos na Web são baseados em loops e etc, o que não é nada prático. A dica aqui é usar o comando "sed" junto com pipes. Vamos ao que interessa então: Busca o padrão DE e substitui por PARA dentro de "arquivo" e salva a modificação. sed -i 's/DE/PARA/g' arquivo Busca o padrão DE dentro de "arquivo" e substitui por PARA e joga para "novoarquivo" a modificação através de um pipe. sed 's/DE/PARA/g' arquivo | cat > novoarquivo

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 ...

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!