- Home
- Categorie
- Coding e Sistemistica
- Coding
- Calcolo eta tramite campo
- 
							
							
							
							
							
Calcolo eta tramite campoSalve a tutti, piccolo aiuto  ho questa funzione per calcolare l'eta di una persona [PHP]<?php $datanascita = "19-10-1964"; $dateOfBirth = "$datanascita"; 
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));echo 'Sei nato il '.$dateOfBirth ; 
 echo " ";
 echo 'e hai ' .$diff->format('%y');
 echo " ";
 echo 'anni';
 ?>
 [/PHP]io vorrei che tramite il prelievo del campo birthday mi visualizza il risultato', 
 ho provato ma viene visualizzato un errore Soluzione? [PHP]<?php $datanascita = "birthday"; $dateOfBirth = "$datanascita"; 
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));echo 'Sei nato il '.$dateOfBirth ; 
 echo " ";
 echo 'e hai ' .$diff->format('%y');
 echo " ";
 echo 'anni';
 ?>
 [/PHP]
 
- 
							
							
							
							
							Ciao, se scrivi [PHP] 
 $datanascita = "birthday";
 [/PHP]con gli apici, la variabile $datanascita viene valorizzata con i caratteri della parola birthday invece della data nel formato AAAA-MM-GG, come nel primo esempio. Probabilmente volevi scrivere $birthday, senza apici. Credo siano inutili anche gli apici in [PHP] 
 $dateOfBirth = "$datanascita";
 [/PHP]
 
- 
							
							
							
							
							
Ciao altraSoluzione,** birthday** e' il campo date memorizzato nel database mysql [PHP]<p class="bioheading">Birthday</p><p class="biodata"><?php echo $row['birthday'];?></p>[/PHP] in questo caso mi restituisce **1964-10-19 che sarebbe la data di nascita, io vorrei visualizzare accanto anch l'eta (che sarebbe 54 in questo esempio) naturalmente ci sono molte date di nascita, e per ognuno si deve calcolare l'eta' giusta ** 
 
- 
							
							
							
							
							@Alex_2019 said: Ciao altraSoluzione,** birthday** e' il campo date memorizzato nel database mysql [PHP]<p class="bioheading">Birthday</p><p class="biodata"><?php echo $row['birthday'];?></p>[/PHP] in questo caso mi restituisce **1964-10-19 che sarebbe la data di nascita, io vorrei visualizzare accanto anch l'eta(che sarebbe 54 in questo esempio) naturalmente ci sono molte date di nascita, e per ognuno si deve calcolare l'eta' giusta ** Ciao, 
 quindi il codice corretto, all'interno del loop, dovrebbe essere:[PHP] 
 <?php
 $datanascita = $row['birthday'];$dateOfBirth = $datanascita; 
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));echo 'Sei nato il '.$dateOfBirth ; 
 echo " ";
 echo 'e hai ' .$diff->format('%y');
 echo " ";
 echo 'anni';
 ?>
 [/PHP]Anzi, volendo puoi eliminare una riga: [PHP] 
 <?php
 $dateOfBirth = $row['birthday'];
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));echo 'Sei nato il '.$dateOfBirth ; 
 echo " ";
 echo 'e hai ' .$diff->format('%y');
 echo " ";
 echo 'anni';
 ?>
 [/PHP]
 
- 
							
							
							
							
							
perfetto funziona, vorrei visualizzare l'eta' a fianco della data di nascita, questa mi da errore [PHP]<p class="bioheading">Birthday</p><p class="biodata"><?php echo $row['birthday'];?></p><?php echo ' ' .$diff->format('%y') ''.anni; ?>[/PHP] cosi, 1964-10-19 - 54 anni 
 
- 
							
							
							
							
							
ho aggiustato il codice, ma vorrei tutto sulla stessa riga  [PHP]<p class="bioheading">Birthday</p><p class="biodata"><?php echo $row['birthday'];?></p><?php echo ' ' .$diff->format('%y'), " ", "anni"; ?>[/PHP] adesso mi visualizza questo BIRTHDAY 
 1964-10-19
 54 anni
 
- 
							
							
							
							
							
Risolto  c'era un eco in piu'  [PHP]<p class="bioheading">Birthday</p><p class="biodata"><?php echo $row['birthday'], " ", "-" , "<b>", ' ' .$diff->format('%y'), "</b>", " ", "anni" ; ?></p> 
 [/PHP]Grazie [altraSoluzione  
 ](http://www.giorgiotave.it/forum/members/altrasoluzione.html)
 
- 
							
							
							
							
							
vorrei perfezionarlo, ho aggiunto il colore red, quello che vorrei ottenere e il cambio di colore in base all'eta', esempio: da 20 in su verde 
 da 30 in su blu
 da 40 in su arancione
 da 50 in su rosso[PHP]<?php $datanascita = $row['birthday']; $dateOfBirth = $datanascita; 
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));?> [/PHP] [PHP]<<p class="bioheading">Birthday</p><p class="biodata"><?php echo $row['birthday'], " ", "-" , "<b>", '<font color="#FF0000">',' ' .$diff->format('%y'), '</font>', "</b>", " ", "anni" ; ?></p> [/PHP] adesso visualizzo cosi 1964-10-19 -** 54** anni 
 
- 
							
							
							
							
							@Alex_2019 said: vorrei perfezionarlo, ho aggiunto il colore red, quello che vorrei ottenere e il cambio di colore in base all'eta', Non ho tempo per scrivere il codice intero ma puoi utilizzare il comando switch (https://www.php.net/manual/en/control-structures.switch.php) per stabilire diversi range e modificare una variabile che contiene il codice colore (o per modificare una classe CSS) di conseguenza. 
 
- 
							
							
							
							
							
Esattamente come ti hanno suggerito, devi utilizzare le condizioni in PHP. 
 Puoi usare IF ed ELSE oppure puoi utilizzare lo switch.
 Di seguito il codice, ma dovresti apprendere cosa e come ho fatto, altrimenti resta tutto inutile e fine a se stesso.[PHP] 
 <?php$datanascita = $row['birthday']; $dateOfBirth = $datanascita; 
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));?> <?php 
 $a = $diff->format('%y');switch($a) { 
 case $a >= 20 && $a < 30 :
 $anni = '<font color="green">' . $a . '</font>';
 break;
 case $a >= 30 && $a < 40 :
 $anni = '<font color="blue">' . $a . '</font>';
 break;
 case $a >= 40 && $a < 50 :
 $anni = '<font color="orange">' . $a . '</font>';
 break;
 case $a >= 50 :
 $anni = '<font color="red">' . $a . '</font>';
 break;
 default :
 $anni = '';
 }?> 
 <p class="bioheading">
 Birthday
 </p>
 <p class="biodata">
 <?php echo $row['birthday'];?> - <b><?php echo $anni; ?></b> anni
 </p>
 [/PHP]
 Inoltre, dovresti anche imparare ad indentare il codice. Resta di più facile lettura e modifica, e, impara anche l'utilizzo di "echo" o "print" e le loro differenze, anche se minimi. Chiudo con: il codice HTML è sempre bene scriverlo al di fuori di PHP, per una maggiore lettura e modifica dello stesso.
 
- 
							
							
							
							
							
Grazie Stefano  avevo trovato qualche suggerimento su StackOverflow, ma non riuscivo a capire come impostare i case, adesso mi hai chiarito, ;)per indentare come fare? :bho: 
 io utilizzo Notepad++ (abbastanza per me)
 
- 
							
							
							
							
							
questo non riesco a risolverlo, si tratta di calcolare la differenza di 3 campi birthday start e today esempio: birthday: 1994 
 start: 2014
 today: dateinizio carriera a 20 anni [PHP]<p class="bioheading">Birthday</p><p class="biodata"><?php echo $row['birthday'];?></p>[/PHP] [PHP]<p class="bioheading">Start</p><p class="biodata"><?php echo $row['start']; ?></p>[/PHP] questo e' il codice precedente che calcola l'eta', ma non capisco come adattarlo, [PHP] 
 <?php
 $datanascita = $row['birthday'];$dateOfBirth = $datanascita; 
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));?> 
 [/PHP]
 
- 
							
							
							
							
							
c'e' un problema con il calcolo dell'eta', se birthday e' vuoto mi restituisce 0000-00-00 e l'eta' con l'anno corrente **2019 :bho:  
 **
 
- 
							
							
							
							
							
@Alex_2019 said: questo non riesco a risolverlo, si tratta di calcolare la differenza di 3 campi birthday start e today esempio: birthday: 1994 
 start: 2014
 today: dateinizio carriera a 20 anni [PHP]<p class="bioheading">Birthday</p><p class="biodata"><?php echo $row['birthday'];?></p>[/PHP] [PHP]<p class="bioheading">Start</p><p class="biodata"><?php echo $row['start']; ?></p>[/PHP] questo e' il codice precedente che calcola l'eta', ma non capisco come adattarlo, [PHP] 
 <?php
 $datanascita = $row['birthday'];$dateOfBirth = $datanascita; 
 $today = date("Y-m-d");
 $diff = date_diff(date_create($dateOfBirth), date_create($today));?> 
 [/PHP]Stefano, piccolo aiuto  
 
- 
							
							
							
							
							
piccola modifica, il campo start e' year (4), non date si tratta di calcolare la differenza tra birthday campo birthday tipo (date 0000-00-00) e start tipo (year 0000) 
 
- 
							
							
							
							
							
Risolto anche questo  [PHP]<?php // calcolo differenza anni tra birthday e start, utilizzata la function.substr 
 $var1 = $row['birthday'];
 $var2 = $row ['start'];?>[/PHP] [PHP]<?php echo $var2 - substr($var1, 0, 4); ?>[/PHP]