• Home
  • Forum
  • Fare Web
  • PHP

Calcolo eta' da fixare

  • Creatore Discussione Creatore Discussione Alex_70
  • Data di inizio Data di inizio 24 Apr 2020
Prec.
  • 1
  • 2
  • 3
  • 4
Succ.
Primo Prec. 3 di 4 Succ. Ultimo

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 20 Mag 2020
  • #41
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


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

lo switch non viene eseguito


 

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
21
Vicenza
  • 20 Mag 2020
  • #42
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
  • 20 Mag 2020
  • #43
errore

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
614
58
28
21
Vicenza
  • 20 Mag 2020
  • #44
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
  • 20 Mag 2020
  • #45
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
614
58
28
21
Vicenza
  • 20 Mag 2020
  • #46
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>
 
Reactions: Alex_70

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 20 Mag 2020
  • #47
funziona






grazie Tommy03
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 19 Giu 2020
  • #48
Riapro il topic,

il campo Birthday si comporta in modo strano

1993-01-01 27 anni, OK



1993-06-01 27 anni, OK



1993-07-01 26 anni,

sbagliato, e continua cosi fino a Dicembre, non capisco



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
614
58
28
21
Vicenza
  • 19 Giu 2020
  • #49
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
  • 19 Giu 2020
  • #50
Tommy03 ha scritto:
Il brithday sembra giusto, 01-07-1993 è giusti che sia 26 anni.
Intendevi la colonna "Credited" (in foto evidenziata) sbagliata?
Clicca per allargare...

Credited mi sembra corretto , 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
614
58
28
21
Vicenza
  • 19 Giu 2020
  • #51
Alex_70 ha scritto:
perche' non 27
Clicca per allargare...
Il primo luglio ne farà 27, per ora sono 26
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 19 Giu 2020
  • #52
strano, se sono 26 allora perche' questo?

1993-01-01
27 anni
 

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
21
Vicenza
  • 19 Giu 2020
  • #53
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
  • 19 Giu 2020
  • #54
ok, capito,
ho scoperto una cosa nuova sulle date , il calcolatore di windows conferma





Grazie Tommy03 per la spiegazione
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 19 Giu 2020
  • #55
se il calcolo e' corretto allora resta il problema su Credited, segna la differenza sbagliata,
si puo' fixare?



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
614
58
28
21
Vicenza
  • 19 Giu 2020
  • #56
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
  • 19 Giu 2020
  • #57
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
  • 19 Giu 2020
  • #58
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
  • 27 Lug 2020
  • #59
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



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: 27 Lug 2020

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
21
Vicenza
  • 27 Lug 2020
  • #60
Alex_70 ha scritto:
if($var1 != "0000-00-00"){
Clicca per allargare...
Cambia questo in:
PHP:
if($var1 != "0000-00-00" AND $var1 != null){
 
Reactions: Alex_70
Prec.
  • 1
  • 2
  • 3
  • 4
Succ.
Primo Prec. 3 di 4 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

Formula Excel calcolo notti totali - Settore Turismo
  • andreas88
  • 15 Apr 2023
  • Windows e Software
Risposte
4
Visite
3K
Windows e Software 20 Apr 2023
andreas88
Calcolo fra due date con esclusione delle feste
  • MarcoGrazia
  • 8 Giu 2021
  • PHP
Risposte
7
Visite
4K
PHP 14 Giu 2021
MarcoGrazia
M
calcolo della velocità
  • maurivi53
  • 25 Mag 2020
  • MS Access
Risposte
5
Visite
2K
MS Access 26 Mag 2020
maurivi53
M
C
  • Bloccata
scelta operazione di calcolo in c++
  • Carlo Zito
  • 11 Mag 2020
  • C/C++
Risposte
7
Visite
2K
C/C++ 14 Mag 2020
Max 1
M
Problema con php per calcolo costo percentuale
  • Matteoarm99
  • 24 Mar 2020
  • PHP
Risposte
7
Visite
3K
PHP 25 Mar 2020
marino51
[Javascript] aiuto su jquery per calcolo altezze dom
  • claudio_lorenzo
  • 23 Nov 2019
  • Javascript
Risposte
1
Visite
2K
Javascript 23 Nov 2019
Tommy03
A
[PHP] calcolo numero di ore effettuate
  • Akille67
  • 2 Ott 2019
  • PHP
Risposte
7
Visite
2K
PHP 2 Ott 2019
macus_adi
M
[Javascript] Verifica calcolo prima di fare insert
  • Max61
  • 20 Feb 2019
  • Javascript
Risposte
13
Visite
3K
Javascript 28 Feb 2019
Max61
M
M
[PHP] Visualizzare nell'alert il calcolo
  • Max61
  • 8 Feb 2019
  • PHP
Risposte
4
Visite
2K
PHP 19 Feb 2019
Max61
M
[PHP]Funzione di calcolo prezzo di una camera in un range di date
  • maxnegri
  • 19 Gen 2019
  • PHP
  • 2 3 4
Risposte
62
Visite
7K
PHP 6 Feb 2019
maxnegri
N
[Java] Piccolo jform per calcolo totale da 2 campi i double
  • nunzio.rizzo74
  • 25 Ott 2018
  • Java
Risposte
0
Visite
2K
Java 25 Ott 2018
nunzio.rizzo74
N
S
  • Bloccata
Creare un foglio di calcolo in html collegandolo a un e-commerce
  • sprafundu
  • 2 Feb 2018
  • HTML e CSS
Risposte
7
Visite
3K
HTML e CSS 3 Feb 2018
sprafundu
S
P
[PHP] Calcolo prezzi camera in range di date diverse
  • perlanera
  • 11 Gen 2018
  • PHP
Risposte
11
Visite
3K
PHP 13 Gen 2018
perlanera
P
V
calcolo giorno di fine mese ad una seconda data
  • Vera
  • 27 Nov 2017
  • jQuery
Risposte
0
Visite
1K
jQuery 27 Nov 2017
Vera
V
VPS specifica per calcolo ffmpeg
  • matteoraggi
  • 18 Lug 2017
  • Server Dedicati e VPS
Risposte
1
Visite
2K
Server Dedicati e VPS 16 Ago 2018
IKOULA CLOUD
M
[Javascript] Calcolo sbagliato
  • Mirco1974
  • 21 Mar 2017
  • Javascript
Risposte
7
Visite
2K
Javascript 23 Mar 2017
criric
G
[Javascript] Ricalcolo Totale jQuery
  • giumazzi
  • 14 Mar 2017
  • Javascript
Risposte
7
Visite
3K
Javascript 14 Mar 2017
giumazzi
G
Z
[PHP] Calcolo giorno
  • z.cristiano
  • 25 Ott 2016
  • PHP
Risposte
5
Visite
4K
PHP 23 Nov 2016
z.cristiano
Z
S
[PHP] Calcolo Rate
  • sarox85
  • 23 Ott 2016
  • PHP
Risposte
2
Visite
2K
PHP 23 Ott 2016
sarox85
S
T
[PHP] Calcolo anzianità soggetti [era: Help me :( Esercizio per me impossibile]
  • tonya_atrox
  • 7 Ott 2016
  • PHP
Risposte
9
Visite
4K
PHP 11 Ott 2016
marino51
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?