Calcolo eta' da fixare

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
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
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
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
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
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 "";}
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
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>
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
: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
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
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

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
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";
}

?>
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Il brithday sembra giusto, 01-07-1993 è giusti che sia 26 anni.
Intendevi la colonna "Credited" (in foto evidenziata) sbagliata?
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
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...?
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
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
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
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 :)
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
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
       
?>
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
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
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
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>)
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
come non detto, il mio ragionamento e' sbagliato, credited deve avere il dato originale :)

gRAZIE Tommy
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
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
Autore Titolo Forum Risposte Data
andreas88 Formula Excel calcolo notti totali - Settore Turismo Windows e Software 4
MarcoGrazia Calcolo fra due date con esclusione delle feste PHP 7
M calcolo della velocità MS Access 5
C scelta operazione di calcolo in c++ C/C++ 7
M Problema con php per calcolo costo percentuale PHP 7
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
A [PHP] calcolo numero di ore effettuate PHP 7
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
M [PHP] Visualizzare nell'alert il calcolo PHP 4
maxnegri [PHP]Funzione di calcolo prezzo di una camera in un range di date PHP 62
N [Java] Piccolo jform per calcolo totale da 2 campi i double Java 0
S Creare un foglio di calcolo in html collegandolo a un e-commerce HTML e CSS 7
P [PHP] Calcolo prezzi camera in range di date diverse PHP 11
V calcolo giorno di fine mese ad una seconda data jQuery 0
matteoraggi VPS specifica per calcolo ffmpeg Server Dedicati e VPS 1
M [Javascript] Calcolo sbagliato Javascript 7
Z [PHP] Calcolo giorno PHP 5
S [PHP] Calcolo Rate PHP 2
T [PHP] Calcolo anzianità soggetti [era: Help me :( Esercizio per me impossibile] PHP 9
asevenx [Javascript] aggiungere righe con select da database e calcolo sconto in automatico Javascript 0
Bunz [Javascript] somma orario input + calcolo straordinario Javascript 3
andrea.peo Calcolo differenza fra record attivo e precedente PHP 1
M calcolo iva da valore di un form PHP 2
U calcolo imc Javascript 1
D Creare script per calcolo ore PHP 11
S calcolo php PHP 2
M Calcolo giorni lavorativi tra due date (escluse le feste comandate) PHP 6
E calcolo date feriali Database 6
G Calcolo differenza valori provenienti da una tabella PHP 0
jacobous Calcolo Mediana MS Access 4
felino Quesito matematico: calcolo ore stimate avendo la percentuale. Discussioni Varie 24
S Analysis Service 2005 calcolo incidenza Database 0
scatenato calcolo input PHP 1
A Checkbox da db e calcolo delle variabili Java 1
D calcolo fra date php PHP 2
scatenato aiuto:calcolo automatico dei campi input Javascript 7
M php / mysql calcolo prezzo base preventivo per hotel PHP 34
P Problemi di calcolo tra due date PHP 37
F calcolo percorso google map PHP 0
M [REGIME dei MINIMI] Plusvalenza fuori dal calcolo dei 30.000 euro Leggi, Normative e Fisco 1
filippino Calcolo IVA con javascript Javascript 3
L calcolo distanza tra due punti geografici Sviluppo app per iOS 0
L Calcolo della percentuale PayPal che varia in base al totale. E-Commerce 1
radioButton Qual è la capacita di calcolo di un database? Database 9
N [risolto] Funzione per calcolo età PHP 4
P Risorse di calcolo java Java 1
Emix errore nel calcolo PHP 4
M Importare pagine database pubblico in foglio di calcolo OpenOffice Windows e Software 0
G Aiutino su un calcolo javascript in tempo reale Javascript 15
Emix Doppio form con calcolo variabili PHP 5

Discussioni simili