Calculando dias úteis com php

Crédito sxc.hu
Essa é uma função que desenvolvi segundo a necessidade de um amigo,  ela executa o calculo de dias úteis em determinado mês, para o script ficar completo só é necessário a criação de uma tabela no banco de dados onde serão registrados os feriados, se eu conseguir um tempinho no final de semana, termino o script, e aproveito para ensinar como criar uma tabela, inserir e editar um registro.



/**
 * Função que calcula dias úteis no mês
 * 
 * @autor Carlos Maniero 
 */


function dias_uteis($mes,$ano){
  
  $uteis = 0;
  // Obtém o número de dias no mês 
  // (http://php.net/manual/en/function.cal-days-in-month.php)
  $dias_no_mes = cal_days_in_month(CAL_GREGORIAN, $mes, $ano); 

  for($dia = 1; $dia <= $dias_no_mes; $dia++){

    // Aqui você pode verifica se tem feriado
    // ----------------------------------------
    // Obtém o timestamp
    // (http://php.net/manual/pt_BR/function.mktime.php)
    $timestamp = mktime(0, 0, 0, $mes, $dia, $ano);
    $semana    = date("N", $timestamp);

    if($semana < 6) $uteis++;

  }

  return $uteis;

}


// Invocando a função
echo dias_uteis(date('m'),date('Y')); // Recebe dias úteis do mês atual
echo dias_uteis(1,2012); // Recebe dias úteis do mês 1 de 2012

Simplificando a validação em PHP

Crédito: sxc.hu
Nada é tão chato quanto fazer aquela validação de formulário não é mesmo? E se eu disser que há uma maneira simples de se fazer isso em PHP, isso mesmo, nada de sofrimento!

Estou falando da função filter_var() vamos a um exemplo de utilização da mesma:






// Validação de email
 if(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)){
   echo "Email Válido!";
 }


// Validação de url
 if(filter_var('http://carlosmaniero.blogspot.com'FILTER_VALIDATE_URL)){
   echo "Url Válido!";
 }


Espero que seja um dica útil para vocês, as constantes usadas por essa função pode ser encontrada nesse link: http://php.net/manual/en/filter.constants.php

Plugin para customização de formulários

Como postei anteriormente estou desenvolvendo uma nova versão do Livro de oração, e nisso fui obrigado a desenvolver uma série de plugins para jquery para customização de formulários. Todos sabem da minha paixão pelo mundo open source, logo, estou disponibilizando aqui uma versão beta do plugin, acredito que há muito o que melhorar e tenho certeza que até o fim do meu projeto ele estará bem melhor, mas vamos a uma prévia:

JS: http://goo.gl/ueKw2
CSS: http://goo.gl/76cxn


O plugin é dependente do masked input que pode ser obtido aqui:

http://digitalbush.com/projects/masked-input-plugin/

Segue uma pequena demostração de como usa-lo:

$("seletor").inputCustom({
    opção : "valor"
});

Segue a lista de opções:

label 
Descrição: Texto padrão do campo, desaparece no evento focus
Padrão: ""


datatype
Descrição: Tipo de dado [text/url/email/number]
Padrão: text


required
Descrição: Seta campo camo obrigatório ou não
Padrão: false


disable
Descrição: Checa se campo pode estar desativado 
Padrão: false


minlength
Descrição: Tamanho mínimo em caractéres do texto, em caso de número valor mínimo do número
Padrão: 1

maxlength
Descrição: Tamanho máximo em caractéres do texto, em caso de número valor máximo do número
Padrão: 10000

errorMsg
Descrição: Mensagem de erro caso campo não for corretamente preenchido
Padrão: 'Preencha o campo corretamente!'

errorClass
Descrição: Classe que será aplicada ao elemento caso não esteja corretamente preenchido
Padrão: 'errorField'

labelClass
Descrição: Classe para quando o elemento esteja no texto padrão (label)
Padrão: 'labelActive'

mask
Descrição: Máscara que será aplicada ao elemento (ex.: 99/99/9999), para maiores informações pesquisar o site no maskedinput
Padrão: ""

autoComplete
Descrição: Url onde será recebido o JSON usado para o auto complete: (ex.: { "city_5137":"Ribeirão Pires","city_5138":"Ribeirão Preto"})
Padrão:

click
Descrição: Evento click do elemento
Padrão: function(){}

focus
Descrição: Evento focus do elemento
Padrão: function(){}

focusout
Descrição: Evento focusout do elemento
Padrão: function(){}

keydown
Descrição: Evento keydown do elemento
Padrão: function(){}

keyup
Descrição: Evento keyup do elemento
Padrão: function(){}


Exemplo básico:


$(document).ready(function(){
  $("input[name=nome]").inputCustom({
    label: "Nome: ",
    required: true,
    minlength: 3,
    maxlength: 150,
    errorMsg: "Preencha o campo nome"
});

  $("input[name=email]").inputCustom({
    label: "Email: ",
    required: true,
    datatype: "email",
    errorMsg: "Preencha o campo email!"
  });

  $("input[name=url]").inputCustom({
    label: "Site: ",
    required: true,
    datatype: "url",
    errorMsg: "Preencha o campo URL"
  });
});




Por hoje é só, se possível amanhã estarei falando um pouco mais sobre o plugin.


Um novo primeiro post

Estou voltando a postar no blog depois de um longo período, fui extremamente influenciado pelo Leonardo Ferreira, você pode conferir suas inúteis anotações nesse endereço http://ferreiraleonardo.blogspot.com/, tenho algumas certezas sobre essa volta, uma delas é que a qualquer momento vou desistir de postar, e até mesmo esse post pode ser o último.

 Sem mais delongas vou contar um pouco sobre o que aconteceu comigo nesse período em que estive off (pelo menos na blogosféra). Primeiramente passei um bom período estudando, em programação obtive sucesso, mas o inglês e o cursinho foi um fracasso, enfim estou trabalhando em uma agência de publicidade e propaganda como programador, lá é uma empresa composta por pessoa sem qualquer senso de humor, onde se aplica puramente a lei da convivência para manter o ambiente estável, você pode confirmar isso com as imagens abaixo:



Não posso deixar de falar de um projeto pessoal chamado Livro de Oração, de todos eles é o que mais me dá  prazer em realiza-lo ele tem se tornado um site abençoado, e espero que cresça ainda mais, estou trabalhando nele nesse exato momento, ele em breve se transformará em uma rede social, o mais difícil de tocar o projeto é na questão dos layouts, como todo bom programador não sou nada bom com design, mas ai eu entrego na mão de um brother meu que sempre me dá  uma força ele se chama Espírito Santo, e sempre tem me ajudado nessas horas, isso ainda está em desenvolvimento, não sei quando vou conseguir entrega-lo já que existe uma complicação chamada tempo, mas sempre que possível trabalho nele, se você se interessar pelo projeto o link é o seguinte: http://www.livrodeoracao.com.br caso esteja necessitado de oração posta lá, pode ter certeza que sempre terá alguém orando por você.

Acho que não tenho mais o que acrescentar nesse primeiro post, vou deixar minha "vidinha de adolescente" de fora dos meus posts, para os que estão acostumados com minhas postagens isso provavelmente isso vai ser um espanto, mas juro que vou tentar deixar as "frescuritis" fora dessa vez.