Esercizio PHP: Numero giorni vissuti

Pubblico un esercizio PHP svolto nelle classi della specializzazione Informatica dell'Istituto Tecnico Alessandrini di Teramo e riguardante la gestione delle date e del tempo, una delle operazioni più utilizzate nella realizzazione di siti e applicationi web e nell'esecuzione di query SQL 

 

Esercizio - Numero di giorni vissuti
Scrivere uno script PHP che consenta di calcolare il numero di giorni trascorsi tra la data di nascita e la data odierna. Utilizzare Ajax per evitare il refresh della pagina.

 

giornitrascorsi.php
<!DOCTYPE html>
<html>
<head>
	<title>Giorni trascorsi</title>
	<script src="http://code.jquery.com/jquery-latest.js"></script> 
</head>
<style>
	input[type=text]{ width:200px}
	input[type=date]{ width:200px}
</style>
<script type="text/javascript">
	$(document).ready(function()
	{
		// 
		$('#valida').click(function()
		{
			var d1=$("#data1").val();
			var d2=$("#data2").val();
			if(d2==""){
				alert("Inserire la data di nascita!");
				return false;
			}
 
			var intervallo='data1='+d1+"&data2="+d2;
			//chiamata ajax 
		$.ajax(
		{
			type: "POST",
			url: "calcolagiorni.php",
			data: intervallo,
			cache:false,
            success: function (risultato) 
            {
				$('#giornivissuti').val(risultato);
		    }
            });
            return false;
		});	
	});	
 </script>
 
<body>
<h2>Numero di giorni vissuti</h2>
 
<?php	$oggi=date("Y-m-d");?>
<form name="form1">
	<label>Data odierna</label><br/>
	<input type="date" id="data1" name="data1" value="<?php echo $oggi;?>"readonly><br/><br/> 
	<!-- La data di nascita è maggiore della data 1990-01-01 e 
	non superiore alla data odierna -->
	<label>Data di nascita</label><br/>
	<input type="date" id="data2" name="data2" min="1990-01-01"  
	max="<?php echo $oggi;?>"><br/><br/> 
	<input type="text" style="text-align:center"  size=20 
	id="giornivissuti" readonly><br/><br/>
	<input type="reset" value="Reset"  >
	<input type="submit" value="Calcola" id="valida" >	
</form>
</body>
</html>

 

calcolagiorni.php
<?php
	$d1=$_POST["data1"];
	$d2=$_POST["data2"];
 
	//calcola la differenza in secondi tra le due date
	$nsecondi = strtotime($d2) - strtotime($d1);
 
	// calcola la differenza in giorni. 86400=24*3600 
    $ngiorni =(int)(abs($nsecondi / 86400));
 
	echo "Giorni vissuti: ".$ngiorni;
?>

 

Prova il codice

Scarica la soluzione pdf

Pagina download Esercizi PHP