jun 16

Mês por extenso no PHP

Uma função que utilizo em PHP e que algumas pessoas me perguntaram esses dias é de como escrever o mês por extenso, mas o detalhe é que deve ser em português.

A função seguinte é muito simples, pego o número do mês e retorno o mês escrito, veja abaixo:

function mes_extenso($referencia = NULL){
switch ($referencia){
case 1: $mes = " de Janeiro de "; break;
case 2: $mes = " de Fevereiro de "; break;
case 3: $mes = " de Março de "; break;
case 4: $mes = " de Abril de "; break;
case 5: $mes = " de Maio de "; break;
case 6: $mes = " de Junho de "; break;
case 7: $mes = " de Julho de "; break;
case 8: $mes = " de Agosto de "; break;
case 9: $mes = " de Setembro de "; break;
case 10: $mes = " de Outubro de "; break;
case 11: $mes = " de Novembro de "; break;
case 12: $mes = " de Dezembro de "; break;
default: $mes = " de _______________ de ";
}
return $mes;
}

A utilização desse código é muito simples:

Quando você tem uma data no banco de dados no padrão americano, pode usar da seguinte forma:
$data1 = "2010-06-23";
$data1 = explode("-", $data1);
echo $data1[2].mes_extenso($data1[1]).$data1[0]."<br>";

Quando for um mês inexistente ele vai mostrar um espaço para preenchimento:
$data2 = "2010-xx-01";
$data2 = explode("-", $data2);
echo $data2[2].mes_extenso($data2[1]).$data2[0]."<br>";

Quando for uma data já com padrão brasileiro:
$data3 = "05/05/2010";
$data3 = explode("/", $data3);
echo $data3[0].mes_extenso($data3[1]).$data3[2]."<br>";

O código fonte está aqui.

É claro que você pode modificar o código para o uso específico que vai fazer em seu projeto.

Veja aqui um exemplo do funcionamento.

Um abraço,
Marcio Nakano

jan 07

Validação de formulários com Spry

Gosto muito da facilidade de aplicação e da economia de tempo que o Spry proporciona na validação de formulários.

O interessante é que esta validação é feita do lado cliente, ou seja é utilizado o processamento da máquina de quem está no formulário. É importante dizer que as principais validações devem ser feitas também no lado servidor, para garantir que os dados são realmente o que você precisa. A validação no lado servidor pode ser feita em PHP, ColdFusion, ASP ou qualquer outra linguagem que não interfere na validação inicial do formulário em Spry.

Vou mostrar agora, alguns exemplos básicos e até algumas personalizações que você pode fazer.

Neste exemplo vamos abordar:

  • Textos obrigatórios: inputs com preenchimento obrigatório;
  • Campos de datas e horas: com escolha do formato e validação no preenchimento, forçando o usuário a preencher somente com números;
  • Selects;
  • Texto com preenchimento mínimo: mais usados em senhas;
  • Textarea com preenchimento mínimo;
  • Checkbox: para aqueles formulários que é necessário marcar que leu alguma coisa pra prosseguir.

Veja a baixo como é o painel de configuração do Spry para input do tipo text.

Painel de configuração do Spry para input do tipo text

Painel de configuração do Spry para input do tipo text

 O código na página fica bem enxuto:

<script type=”text/javascript”>
<!–
var sprytextfield1 = new Spry.Widget.ValidationTextField(”sprytextfield1″);
var sprytextfield2 = new Spry.Widget.ValidationTextField(”sprytextfield2″, “date”, {format:”dd/mm/yyyy”, useCharacterMasking:true});
var sprytextfield3 = new Spry.Widget.ValidationTextField(”sprytextfield3″, “time”, {useCharacterMasking:true});
var spryselect1 = new Spry.Widget.ValidationSelect(”spryselect1″);
var sprytextfield4 = new Spry.Widget.ValidationTextField(”sprytextfield4″, “none”, {minChars:10});
var sprytextarea1 = new Spry.Widget.ValidationTextarea(”sprytextarea1″, {minChars:50, counterType:”chars_count”, counterId:”countsprytextarea1″, validateOn:["change"], maxChars:500});
var sprycheckbox1 = new Spry.Widget.ValidationCheckbox(”sprycheckbox1″);
//–>
</script>

Agora como seu formulário fica se tentar enviar o formulário, sem que as condições que você configurou, fica para o usuário.

 

Como seu formulário fica se tentar enviar o formulário, sem que as condições que você configurou, fica para o usuário.

Como seu formulário fica se tentar enviar o formulário, sem que as condições que você configurou, fica para o usuário.

Você pode conferir um exemplo aqui.

Mas existem algumas condições em que necessitamos validar o formulário que não estão definidas na biblioteca do Spry.

Vou mostrar outra forma onde você pode mesclar a validação do Spry com validações personalizadas via javascript, isso é possível se utilizarmos o método validate() do Spry.

Neste exemplo, vou fazer a confirmação de texto, muito usada na confirmação da senha digitada. Simplesmente vou verificar se o conteúdo de um input é igual ao outro.

Você pode conferir um exemplo aqui.

Agora, o conteúdo do código fica mais extenso, pois a validação é feita de forma manual e incrementando as funções que desenvolvemos.

<script type=”text/javascript”>
function validar(){
 //Travando o botão pra evitar vários cliques
 document.getElementById(”button”).disabled = true;
 var vali1 = sprytextfield1.validate();
 var vali2 = sprytextfield2.validate();
 var vali3 = sprytextfield3.validate();
 var vali4 = sprytextfield4.validate();
 var vali5 = spryselect1.validate();
 var vali6 = sprytextarea1.validate();
 var vali7 = sprycheckbox1.validate();
 if(vali1 && vali2 && vali3 && vali4 && vali5 && vali6 && vali7 && conteudoIgual()){
  document.getElementById(”form1″).submit();
 } else {
  alert(”Favor preencher corretamente todos os campos obrigatórios!”);
  document.getElementById(”button”).disabled = false;
 }
}
function conteudoIgual(){
 if(document.getElementById(’text1′).value == document.getElementById(’text1_c’).value)
  return true;
 else
  return false;
}
<!–
var sprytextfield1 = new Spry.Widget.ValidationTextField(”sprytextfield1″);
var sprytextfield2 = new Spry.Widget.ValidationTextField(”sprytextfield2″, “date”, {format:”dd/mm/yyyy”, useCharacterMasking:true});
var sprytextfield3 = new Spry.Widget.ValidationTextField(”sprytextfield3″, “time”, {useCharacterMasking:true});
var sprytextfield4 = new Spry.Widget.ValidationTextField(”sprytextfield4″, “none”, {minChars:10});
var spryselect1 = new Spry.Widget.ValidationSelect(”spryselect1″);
var sprytextarea1 = new Spry.Widget.ValidationTextarea(”sprytextarea1″, {minChars:50, counterType:”chars_count”, counterId:”countsprytextarea1″, validateOn:["change"], maxChars:500});
var sprycheckbox1 = new Spry.Widget.ValidationCheckbox(”sprycheckbox1″);
//–>
</script>

É claro que este exemplo é muito simples, mas muitos formulários possuem entrada de validação de CPF, CNPJ, data de nascimento, até mesmo integrações com funções AJAX. Para essas verificações já existem bastantes funções prontas na Web é só você pesquisar e implementar junto ao Spry.

Segue os fontes, onde vocês verão como foi feito os códigos de validação das duas formas.

dez 24

Projeto Clique Contra o Câncer

Esse post é sobre o projeto no qual participei chamado “Clique Contra o Câncer“.

É uma iniciativa do Hospital de Câncer de Barretos, com o intuito de informar, esclarecer e educar a população sobre o câncer, seus efeitos colaterais, opções de tratamento, prevenção e detecção, além de disponibilizar um canal para arrecadar doações no ambiente OnLine.

Fiquei muito contente em poder participar desse projeto que poderá ajudar a salvar vidas.

Vou falar um pouco do desenvolvimento e do projeto como um todo.

Esse projeto foi desenvolvido em ColdFusion e Banco de dados PostgreSQL.

O objetivo era lançar o site antes da campanha “Direito de Viver”, veiculada na mídia no mês de Novembro que contou com a participação de vários artistas. Como o tempo para desenvolvimento era curto, escolhemos a linguagem ColdFusion pela rapidez de desenvolvimento. Para a parte de vídeos, escolhemos o Flex com o gerenciamento dos vídeos sendo feito via administrativo.

Quando você entrar no site, será recebido com vídeos explicando o projeto e direcionando a navegação. Os internautas poderão ser familiares ou amigos, pacientes recém diagnosticados e pacientes em tratamento. Existem também as pessoas que querem contribuir e fazer doações ao Hospital de Câncer de Barretos.
Para cada perfil dos internautas existe uma seção específica com mais vídeos e textos para maiores esclarecimentos.

No administrativo, os médicos do hospital têm algumas ferramentas para gerenciar o conteúdo do site. Assim eles podem incluir um novo tipo de câncer ou editar uma informação sobre um já existente.

Como ferramenta para arrecadar as doações, escolhemos o Pagamento Digital, pois assim o Hospital de Câncer de Barretos não precisaria assinar vários contratos com as diversas bandeiras de cartão de crédito e para boleto bancário. Todas as opções já estão disponíveis no sistema do pagamento escolhido.

Um grande diferencial desse projeto é a Comunidade Contra o Câncer.

Nela os participantes podem trocar experiências e acompanhar algum amigo que esteja em tratamento.

Essa ideia ajuda o paciente em tratamento, pois ele pode atualizar seu perfil e todos seus amigos e conhecidos acompanham o desenvolvimento do tratamento por um único canal. Assim ele não precisa ficar repetindo inúmeras vezes o que está passando.

Enfim, esse projeto me deixou muito feliz. Sei que existem várias coisas para melhorar e estamos trabalhando nisso.

Não deixe de ajudar também, faça sua doação!

dez 22

Arrumando código JavaScript

Este post é pra quem precisa de um “embelezador de código”.

Quando você pegar algum script para dar manutenção e simplesmente ele estiver ilegível, use essa dica!

Algumas APIs utilizam .js compactado, quando quer verificar como eles fizeram tal programação e você abre o .js ele está todo em uma linha, use essa dica!

No site JavaScript Beautifier você coloca o script bagunçado e ele faz toda identação e organização, deixando o código em um formato bem mais fácil de “ler”.

Procurei nos buscadores por “javascript auto formatação” ou “javascript formatar código” e não achei nada parecido!

Agora se você precisa de um compactador de código, use YUI. Nesse site é possível compactar códigos JavaScript e CSS.

out 28

Humor, proposta de trabalho

Participo da lista CF-Brasil e em uma discussão sobre salários, um dos participantes enviou uma imagem muito bem humorada :)

Como gostei muito da imagem vou compartilhar aqui, pois sei que muitos desenvolvedores já ouviram essa mesma frase da imagem.

 

A gente não vai poder pagar vocês, mas esse trabalho vai dar visibilidade a longo prazo.

"... esse trabalho vai dar visibilidade a longo prazo ..."

Next Page »