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; ?>