Le funzioni mysql_* non fanno più parte di PHP dalla versione 7. Stai usando una versione del linguaggio non più supportata da 2 anni e obsoleta da 4.
Forse è il caso di valutare un aggiornamento .
Le funzioni mysql_* non fanno più parte di PHP dalla versione 7. Stai usando una versione del linguaggio non più supportata da 2 anni e obsoleta da 4.
Forse è il caso di valutare un aggiornamento .
I suggerimenti che do più spesso:
- Le funzioni mysql_* non fanno più parte di PHP. Usa PDO o MySQLi.
- Il supporto a PHP 5.x è cessato l'1 gennaio 2019, e con esso le funzioni mysql_*. Che ti piaccia o no.
- Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
- Indenta correttamente il codice e usa nomi significativi per gli identificatori.
Allora sembra che visualizzo qualcosa, Birthday non e' compilato, solo died a 2020-08-01
il conteggio dei giorni partendo da start 2020-08-31 sembra corretto
non capisco questo dato, 40 years In the Business , da dove e' uscito?
QUERY
Codice PHP:
$query = "SELECT
film_actor.actor_id as actor_id,
actor.birthday as birthday,
actor.died as died,
film_actor.film_id as film_id,
film_actor.credited as credited,
film_actor.genre as genre,
film.film_id as film_ID,
film.movie_title as movie_title,
film.formats as formats,
film.studio as studio,
film.year as film_year,
film.also_known as also_known,
film.incollection as incollection,
film.cover_front as cover_front,
film.release_data as release_data,
film.last_update as last_update,
film.distributor as distributor
FROM film_actor
INNER JOIN film ON film_actor.film_id = film.film_id
INNER JOIN actor ON film_actor.actor_id = actor.actor_id
WHERE film_actor.actor_id = " . $actor_id;
$result = mysql_query( $query );
if (!$result)
die("mySQL error: ". mysql_error());
while( $row = mysql_fetch_object( $result ) ) : ?>
Codice corretto
Codice PHP:
<?php
//Codice PHP:
$timezone = timezone_open('UTC');
$now = date_create("now",$timezone);
$ora = $now->format('Y-m-d H:i:s');
$today = date_create('today',$timezone);
$oggi = $today->format('Y-m-d H:i:s');
$start = (strlen($row->start) < 5) ? $row->start .'-01-01 00:00:00' : $row->start;
$end = (!empty($row->end) ? ((strlen($row->end) < 5) ? $row->end .'-01-01 00:00:00' : $row->end) : $ora);
//Quando il file verrà incluso o richiesto le variabili diverranno globali al script in uso.
?>
<?php
if(isset($row->died) && ($row->died .'-01-01 00:00:00') == $end) {
echo 'fine carriera';
} elseif($ora == $end) {
echo 'carriera in corso';
} else {
echo 'abbandono carriera';
}
if(isset($row->release_data) || isset($row->year)) {
//differenza film dall'inizio carriera di un'attore
$release_data = isset($row->release_data) ? $row->release_data .' 00:00:00' : $row->year .'-01-01 00:00:00';
$diff_film = date_create($release_data, $timezone)->diff(date_create($start, $timezone));
$testo = 'In The Business';
$year_film = $diff_film->y;
$mese_film = $diff_film->m;
$giorni_film = $diff_film->d;
if($year_film) {
echo '<font color="blue">' . $year_film . '</font>' . ' years ' . $testo ;
} elseif($mese_film == 0 && $giorni_film == 0) {
echo 'anno corrente';
} elseif($mese_film) {
echo '<font color="red">' . $mese_film . '</font>' . ' months ' ;
if($giorni_film) {
echo '<font color="green">' . $giorni_film . '</font>' . ' days ';
}
echo $testo;
} else {
echo '<font color="green">' . $giorni_film . '</font>' . ' days ' . $testo;
}
}
if(isset($release_data) && substr($oggi, 0, 4) == substr($release_data, 0, 4)) {
//differenza anno corrente film
$diff_current_year = date_create($release_data, $timezone)->diff(date_create($oggi, $timezone));
$testo = 'In The Business';
$year_current = $diff_current_year->y;
$mese_current = $diff_current_year->m;
$giorni_current = $diff_current_year->d;
if($year_current) {
echo '<font color="blue">' . $year_current . '</font>' . ' years ' . $testo ;
} elseif($mese_current == 0 && $giorni_current == 0) {
echo 'anno corrente';
} elseif($mese_current) {
echo '<font color="red">' . $mese_current . '</font>' . ' months ' ;
if($giorni_current) {
echo '<font color="green">' . $giorni_current . '</font>' . ' days ';
}
echo $testo;
} else {
echo '<font color="green">' . $giorni_current . '</font>' . ' days ' . $testo;
}
}
?>
Ultima modifica di blackskyisback : 03-09-2020 alle ore 15.04.42
Se è defunto può solo apparire fine carriera che significa che $row['end'] ha il valore della data del defunto (se non ha terminato in vita la sua carriera).
Si chiama dead text la colonna del detunto?
Per favore rispondi alle domande.
Dal 1980-06-21 a 2020-09-03 la differenza è 40 anni.
Perché stai cambiando in oggetto? Non farlo piuttosto esponi l'errore e il codice lo cambio solo io.
Ultima modifica di darbula : 03-09-2020 alle ore 15.15.52
in realta' non lo avevo inserito quando hai preparato il codice ma e' presente nel database
ecco i campi
birthday date <---data di nascita
died text <---data di morte
start varchar(10) <----anno inizio carriera, esempio 1990
end varchar(10) <----fine inizio carriera, esempio 2020
quindi end non e' data di morte
died ovviamente dovrà solo essere un array $row['died'] e non $row->died. Cioè senza alcuna modifica di tale codice http://forum.it.altervista.org/php-m...ml#post1454813
Praticamente devi rifare tutto daccapo ogni tuo codice è confuso, $row['end'] inizialmente se l'attore ha terminato la carriera in vita va definita con tale data altrimenti se non ha terminato in vita senz'altro ha terminato con la data del decesso altrimenti per tua comodità posso applicare la modifica via php quando creo la variabile $end ma il concetto purtroppo rimane quello.
Ultima modifica di darbula : 03-09-2020 alle ore 15.43.38
Parse error: syntax error, unexpected ')', expecting ']' in E:\OpenServer\domains\localhost\cinema\members\cin ema.php on line 1717
Codice PHP:
$end = (!empty($row['died']) ? ((strlen($row['died']) < 5) ? $row['died'] .'-01-01 00:00:00' : $row['died') : $ora);
Sostituisci la parentesi di chiusura tonda con la parentesi di chiusura quadra ]
Codice aggiornato.
$row['dead'] dovrà essere con yyyy-mm-dd trasformato in una sequenza temporale operazione che effettuo nel mio codice.Codice PHP:
$timezone = timezone_open('UTC');
$now = date_create("now",$timezone);
$ora = $now->format('Y-m-d H:i:s');
$today = date_create('today',$timezone);
$oggi = $today->format('Y-m-d H:i:s');
$start = (strlen($row['start']) < 5) ? $row['start'].'-01-01 00:00:00' : $row['start'];
$end = (!empty($row['end']) ? ((strlen($row['end']) < 5) ? $row['end'].'-01-01 00:00:00' : $row['end']) : ((isset($row['dead'])) ?$row['dead'].' 00:00:00' : $ora));
if(isset($row['dead']) && ($row['dead'].' 00:00:00') == $end) {
echo 'fine carriera';
} elseif($ora == $end) {
echo 'carriera in corso';
} else {
echo 'abbandono carriera';
}
//recupero ultimo valore di $row['release_data'] o $row['year'], significa se sei nel loop dovrai inserire l'intero codice all'ultima iterazione o dopo che avrà finito tutte le iterazioni.
if(isset($row['release_data']) || isset($row['year'])) {
//differenza film dall'inizio carriera di un'attore
$release_data = isset($row['release_data']) ? $row['release_data'].' 00:00:00' : $row['year'].'-01-01 00:00:00';
$diff_film = date_create($release_data, $timezone)->diff(date_create($start, $timezone));
$testo = 'In The Business';
$year_film = $diff_film->y;
$mese_film = $diff_film->m;
$giorni_film = $diff_film->d;
if($year_film) {
echo '<font color="blue">' . $year_film . '</font>' . ' years ' . $testo ;
} elseif($mese_film == 0 && $giorni_film == 0) {
echo 'anno corrente';
} elseif($mese_film) {
echo '<font color="red">' . $mese_film . '</font>' . ' months ' ;
if($giorni_film) {
echo '<font color="green">' . $giorni_film . '</font>' . ' days ';
}
echo $testo;
} else {
echo '<font color="green">' . $giorni_film . '</font>' . ' days ' . $testo;
}
}
if(isset($release_data) && substr($oggi, 0, 4) == substr($release_data, 0, 4)) {
//differenza anno corrente film
$diff_current_year = date_create($release_data, $timezone)->diff(date_create($oggi, $timezone));
$testo = 'In The Business';
$year_current = $diff_current_year->y;
$mese_current = $diff_current_year->m;
$giorni_current = $diff_current_year->d;
if($year_current) {
echo '<font color="blue">' . $year_current . '</font>' . ' years ' . $testo ;
} elseif($mese_current == 0 && $giorni_current == 0) {
echo 'anno corrente';
} elseif($mese_current) {
echo '<font color="red">' . $mese_current . '</font>' . ' months ' ;
if($giorni_current) {
echo '<font color="green">' . $giorni_current . '</font>' . ' days ';
}
echo $testo;
} else {
echo '<font color="green">' . $giorni_current . '</font>' . ' days ' . $testo;
}
}
Ultima modifica di darbula : 03-09-2020 alle ore 17.56.24
In realtà, non è la parenstesi rotonda che è al poasto di quella chiusa di $row['died'], maè quella quadra di ciusura che manca.
Cordiali saluti.Codice PHP:
$end = (!empty($row['died']) ? ((strlen($row['died']) < 5) ? $row['died'] .'-01-01 00:00:00' : $row['died']) : $ora);
Va beh però nel mio codice originale non esiste problema di sintassi, solitamente prima testo e poi rendo pubblico il codice.
Grazie di cuore comunque :)
o aggionato con l'ultimo e c'e' sempre il problema che conosciamo se non cambio
da cosi
$row['start']
a cosi
$row->start
Fatal error: Cannot use object of type stdClass as array in E:\OpenServer\domains\localhost\cinema\members\cin ema.php on line 1714
Inserisci var_dump($row['start']); una riga prima del mio codice altrimenti non capisco.
Vieni in privato altrimenti si riempie il forum pieno di commenti non necessari, poi torniamo qui in pubblico.
Problema individuato https://www.php.net/manual/en/functi...tch-object.php questa funzione restituisce un'oggetto quindi modificare da array in oggetto per $row se oggetto.
Codice da eseguire insieme la prima parte ma ho scelto di mostrarlo separatamente (ove spero sia più chiaro)Codice PHP:
$timezone = timezone_open('UTC');
$now = date_create("now",$timezone);
$ora = $now->format('Y-m-d H:i:s');
$today = date_create('today',$timezone);
$oggi = $today->format('Y-m-d H:i:s');
$start = ((strlen(($row->start)) < 5) ? ($row->start).'-01-01 00:00:00' : ($row->start));
$end = (isset($row->end) ? ((strlen(($row->end)) < 5) ? ($row->end).'-01-01 00:00:00' : ($row->end)) : (isset($row->died) ? ($row->died).' 00:00:00' : $ora));
if(isset($row->died) && (($row->died).' 00:00:00') == $end) {
echo 'fine carriera';
} elseif($ora == $end) {
echo 'carriera in corso';
} else {
echo 'abbandono carriera';
}
//recupero ultimo valore di ($row->release_data) o ($row->year), significa se sei nel loop dovrai inserire l'intero codice all'ultima iterazione o dopo che avrà finito tutte le iterazioni.
if(isset($row->release_data) || isset($row->year)) {
//differenza film dall'inizio carriera di un'attore
$release_data = isset($row->release_data) ? ($row->release_data).' 00:00:00' : ($row->year).'-01-01 00:00:00';
$diff_film = date_create($release_data, $timezone)->diff(date_create($start, $timezone));
$testo = 'Testo1';
$year_film = $diff_film->y;
$mese_film = $diff_film->m;
$giorni_film = $diff_film->d;
if($year_film) {
echo '<font color="blue">' . $year_film . '</font>' . ' years ' . $testo ;
} elseif($mese_film == 0 && $giorni_film == 0) {
echo 'anno corrente';
} elseif($mese_film) {
echo '<font color="red">' . $mese_film . '</font>' . ' months ' ;
if($giorni_film) {
echo '<font color="green">' . $giorni_film . '</font>' . ' days ';
}
echo $testo;
} else {
echo '<font color="green">' . $giorni_film . '</font>' . ' days ' . $testo;
}
}
if(isset($release_data) && substr($oggi, 0, 4) == substr($release_data, 0, 4)) {
//differenza anno corrente film
$diff_current_year = date_create($release_data, $timezone)->diff(date_create($oggi, $timezone));
$testo = 'Testo2';
$year_current = $diff_current_year->y;
$mese_current = $diff_current_year->m;
$giorni_current = $diff_current_year->d;
if($year_current) {
echo '<font color="blue">' . $year_current . '</font>' . ' years ' . $testo ;
} elseif($mese_current == 0 && $giorni_current == 0) {
echo 'anno corrente';
} elseif($mese_current) {
echo '<font color="red">' . $mese_current . '</font>' . ' months ' ;
if($giorni_current) {
echo '<font color="green">' . $giorni_current . '</font>' . ' days ';
}
echo $testo;
} else {
echo '<font color="green">' . $giorni_current . '</font>' . ' days ' . $testo;
}
}
Codice PHP:
if(($compleanno = isset($row->birthday) ? $row->birthday : null) {
$diff_birthday = date_create($compleanno, $timezone)->diff(date_create($ora, $timezone));
$testo = 'Testo3';
$year_birthday = $diff_birthday->y;
$mese_birthday = $diff_birthday->m;
$giorni_birthday = $diff_birthday->d;
if($year_birthday) {
echo '<font color="blue">' . $year_birthday . '</font>' . ' years ' . $testo ;
} elseif($mese_birthday == 0 && $giorni_birthday == 0) {
echo 'anno corrente';
} elseif($mese_birthday) {
echo '<font color="red">' . $mese_birthday . '</font>' . ' months ' ;
if($giorni_birthday) {
echo '<font color="green">' . $giorni_birthday . '</font>' . ' days ';
}
echo $testo;
} else {
echo '<font color="green">' . $giorni_birthday . '</font>' . ' days ' . $testo;
}
}
Ultima modifica di darbula : 04-09-2020 alle ore 00.24.53 Motivo: $row oggetto, fix isset, fix campo died, aggiunto $iniziale, tolto empty e cambiato la stringa testo
Fatal error: Cannot use object of type stdClass as array in E:\OpenServer\domains\localhost\cinema\members\cin ema.php on line 1721Stai leggendo la riga come oggetto, quindi non puoi usarlo come vettore.Codice PHP:
$row = mysql_fetch_object( $result )
È un peccato perché ti stai precludendo tutte le funzionalità interessanti delle versioni più recenti di PHP.dovrei rifare tutto da capo, non ho certa questa voglia, il codice e' perfettamente funzionante adesso e non lo devo distribuire a nessuno
I suggerimenti che do più spesso:
- Le funzioni mysql_* non fanno più parte di PHP. Usa PDO o MySQLi.
- Il supporto a PHP 5.x è cessato l'1 gennaio 2019, e con esso le funzioni mysql_*. Che ti piaccia o no.
- Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
- Indenta correttamente il codice e usa nomi significativi per gli identificatori.
sempre errore,
ah il campo e' died non dead
errore
Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in E:\OpenServer\domains\localhost\cinema\members\cin ema.php on line 1719
linea 1719
Codice PHP:
$end = (!empty($row->end) ? ((strlen(($row->end)) < 5) ? ($row->end).'-01-01 00:00:00' : ($row->end)) : ((isset(($row->died))) ?($row->died).' 00:00:00' : $ora));
Si lamenta del modo in cui è usato isset. Probabilmente conviene usare empty e togliere le parentesi inutili:
Codice PHP:
$end = !empty($row->end)
? (strlen($row->end) < 5 ? $row->end . '-01-01 00:00:00' : $row->end)
: (!empty($row->died) ? $row->died . ' 00:00:00' : $ora);
Ultima modifica di mzanella : 03-09-2020 alle ore 17.54.43
I suggerimenti che do più spesso:
- Le funzioni mysql_* non fanno più parte di PHP. Usa PDO o MySQLi.
- Il supporto a PHP 5.x è cessato l'1 gennaio 2019, e con esso le funzioni mysql_*. Che ti piaccia o no.
- Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
- Indenta correttamente il codice e usa nomi significativi per gli identificatori.
Parse error: syntax error, unexpected 'if' (T_IF) in E:\OpenServer\domains\localhost\cinema\members\cin ema.php on line 1722
CODICE
Codice PHP:
$timezone = timezone_open('UTC');
$now = date_create("now",$timezone);
$ora = $now->format('Y-m-d H:i:s');
$today = date_create('today',$timezone);
$oggi = $today->format('Y-m-d H:i:s');
$start = ((strlen(($row->start)) < 5) ? ($row->start).'-01-01 00:00:00' : ($row->start));
$end = (!empty($row->end) ? ((strlen(($row->end)) < 5) ? ($row->end).'-01-01 00:00:00' : ($row->end)) : ((isset(($row->died))) ?($row->died).' 00:00:00' : $ora));
if(isset(($row->died)) && (($row->died).' 00:00:00') == $end) {
echo 'fine carriera';
} elseif($ora == $end) {
echo 'carriera in corso';
} else {
echo 'abbandono carriera';
}
c'è un else if attacato in questo punto:
Cordiali saluti.Codice PHP:
} else if($ora == $end) {
Prova questo http://forum.it.altervista.org/php-m...ml#post1455014 in php elseif si scrive solamente attaccato.
Ci sono dei progressi siamo vicini alla soluzione
birthday: 1970-01-01
died: 2020-08-01
start: 2020
release_data (film) 2020-08-31
risultato
carriera in corso :7 months 30 days
In The Business 3 days In The Business carriera in corso39 years In The Business
il problema che e' morto e poi perche' e ripetuto carriera in corso e In The Business?
darbula nell'ultimo codice che hai modificato c'e' un piccolo errore nella variabile all'inizio
questa
timezone = timezone_open('UTC');
cambiata
$timezone = timezone_open('UTC');
Mancava il punto e virgola
Ad ogni modo, elseif e else if sono quasi la stessa cosa: https://www.php.net/manual/en/contro...res.elseif.php. In questo contesto vanno bene entrambi.Codice PHP:
$end = !empty($row->end)
? (strlen($row->end) < 5 ? $row->end . '-01-01 00:00:00' : $row->end)
: (!empty($row->died) ? $row->died . ' 00:00:00' : $ora);
I suggerimenti che do più spesso:
- Le funzioni mysql_* non fanno più parte di PHP. Usa PDO o MySQLi.
- Il supporto a PHP 5.x è cessato l'1 gennaio 2019, e con esso le funzioni mysql_*. Che ti piaccia o no.
- Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
- Indenta correttamente il codice e usa nomi significativi per gli identificatori.
Ho modificato in died ricopiare il codice.
Da $row->start 2020-01-01 a $end 2020-08-01 ($end avrà il valore data $row->end se ha smesso in vita altrimenti se mancante ed è deceduto $row->died altrimenti se non trova died è il momento stesso il now di ora è 2020-09-03) sette mesi esatti secondo la rappresentazione umana ma php potrebbe mostrare qualcosa come 6 mesi e 30 giorni .. ovviamente solo timezone UTC altrimenti le date sballano.
Il primo In the Business si riferisce a differenza carriera di un'attore mentre il secondo a anno corrente dalla data di rilascio a questo momento.
Ultima modifica di darbula : 03-09-2020 alle ore 18.32.02
ok, sembra che ci siamo
visualizzo questo
fine carriera7 months 30 days In The Business3 days In The Business fine carriera39 years In The Business
39 years In The Business com'e' calcolato questo? contraddice con il primo 3 days In The Business
Ultima modifica di blackskyisback : 03-09-2020 alle ore 18.37.45
C'è qualcosa che non va la carriera è 7 mesi o 6 mesi 30 giorni.
Stai usando datetime per il calcolo birthday? Comunque sarebbe da effettuare il calcolo da birthday a died è morto a x anni.
Io penso usi date che funziona da 1970-01-01 e non per date precedenti in realtà questo bug fù risolto alla versione php 5.1 non capisco perché ancora accada con Windows e versione php 5.6 che tu stai usando.
Con queste date
birthday: 1970-01-01
died: 2020-08-01
start: 2020
release_data (film) 2020-08-31
Carriera da start 2020-01-01 a died 2020-08-01 solo 7 mesi 0 6 mesi e 30 giorni.
Differenza se anno corrente da release_data 2020-08-31 a 2020-09-03 3 giorni.
Anni attore da birthday 1970-01-01 a died 2020-08-01 50 anni.
Ultima modifica di darbula : 04-09-2020 alle ore 00.59.07
Apri phpmyadmin il campo birthday di quell'attore è realmente 1970-01-01 o diverso?
In php dopo aver cliccato sul nome del database nel riquadro sql puoi inserire la select con la clausola where id di quell'attore. Penso questo riesci a farlo da solo.
si,e' 1970-01-01, posso cambiare la data di nascita se necessita, tanto e' solo per test