Calcolo eta' da fixare

  • Creatore Discussione Creatore Discussione Alex_70
  • Data di inizio Data di inizio
riepilogo:

Nessun dato disponibile deve essere visualizzato sempre se il campo e' vuoto

- - - devono sparire se il campo e' vuoto

con i 2 codici sopra testati adesso visualizzo il testo anni - mesi - giorni nel campo vuoto

birthday6.png

nel campo con la data completa e' sparito il colore (in questo caso rosso) nell'anno,

lo switch non viene eseguito


birthday7.png
 
Lo switch non viene eseguito perché è stata cambiato il nome della variabile da $a a $anni. Ricapitolando dovresti fare cosi:
PHP:
<?php // code calcolo eta' fixato by Tommy03 2020.05.20


$datanascita = $row['birthday'];

if($datanascita != "0000-00-00"){

$dateOfBirth = $datanascita;
$today = date("Y-m-d");
$diff = date_diff(date_create($dateOfBirth), date_create($today));



// //ciclo switch

$a = $diff->format('%y');
$mese = $diff->format('%m');
$giorno = $diff->format('%d');

switch($a) {
case $a >= 10 && $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 = 'No data';
}

}else{
$anni = "";
$mese = "";
$giorno = "";
$datanascita="Nessun dato disponibile";
}

?>
   

<p class="bioheading">Birthday</p><p class="biodata"><?php echo $datanascita;?>
         <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - "}?><b><?php echo $anni; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{$if($a ==1){echo "anno";}else{echo "anni";}}?>
        <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - "}?><b><?php echo $mese; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{if($mese ==1){echo "mese";}else{echo "mesi";}}?>
         <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - "}?><b><?php echo $giorno; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{if($giorno ==1){echo "giorno";}else{echo "giorni";}}?>


    </p>
Prova a fare copia/incolla di questo codice e dimmi cosa esce, spero di non aver sbagliato niente
 
errore :oops:

PHP:
Parse error: syntax error, unexpected '}', expecting ',' or ';' in E:\OSPanel\domains\localhost\cinema\members\cinema.php on line 455

line 455

PHP:
 <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - "}?><b><?php echo $anni; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}
 
Scusa ho dimenticato il ;
PHP:
<?php // code calcolo eta' fixato by Tommy03 2020.05.20


$datanascita = $row['birthday'];

if($datanascita != "0000-00-00"){

$dateOfBirth = $datanascita;
$today = date("Y-m-d");
$diff = date_diff(date_create($dateOfBirth), date_create($today));



// //ciclo switch

$a = $diff->format('%y');
$mese = $diff->format('%m');
$giorno = $diff->format('%d');

switch($a) {
case $a >= 10 && $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 = 'No data';
}

}else{
$anni = "";
$mese = "";
$giorno = "";
$datanascita="Nessun dato disponibile";
}

?>
   

<p class="bioheading">Birthday</p><p class="biodata"><?php echo $datanascita;?>
         <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - ";}?><b><?php echo $anni; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{$if($a ==1){echo "anno";}else{echo "anni";}}?>
        <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - ";}?><b><?php echo $mese; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{if($mese ==1){echo "mese";}else{echo "mesi";}}?>
         <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - ";}?><b><?php echo $giorno; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{if($giorno ==1){echo "giorno";}else{echo "giorni";}}?>


    </p>
 
:rolleyes: ancora errore (tranquillo non devi scusarti ;))

PHP:
Parse error: syntax error, unexpected '{' in E:\OSPanel\domains\localhost\cinema\members\cinema.php on line 455

la linea e' sempre la stessa
 
PHP:
<?php // code calcolo eta' fixato by Tommy03 2020.05.20


$datanascita = $row['birthday'];

if($datanascita != "0000-00-00"){

$dateOfBirth = $datanascita;
$today = date("Y-m-d");
$diff = date_diff(date_create($dateOfBirth), date_create($today));



// //ciclo switch

$a = $diff->format('%y');
$mese = $diff->format('%m');
$giorno = $diff->format('%d');

switch($a) {
case $a >= 10 && $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 = 'No data';
}

}else{
$anni = "";
$mese = "";
$giorno = "";
$datanascita="Nessun dato disponibile";
}

?>
   

<p class="bioheading">Birthday</p><p class="biodata"><?php echo $datanascita;?>
         <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - ";}?><b><?php echo $anni; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{if($a ==1){echo "anno";}else{echo "anni";}}?>
        <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - ";}?><b><?php echo $mese; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{if($mese ==1){echo "mese";}else{echo "mesi";}}?>
         <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{echo " - ";}?><b><?php echo $giorno; ?></b> <?php if($datanascita == "Nessun dato disponibile"){echo "";}else{if($giorno ==1){echo "giorno";}else{echo "giorni";}}?>


    </p>
 
  • Like
Reactions: Alex_70
Riapro il topic,

il campo Birthday si comporta in modo strano

1993-01-01 27 anni, OK

sshot-1.png


1993-06-01 27 anni, OK

sshot-2.png


1993-07-01 26 anni,

sbagliato, e continua cosi fino a Dicembre, non capisco :rolleyes:

sshot-3.png


ecco il codice completo fixato da Tommy03


PHP:
<?php // code calcolo eta' fixato by Tommy03 2020.05.20


$datanascita = $row['birthday'];

if($datanascita != "0000-00-00"){

$dateOfBirth = $datanascita;
$today = date("Y-m-d");
$diff = date_diff(date_create($dateOfBirth), date_create($today));



// //ciclo switch

$a = $diff->format('%y');
$mese = $diff->format('%m');
$giorno = $diff->format('%d');

switch($a) {
case $a >= 10 && $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 = 'No data';
}

}else{
$anni = "";
$mese = "";
$giorno = "";
$datanascita="Nessun dato disponibile";
}

?>
 
Il brithday sembra giusto, 01-07-1993 è giusti che sia 26 anni.
Intendevi la colonna "Credited" (in foto evidenziata) sbagliata?
 
Il brithday sembra giusto, 01-07-1993 è giusti che sia 26 anni.
Intendevi la colonna "Credited" (in foto evidenziata) sbagliata?

Credited mi sembra corretto :rolleyes:, calcola la differenza tra i campi birthday (anno tramite substring) e film_year (anno del film)
mi riferivo a questo

1993-07-01 26 anni

perche' 26 anni? perche' non 27 ecc...?
 
Perche siamo il 19/06, se uno è nato il primo gennaio ne ha già compiuti 27, chi nasce dopo la data di oggi (tipo il primo luglio) ne ha ancora 26
 
ok, capito,
ho scoperto una cosa nuova sulle date , il calcolatore di windows conferma ;)

sshot-5.png


sshot-4.png


Grazie Tommy03 per la spiegazione :)
 
se il calcolo e' corretto allora resta il problema su Credited, segna la differenza sbagliata,
si puo' fixare? :rolleyes:

sshot-3-png.7459


ecco il codice

PHP:
<?php
        // calcolo differenza anni tra birthday e start, utilizzata la function.substr fix by Tommy03 2020.06.07
        // dati prelevati dalla tabella actor e film
        // con INNER JOIN actor ON film_actor.actor_id = actor.actor_id  si prelevano i dati di un'altra tabella

$var1 = $row->birthday;
$var2 = $row->film_year;
if($var1 != "0000-00-00"){
?>

(<font color="blue"><?php echo $var2 - substr($var1, 0, 4); ?></font>)
<?php
}else{
?>
(<font color="blue">No birthday</font>)
<?php
}

// calcolo differenza anni tra birthday e start, utilizzata la function.substr fix by Tommy03 2020.06.07
// La funzione substr restituisce una parte di una stringa. La sua sintassi è la seguente:
// substr(stringa, carattere_di_partenza[, quanti_caratteri])
// esempio substr($var1, 0, 4) restituisce solo 0000
       
?>
 
Per come è scritto il codice si prende l'anno del film e si fa la differenza con l'anno di nascita quindi è normale che venga fuori sempre 27. Secondo me va già benissimo così perché l'anno di uscita di un film non è una data specifica (con giorno e mese) quindi non si può calcolare esattamente la differenza con giorni e mesi, perciò io lascerei cosi, soltanto l'anno.
Pero se vuoi cambiarlo puoi fare cosi penso:
PHP:
$differenza = date_diff(date_create($var1), date_create($var2));
$anni = $differenza->format('%y');
E poi metti la variabile $anni dentro all'echo
 
intendi cosi ?

PHP:
$var1 = $row->birthday;
$var2 = $row->film_year;


$differenza = date_diff(date_create($var1), date_create($var2));
$anni = $differenza->format('%y');

if($var1 != "0000-00-00"){
?>

(<font color="blue"><?php echo $anni; ?></font>)
 
come non detto, il mio ragionamento e' sbagliato, credited deve avere il dato originale :)

gRAZIE Tommy
 
Riprendo il thread, mi sono accorto di un'anomalia, il codice restituiva No birthday se l'attore aveva il birthday 0000-00-00
ho notato pero' che se il birthday e' NULL mi restituisce l'anno del film ( film_year)

quello che vorrei e se anche in caso di NULL mi visualizzasse No birthday

sshot-2.png


PHP:
<?php

        // calcolo differenza anni tra birthday e start, utilizzata la function.substr fix by Tommy03 2020.06.07

        // dati prelevati dalla tabella actor e film

        // con INNER JOIN actor ON film_actor.actor_id = actor.actor_id  si prelevano i dati di un'altra tabella


$var1 = $row->birthday;

$var2 = $row->film_year;

if($var1 != "0000-00-00"){

?>


(<font color="blue"><?php echo $var2 - substr($var1, 0, 4); ?></font>)

<?php

}else{

?>

(<font color="blue">No birthday</font>)

<?php

}


// calcolo differenza anni tra birthday e start, utilizzata la function.substr fix by Tommy03 2020.06.07

// La funzione substr restituisce una parte di una stringa. La sua sintassi è la seguente:

// substr(stringa, carattere_di_partenza[, quanti_caratteri])

// esempio substr($var1, 0, 4) restituisce solo 0000

    

?>
 
Ultima modifica:

Discussioni simili