Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Função para Calcular Idade ...
MO
Função para Calcular Idade  
  1. <?php
  2. Pessoal uma ajuda estou criando uma função para calcular a idadeporém surgiu um erro que não estou conseguindo desvendaro erro:
  3. Warning:  strtotime() expects parameter 1 to be stringobject given in C:\Vertrigo\www\teste\app\lib\widget\Funcoes.class.php on line 62
  4. Fatal error:  Uncaught TypeErrorArgument 1 passed to Adianti\Widget\Form\TEntry::setExitAction() must be an instance of Adianti\Control\TActioninteger givencalled in C:\Vertrigo\www\teste\app\control\apresentacao\Formfuncaocalculaidade.class.php on line 90 and defined in C:\Vertrigo\www\teste\lib\adianti\widget\form\TEntry.php:201
  5. Stack trace:
  6. #0 C:\Vertrigo\www\teste\app\control\apresentacao\Formfuncaocalculaidade.class.php(90): Adianti\Widget\Form\TEntry->setExitAction(50)
  7. #1 C:\Vertrigo\www\teste\lib\adianti\core\AdiantiCoreApplication.php(80): Formfuncaocalculaidade->__construct(Array)
  8. #2 C:\Vertrigo\www\teste\engine.php(15): Adianti\Core\AdiantiCoreApplication::run('1')
  9. #3 C:\Vertrigo\www\teste\engine.php(20): TApplication::run()
  10. #4 {main}
  11.   thrown in C:\Vertrigo\www\teste\lib\adianti\widget\form\TEntry.php on line 201
  12. os Códigos:
  1. <?php
  2. /**
  3.  * FamiliarCompletoDataGridView Form List
  4.  * @author  <your name here>
  5.  */
  6. class Formfuncaocalculaidade extends TPage
  7. {
  8.     protected $form// form
  9.     protected $datagrid// datagrid
  10.     protected $pageNavigation;
  11.     protected $loaded;
  12.     private static $formName 'form_CompFam';
  13.     
  14.     /**
  15.      * Form constructor
  16.      * @param $param Request
  17.      */
  18.     public function __construct$param )
  19.     {
  20.         parent::__construct();
  21.         
  22.         // creates the form
  23.         $this->form = new TQuickForm('form_CompFam');
  24.         $this->form->class 'tform'// change CSS class
  25.         $this->form->style 'display: table;width:100%'// change style
  26.         $this->form->setFormTitle('Cadastro dos Familiáres');
  27.         //criando notebook
  28.         $this->notebook = new BootstrapNotebookWrapper( new TNotebook(900,500) );
  29.         //$this->notebook = new TNotebook(900,500);
  30.         //adicionando o notebook dentro do form
  31.         $this->form->add($this->notebook);
  32.         
  33.         //criando uma tabela
  34.         $table = new TTable();
  35.         
  36.         //criando um panel
  37.         $panel = new TPanel(1000,240);
  38.         
  39.         //adicionando o panel a tabela        
  40.         $table->addRowSet($panel);        
  41.         //adicionando duas páginas ao notebook
  42.         $this->notebook->appendPage('Dados dos Familiares'$table);
  43.         $cod_compfam              = new TEntry('cod_compfam');
  44.         $compf_nome               = new TEntry('compf_nome');
  45.         $compf_cpf                = new TEntry('compf_cpf');
  46.         $compf_datnasc            = new TDate('compf_datnasc');
  47.         $compf_Idade              = new TSpinner('compf_Idade');
  48.         //formatando os campos de valor Beneficio e renda
  49.         $compf_cpf->setMask('999.999.999-99');
  50.         $compf_datnasc->setMask('dd/mm/yyyy');
  51.         
  52.         
  53.         //Desabilitando o Código
  54.         $cod_compfam->setEditable(False);
  55.         
  56.         
  57.         // definindo o tamanho dos campos
  58.         $cod_compfam->setSize(80);
  59.         $compf_nome              -> setSize(290);         
  60.         $compf_cpf               -> setSize(100);
  61.         $compf_datnasc           -> setSize(100);         
  62.         $compf_Idade             -> setSize(55);        
  63.         
  64.         //formatação dos campos
  65.         $compf_Idade->setRange(0,120,1);
  66.         //validando campos
  67.         $compf_nome->addValidation('compf_nome', new TRequiredValidator);
  68.         //adicionando os Labels no Panel
  69.         $panel->put(new TLabel('Cd.Titular'),           1016);
  70.         $panel->put(new TLabel('Nome'),                 8416);                     
  71.         $panel->put(new TLabel('C.P.F'),               38016); 
  72.         $panel->put(new TLabel('Dat.Nasc.'),           49016); 
  73.         $panel->put(new TLabel('Idade'),               63016);    // 1a Linha                     
  74.         
  75.         ## inserindo campos na pagina 2
  76.         $panel->put($compf_nome,                 9235);         
  77.         $panel->put($compf_cpf,                 39035);         
  78.         $panel->put($compf_datnasc,             50035);         
  79.         $panel->put($compf_Idade,               63035);        // 1a Linha
  80.         
  81.         $compf_Idade Funcoes::onCalcidade($compf_datnasc);
  82.         $compf_datnasc->setExitAction($compf_Idade); 
  83.  
  84.         
  85.         
  86.         $this->form->setFields(array($cod_compfam$compf_nome$compf_cpf$compf_datnasc$compf_Idade));
  87.         parent::add($this->form);
  88.     }
  89. }
  1. <?php
  2. /**
  3.  * Funcoes.class [ HELPER ]
  4.  * Classe para incluir funções!
  5.  */
  6. class Funcoes
  7. {
  8.     
  9.     /*
  10.      * Calcula idade
  11.     */
  12.     public static function onCalcidade($param){
  13.     
  14.         /*
  15.         *    private static $formName = 'nome_do_formulario';
  16.         */
  17.         //print_r($param);
  18.         try
  19.         {
  20.             return intval(substr(date('Ymd') - date('Ymd'strtotime($param)), 0, -4));        }
  21.         catch (Exception $e){
  22.             new TMessage('error'$e->getMessage());
  23.         }
  24.         
  25.     }
  26.     
  27. }
  28. ?>



?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (3)


MC

Marcos Boas;
O erro ta dizendo que o paramentro 1 da strtotime() seje uma sting;

de um var_dump($param); para ver o que esta chegando.

Mas se quizer tenho uma função que utilizo para calcular datas, vc pode molda-la como vc quizer:

  1. <?php
  2.     /**-------------------------------------------------------------------------
  3.      *  Função CalData()
  4.      *  Escopo     - Retorna a Diferença entre duas Datas
  5.      *  Parametros - $data1 = Data a ser comparada.
  6.      *               $data2 = Data a ser comparada.
  7.      *               $absolute = O intervalo deve ser forçado como positivo?
  8.      *  Retorno    - array
  9.      *  obs - Invert = Representa um Periodo de Tempo (0)Positivo (1)Negativo
  10.      *
  11.      *  @author MarcoARCampos 
  12.      */
  13.     public static function CalData$data1$data2 null$absolute false )
  14.     {
  15.         $dDt1 = new DateTime((( !$data1 ) ? date('Y-m-d') : $data1 ));
  16.         $dDt2 = new DateTime((( !$data2 ) ? date('Y-m-d') : $data2 ));
  17.         $diff $dDt1->diff$dDt2$absolute );
  18.         
  19.         $Result['Ano']     = $diff->y
  20.         $Result['AnoDes']  = (( $diff->) ? 'Anos' 'Ano'); 
  21.         $Result['Mes']     = $diff->m
  22.         $Result['MesDes']  = (( $diff->) ? 'Meses' 'Mes'); 
  23.         $Result['Dia']     = $diff->d
  24.         $Result['DiaDes']  = (( $diff->) ? 'Dias' 'Dia'); 
  25.         $Result['Hor']     = $diff->h
  26.         $Result['HorDes']  = (( $diff->) ? 'Horas' 'Hora'); 
  27.         $Result['Min']     = $diff->i
  28.         $Result['MinDes']  = (( $diff->) ? 'Minutos' 'Minuto'); 
  29.         $Result['Seg']     = $diff->s;        
  30.         $Result['SegDes']  = (( $diff->) ? 'Segundos' 'Segundo');        
  31.         $Result['TDias']   = $diff->days;
  32.         $Result['TDiaDes'] = (( $diff->days ) ? 'Dias' 'Dia');
  33.         $Result['Invert']  = $diff->invert;
  34.         return $Result
  35.     }
  36. ?>
JC

Saudações

Para ter noção esta função converte para idade atual no datagrid

  1. <?php
  2. public static function calcIdade($valor$objeto$row)
  3.     {
  4. $data1 = new DateTime($valor);
  5. // segunda data
  6. $data2 = new DateTime (date('Y-m-d'));
  7. // diferença 
  8. $diferenca $data1->diff($data2);
  9. // resultado 
  10. return $diferenca->format('%y');
  11. }
  12.  ?>

MO

Galera muito obrigado pela ajuda verifiquei que não estava tratando corretamente o campo data.