Função PHP

Enviada por Armando Claro 
Armando Claro
Função PHP
02 de August de 2017 às 08:10AM
Olá, primeiramente obrigado por me receberem nesta comunidade, procurarei aprender e naquilo que me for possivel, auxiliar!

Este código abaixo calcula a idade em anos e meses. A minha pretensão seria que o cálculo fosse efectuado no evento "lostFocus" (onBlur (?)) do textField. Porém se bem consigo entender para isso tenho que criar uma função mas não estou a conseguir. Será que me podem ajudar?

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>

<body>
<form method="post" action="">
<input type="DateTime" name="dn">
<input type="submit" name="calcula" value="CALCULAR">

</form>
</body>
</html>
<?php
date_default_timezone_set('Europe/Lisbon');
$dn = new DateTime ($_POST['dn']);
$hoje = new DateTime(Date());
$idade = $hoje ->diff ($dn);

echo "Tem {$idade->y} anos e {$idade->m} meses de idade";
?>
Obrigado
Armando Claro
Re: Função PHP
02 de August de 2017 às 12:02PM
Digamos que resolvi a função em metade pois pretendo obter a idade em Anos e Meses e não estou a conseguir que funcione

<?php
date_default_timezone_set('Europe/Lisbon');
function idade($dn,$hoje) {
$dn = new DateTime ($_POST['dn']);
$hoje = new DateTime(Date());
$idade = $hoje ->diff ($dn);
return $idade->y;
}

echo idade();

?>
Armando Claro
Re: Função PHP
02 de August de 2017 às 12:32PM
Resolvido!

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>

<body>
<form method="post" action="">
<input type="DateTime" name="dn">
<input type="submit" name="calcula" value="CALCULAR">


</form>
</body>
</html>
<?php
date_default_timezone_set('Europe/Lisbon');
function idade ($dn,$hoje) {
$dn = new DateTime ($_POST['dn']);
$hoje = new DateTime(Date());
$idade = $hoje ->diff ($dn);

return "Tem ".$idade->y." anos e ".$idade->m." meses de idade!";

}
print idade();
?>
Armando Claro
Re: Afinal, não está resolvido!!
02 de August de 2017 às 01:13PM
Resolvi a Function, mas não o problema!
Pretendo que a função seja activada ao sair do text (Lostfocus do vb);
Obrigado
José Ângelo Lefundes Coelho
Re: Função PHP
02 de August de 2017 às 05:08PM
Vamos dividir a solução?

arquivo onde contem o formulario, index.php:

//inicia aqui

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<script src="jquery.js"></script>
<script>
$(function ($) {

$('#dn').focusout(function () {



var dn = $.trim($('#dn').val());


$(infor).html('Carregando...');

$.post(
'funcoes.php',
{dn: dn},
function (json)
{
var result = JSON.parse(json);

$(infor).html(result);


});


});
});
</script>
<body>
<form method="post" action="">
<input type="DateTime" name="dn" id="dn" placeholder="Data no formato yyy-mm-dd" required="">
</form>
<div id="infor"></div>
</body>
</html>

//termina aqui

Agora arquivo que terá a função de calcular, arquivo funcoes.php

//inicia aqui
<?php
date_default_timezone_set('Europe/Lisbon');

$dn = new DateTime ($_POST['dn']);
$hoje = new DateTime(Date());
$idade = $hoje ->diff ($dn);



$html = "Tem ".$idade->y." anos e ".$idade->m." meses de idade!";

echo json_encode($html);

//termina aqui

Agora baixe o arquivo jquery.js do site oficial e salve tudo no mesmo diretório.
Lembrando que o jquery.js que utilizei para testar foi o que tem as especificações abaixo:

* jQuery JavaScript Library v1.7.2
* http://jquery.com/
*
* Copyright 2011, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Wed Mar 21 12:46:34 2012 -0700
José Ângelo Lefundes Coelho
Re: Função PHP
02 de August de 2017 às 05:11PM
Lembrando, essa foi uma solução simples, iniciante, tem como aprimorar o código com boas práticas de programação.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.