Archive for janeiro 2010

 
 

Recuperando dados de um checkbox como array

O checkbox é o tipo de campo utilizado quando o usuário poderá escolher mais de uma opção, casos onde ele poderá marcar que se interessa pelas áreas de robótica, aplicativos móbile e dispositivos de armazenamento. Vez por outra ainda me confundo quando estou recuperando os dados de checkbox, pra quem está com essa dúvida vai à dica: Para pegar os dados enviados por checkbox como array em php basta inserimos os colchetes no name do input no HTML:

Áreas de interesse:

Para capturar as áreas marcadas pelo usuário basta fazer o seguinte:

$areas = isset($_POST['id_area']) ? $_POST['id_area'] : NULL;
echo $areas; //Array
foreach($areas as $id_area){
	echo $id_area;//imprimir id de áreas
}

Simples assim!

Analisando expressões em Javascript

Vez por outra acabo em dúvida de qual o valor boleano corresponde a determinada expressão em javascript. Para aqueles que possuem dúvidas similares, abaixo relaciono como alguns valores são tratados quando colocados como expressões condicionais:

O condicional retornará verdadeiro (TRUE) nos seguintes casos:

  • A string tem um ou mais caracteres
  • Número diferente de zero
  • Valor não nulo
  • Objeto Referenciado existe
  • A propriedade do objeto é definida e avaliada como uma string de um ou mais caracteres ou um número diferente de zero

O condicional retornará falso (FALSE) nos seguintes casos:

  • String vazia
  • Algarismo 0
  • Null
  • Objeto referenciado não existe
  • A propriedade do objeto é indefinida ou seu valor é uma string vazio ou zero.

Para ter mais segurança ao analisar a existência de determinada propriedade você pode fazer uso do operador typeof. Você pode testá-lo em comparação com a constante undefined:

If(typeof objeto.propriedade != “undefined”){
     //código a ser executado
}

Vale lembrar que, se há chance de quem nem o objeto nem a propriedade existam você precisa agrupar as expressões condicionais que testam a existência de ambos. Faça isso testando primeiro a existência do objeto e, depois, a da propriedade. Se o objeto não existir a segunda parte da expressão não é testada:

if(obejto && typeof objeto.propriedade != “undefined” ){
     //código a ser executado
}

Simples Tooltip com CSS

Tooltip é o nome que se dá aquelas legendas que aparecem quando você passa o mouse em cima de um link, a diferença entre elas (na minha opinião…) e a legenda gerada pelo link através da propriedade title é que as tooltip’s são estilizadas. Se você precisar utilizar a legenda pra auxiliar o usuário e quiser deixá-la consoante com seu layout, isso vai ser um pouco complicado de se fazer com a propriedade title. Nesse caso, o css pode nos dar uma ajuda, visto que conseguir construir nossa tooltip será demasiadamente simples.

Basta ao construirmos nosso link colocarmos nossa legenda dentro dele, demarcada por uma tag span, dessa forma:

Passe o Mouse Exemplo de Tooltip
Passe o Mouse Exemplo de Tooltip 2

Depois de construir nossa legenda vamos adequar sua visualização via css, primeiramente deixamos os spans que estiverem dentro de links com a propriedade display=none, o que fara com que eles desaparceçam. Depois basta desclararmos que quando o usuário passar o mouse em cima do link (pseudo-classe :hover) os span receberão display:block, tornando-se visivéis para o usuário. A partir daí podemos setar o posicionamento como absoluto e começar a personalizá-los, como mostra o CSS abaixo:

a span{
	display:none;
	font-size:0.9em;
}
a:hover{
	z-index:20;
	position:relative;
}
a:hover span{
	display:block;
	position:absolute;
	background:#d9e3e8;
	border:solid #00354d 1px;
	color:#00354d;
	padding:0 2px;
	z-index:22;
	text-align:center;
}

Chat free do Geração Beta, utilizando AJAX

Apesar de existirem inúmeros chats free por aí quando necessitei implementar um, me deparei com uma tarefa extremamente difícil: compreender o código alheio ao ponto de conseguir adequar o chat para meus propósitos. Outro porém, foi que muitas implementações vinham que funcionalidades que nunca usaria e portanto só ocupariam espaço no meu servidor.

Diante disso tomei vergonha e parei um tempo pra estudar AJAX (o que já vinha adiando fazia tempo!) e pensar como faria o chat, em praticamente uma semana o chat já estava relativamente pronto! Ainda estou mexendo nele e modificando algumas coisas por isso que ele está em fase beta. Sei que ainda dá pra otimizar o código, por isso sugestões e críticas serão bem vindas. Quem quiser dá uma olhada como ficou é só baixar, tá liberado!!

Download Chat Geração Beta Versão 1.0 – Beta

Caracaterísticas do Geração Beta Chat Versão 1.0 Beta:

  • O gbChat não utiliza banco de dados, todas as mensagens são armazenas no arquivo chat.txt que se encontra no diretório chat.
  • Os usuário que estão online se são armazenados no arquivo online.txt.
  • Em caso de mensagem privada, a conversa é armazena em arquivo no diretório chat/PM, o nome deste arquivo é composto pelo Nick da pessoa que iniciou a conversa + o separador _com_ + o Nick da pessoa com a qual deseja conversar.
  • Se alguém acessar o chat e a última mensagem estiver sido escrita a mais de 1h atrás, a conversa é automaticamente limpa. E as mensagens são armazenadas no diretório chat/ backup tendo como nome do arquivo a data da última mensagem. Tal mecanismo também funciona para as mensagens privadas, a diferença é que elas são armazenadas no diretório chat/backup/pm e junto com a data o Nick das duas pessoas envolvidas na conversa também.
  • O tempo de atualização do chat (TEMPO), e do tempo decorrido desde a última conversa para que o chat seja limpo e o backup efetuado (TEMPO_CHAT) estão como constantes definidas no início do arquivo funções.php.
  • O Nick do usuário é armazenado na sessão “nome_chat”, que se encontra referenciada pela constante USUARIO, para alterar o nome da sessão que armazena o Nick do usuário basta alterar o valor da constante USUARIO.
  • O chat encontra-se com codificação ISSO-8859-1, em breve o postarei na versão UTF-8.
  • Todas as funções encontram-se no arquivo funcoes.php, devidamente comentadas de forma a descrever seu propósito.
  • A página users_online.php mostra apenas os usuários que estão online no momento, sem carregar a parte do chat em si. Ela também permite enviar e receber mensagens privadas de qualquer usuário online.
  • O chat pode ser utilizado chamando pelo arquivo chat.php, tanto pode ser o que está dentro do diretório chat ou mesmo pelo que se encontra fora do diretório. Quando escolher qual utilizar poderá deletar o outro sem problema.
  • Existem dois arquivos para mostrar os usuários online (user_online.php) um dentro do diretório chat e um fora, caso precise apenas de um você poderá deletar o outro e caso não precise de nenhum dos dois também pode deletá-los que isso não irá influenciar no chat em si.

Faça o download do chat clicando no link ao lado: Download Chat Geração Beta Versão 1.0 – Beta

Alterando o tamanho da fonte com Javascript

Deixar que o usuário adéque o tamanho da fonte para que consiga uma maior legibilidade do conteúdo é uma funcionalidade que podemos encontrar em diversos sites. Desponibilizar tal recurso é de fato bastante simples, para sua construção necessitaremos apenas de uma única função em javascript. Devo lembrar que neste caso o tamanho da fonte nos elementos da página devem estar definidos em unidades relativas para sofrerem a alteração cada vez que modificarmos o tamanho da fonte do body!

Vamos a nossa primeira função:

function fonte(par){
	//recupera o tamanho do fonte no browser
	tamanho = document.body.style.fontSize;
	//Se o tamanho da fonte não houver registro de tamanho, sete ele como 10
	if(!tamanho){
		alert(tamanho);
		tamanho = 10;
		alert(tamanho);
	}else{
		//Mas se ele exitir recupere o valor pra mim
		tamanho = parseInt(tamanho.substring(0,2));
	}
	//Se for pra aumentar e o tamanho ainda não passou de 15
	if(par == 'aumentar' && tamanho < 16){
		//incrementa um e seta essa tamanho pro body
		document.body.style.fontSize = (tamanho+1) + "px";
	//Se for pra diminuir e o tamanho ainda não é menor que 8
	}else if(par == 'diminuir' && tamanho > 7){
		//decrementa um e seta o tamamnho pro body
		document.body.style.fontSize = (tamanho-1) + "px";
	}
}

Assim que entramos na página a propriedade responsável pelo tamanho da fonte do body ainda não terá nenhum valor. Nesse caso, deixamos o tamanho com o valor que estamos colocando pro body no css, ou seja 10px.

De fato, existem n maneiras para fazermos a alteração do tamanho da fonte via javascript. Portanto seria improvável que conseguisse listar todas elas aqui! Deixo abaixo, outra alternativa que segue o mesmo princípio da função acima, porém tem um código mais limpo.

function fonte(par){
	tamanho = document.body.style.fontSize;
	tamanho = (!tamanho) ? 10 : parseInt(tamanho.substring(0,2));
	if(par == 'aumentar' && tamanho < 16)
		tamanho++;
	else if(par == 'diminuir' && tamanho > 7)
		tamanho--;
	document.body.style.fontSize = tamanho+"px";
}

Pra utilizarmos a função, podemos chamá-la através de um link:

Aumentar Fonte
Diminuir Fonte

Limpar aquivo .txt com php

Limpar um arquivo txt é algo realmente simples, para isso só devemos ficar atentos para qual modo de abertura utilizaremos para acessar o arquivo por meio da função fopen() do php. Se o utilizarmos o modo “w” ou “w+”, logo após abrirmos o arquivo o mesmo terá seu tamanho reduzido a 0 (zero) sendo portanto, completamente limpo. Vale lembrar que se antes de fechar o arquivo você escrever algo nele esse passará a ser o novo conteúdo do arquivo. Vamos aos exemplos:

Primeiro vamos dar uma olhada no códio que simplesmente apaga todo conteúdo do arquivo:

//abrimos o arquivo em modo w+ o que fará com que o mesmo seja limpo
$f = fopen("arquivo.txt", "w+");
//fechamos o arquivo
fclose($f);

Depois desse passo vamos agora atualizar o arquivo retirando o antigo conteúdo e gravando um novo:

$f = fopen("arquivo.txt", "w+"); //abrimos o arquivo e o limpamos
fwrite($f, "Uma frase\r\n"); //gravamos uma frase
fclose($f); //fechamos o arquivo

Pra finalizar vamos agora fazer uma função onde você passa como parâmentro o arquivo e uma frase pra ser removida do mesmo:

function retiraLinha($arquivo, $linha){
	$fc = file($arquivo);
        //abre o arquivo e o limpamos
	$f = fopen($arquivo, "w+");
        //percorre o array com o conteudo do arquivo
	foreach ($fc as $line){
                //escreve no arquivo todas as linhas que foram diferente daquela passada como parâmetro
		if($line!=$linha)
			fwrite($arquivo, $line);
	}
        //fecha o arquivo
	fclose($f);
}

Pronto! Simples assim!

Obs1:Vale lembrar que a quebra de linha em arquivo no windows é representada por “/r/n”.

Obs2: Para mais informações, consultar o manual em fopen, fwrite, fclose, file.