- Home
- Categorie
- Coding e Sistemistica
- PHP
- Calcolo eta tramite campo
-
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]