Pedro Schneider

Um pouco sobre minha vida, trabalhos, estudos, diversões entre outros!

ORDER BY conforme tua necessidade no MYSQL

Muitas vezes já precisei fazer uma query para trazer um registro, caso não tenha, trazer outro, algumas vezes fiz com UNION e outras SUBQUERYs, sei que a query ficava gigante ou até mesmo “Gabiarrada”.

Mas dessa vez quis otimizar a query e pesquisei um pouco sobre, descobri para o MYSQL uma ótima solução!

Vejamos aqui o antes e o depois de uma query que busca os Banners conforme a seção do site, caso eu não tenha banner na seção produto, traz o da home!

SELECT * FROM site_banner b
JOIN mgr_secao_site ss ON b.SecaoSiteID = ss.SecaoSiteID AND ss.Url = "produto"
WHERE b.Ativo = 1 LIMIT 1
UNION
SELECT * FROM site_banner b
JOIN mgr_secao_site ss ON b.SecaoSiteID = ss.SecaoSiteID AND ss.Url = "home"
WHERE b.Ativo = 1 LIMIT 1

Não que a query acima não funcione, mas é que fica grande, olha só como solucionei usando o IN() e o FIELD():

SELECT * FROM site_banner b
JOIN mgr_secao_site ss ON b.SecaoSiteID = ss.SecaoSiteID AND ss.Url IN ( "produto", "home" )
ORDER BY FIELD( ss.Url, "' . $SecaoSiteUrl . '", "home" ) LIMIT 1;
posted by correaschneider in Desenv,Dicas,MySQL,SQL,Uncategorized and have No Comments

Tabela de RegEx (Expressão Regular)

Olha só essa tabela explicando RegEx.

posted by correaschneider in ASP,ASPX,Desenv,Dicas,Javascript,jQuery,PHP and have No Comments

Forçando download de imagem/arquivos de maneira fácil e rápida!

Forçando download de imagem/arquivos de maneira fácil e rápida!

	header('Content-Description: File Transfer');
	header("Content-type: application/octet-stream");
	header("Content-disposition: attachment; filename= ".$imagem."");
	readfile(site_url( 'uploads/imagens/' . $imagem ));
	die;
posted by correaschneider in Desenv,Dicas,PHP and have No Comments

Estilização e Apresentação de Código

Hoje li um pouco sobre estilização e apresentação de código, e achei esse link:

http://en.wikipedia.org/wiki/Coding_conventions

Muito boa a leitura.

posted by correaschneider in Android,ASP,ASPX,Desenv,Dicas,HTML + CSS,Javascript,jQuery,MySQL,PHP,SQL and have No Comments

Multi Upload – Enviando vários arquivos

Pesquisando no Google, encontrei esse plugin para Upload Multiplo ou Multi Upload!

http://blueimp.github.com/jQuery-File-Upload/

Vale a pena dar uma olha!

posted by correaschneider in Desenv,Dicas,jQuery,PHP,Uncategorized and have No Comments

Programando Url Amigáveis no PHP

Hoje estava testando o gerenciador, e percebi que o PHP tem problemas ao tratar alguns caracteres especias como os do MS Office.

Essa é a função que estava utilizando:

function cleanUrl( $url, $colecaoEscapar = NULL ) {
	$aa = array( 'À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','&','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ý','ý','þ','ÿ',' ','/','*','#','@','!','$','~','`',"'",'"','?','\\','{','}','[',']',':',';','.','','+','=','_','^','|','%','(',')',',' );
	$bb = array( 'a','a','a','a','a','a','a','c','e','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','u','y','b','s','a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','y','y','b','y','-','-','','','','','','','','','','','-','','','','','','','','','','','','','','','','','','' );
 
	if ( !is_null( $colecaoEscapar ) )
 
		foreach( $colecaoEscapar as $escapar ) {
 
			$posicao = array_search( $escapar, $aa );
 
			unset( $aa[ $posicao ], $bb[ $posicao ] );
 
		}
 
	return strtolower( str_replace( $aa, $bb, str_replace( '--', '-', str_replace( ' ', '-', trim( $url ) ) ) ) );
 
}

Porém, está tendo problemas que o PHP não estava fazendo o str_replace nos espaços. Então depois de muita pesquisa, fui no banco de dados onde tava salvo o registro e copiei o espaço que não era substituído.

Minha função resultou nessa: (note a ultima posição do primeiro array)

function cleanUrl( $url, $colecaoEscapar = NULL ) {
 
		$aa = array( 'À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','&','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ý','ý','þ','ÿ',' ','/','*','#','@','!','$','~','`',"'",'"','?','\\','{','}','[',']',':',';','.','<','>','+','=','_','^','|','%','(',')',',', ' ' ); //este ultimo não é qualquer espaço, é um espaço do MS Office que o PHP não consegue dar replace
 
		$bb = array( 'a','a','a','a','a','a','a','c','e','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','u','y','b','s','a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','y','y','b','y','-','-','','','','','','','','','','','-','','','','','','','','','','','','','','','','','','','' );
 
 
 
		if ( !is_null( $colecaoEscapar ) )
 
			foreach( $colecaoEscapar as $escapar ) {
 
				$posicao = array_search( $escapar, $aa );
 
				unset( $aa[ $posicao ], $bb[ $posicao ] );
 
			}
 
 
 
		return strtolower( str_replace( $aa, $bb, str_replace( '--', '-', str_replace( ' ', '-', trim( $url ) ) ) ) );
 
	}
posted by correaschneider in Desenv,Dicas,PHP and have No Comments

Plugin de grande ajuda para teste em formulários(form)!

Anteriormente coloquei aqui um post sobre um gerador de dados para banco!

Agora estou colocando aqui um plugin para Firefox, que preenche os dados dos campos.

Ótimo para testar formulários!

Esse é o link: https://addons.mozilla.org/pt-BR/firefox/addon/forms-data-generator/?src=api

posted by correaschneider in ASP,ASPX,Desenv,Dicas,Firefox,PHP and have No Comments

Dados para teste massivo!

Quantas vezes tu já se parou e pensou:

Para testar essa query vou ter que cadastrar um monte de dados, ah, que se foda, ta funcionando!

É amigos, eis a solução.

http://www.generatedata.com/

O negócio é em PHP, tu pode usar on-line ou fazer download.

Nesta segunda opção tu pode salvar o form!

Bom divertimento!

posted by correaschneider in Desenv,Dicas,MySQL,PHP,SQL and have Comment (1)

Descobrindo a codificação de uma string

Depois de muito dar socos na mesa e pesqusiar no meu amigo Google, chegou a hora do triste veredicto: caí em uma built-in function (funções que já vêm na linguagem). Nossa função se chama mb_detect_encoding() e, infelizmente, não irá funcionar a contento se não tiver um dedinho brasileiro ali.
A função só terá um resultado satisfatório se forem observados dos detalhes:

1. O segundo parâmetro da função (encoding list) deverá ser rigorosamente passado, contendo os dois encodes possíveis, a saber: UTF-8 e ISO-8859-1.
2. O último caractere da string não pode ser acentuado, para tanto utilizaremos um “método alternativo de eficácia momentânea” (vide Wikipédia: Gambiarra).

Mas e então, como fica? Vamos meter a mão na massa!

Vamos montar uma funçãozinha bacana e bem simples, chamada codificacao() que irá retornar o charset de uma dada string. Talvez você perceba algo bizarro neste snippet, mas eu explico logo abaixo:

function codificacao( $string ) {
return mb_detect_encoding( $string . 'x', 'UTF-8, ISO-8859-1' );
}

Agora você me pergunta: O que raios aquele “x” está fazendo ali?
A resposta é muito simples. Lembra que eu comentei que a string não pode terminar em caractere acentuado? (Hahahahahahahahahaha!)
Procura no manual do PHP que foi um um francês que sugeriu essa implementação (que mesmo após o PHP corrigir o bug, a função continuará funcionando do mesmo jeito) e eu gostei. :)

posted by correaschneider in Desenv,Dicas,PHP and have No Comments

TagCloud para site!

Olá!

Hoje vou mostrar e disponibilizar aqui, uma library de TagCloud para CodeIgniter!

Como senti dificuldade para achar tag cloud para site, usando flash, comecei a desenvolver uma classe, como utilizo CodeIgniter, fiz uma para CodeIgniter. Podendo ser modificada para outras plataformas!

Bom vamos ao código!

Coloco os arquivos nos seus devidos lugares!

No Controller eu faço load da library, e como vou utilizar em todos os métodos, faço o load no construtor da classe Controller!

<?php
	class TagCloud extends CI_Controller {
		public function __construct() {
			parent::__construct();
 
			$this->load->library( 'TagCloud' );
		}

Após, crio os métodos para criar e configurar a TagCloud. O Exemplo aqui é uma das maneiras de montar o TagCloud!

		public function metodo3() {
			$tags = array(
					array( 'TagID' => '1', 'Tag' => 'Google', 'Url' => 'http://www.google.com.br/', 'Count' => '15' )
					, array( 'TagID' => '2', 'Tag' => 'Terra', 'Url' => 'http://www.terra.com.br/', 'Count' => '5' )
					, array( 'TagID' => '3', 'Tag' => 'UOL', 'Url' => 'http://www.uol.com.br/', 'Count' => '1' )
				);
 
			$this->tagcloud->setCampo( 'TagID' );
			$this->tagcloud->setLabel( 'Tag' );
			$this->tagcloud->setUrl( 'Url' );
 
			$this->tagcloud->setTags( $tags );
 
			$this->tagcloud->setUrlSite( 'http://www.phcs.com.br/' );
			$this->tagcloud->setUrlSite( site_url() );
			$this->tagcloud->setWidth( 270 );
			$this->tagcloud->setHeight( 270 );
			echo $this->tagcloud->mostrar();
		}

Os dados podem ser trazidos de banco, como mostra do Exemplo seguinte!

		public function metodo1() {
			echo $this->tagcloud->carregar( 'site_tag', 'TagID', 'Tag', 'Url', 'site_conteudo_site_tag' )->setUrlSite( 'http://www.phcs.com.br/' )->setPreUrl( 'http://www.phcs.com.br/tag/' )->setWidth( 270 )->setHeight( 270 )->mostrar();
		}

No zip, contém outras duas formas de configurar o TagClod!

Espero que tenha sido util!

Para fazer o download da classe, clique aqui!

posted by correaschneider in Desenv,Dicas,Javascript,MySQL,PHP and have No Comments