Aggiornare campo da un altro campo

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
Buongiorno

quello che vorrei ottenere e' molto complicato, o forse no,
il campo years_start (varchar) dovrebbe visualizzare i dati in base all'anno (year) del primo film e dell'ultimo film (se e' presente)

esempio:

lista film:

sshot-1.png


risultati:

years_start = 1970 - 1980 (in caso di 2 film)

oppure

years_start = 1970 (in caso di un film) o 1980 (in base a quello presente)


years_start = 1970 - 1990 se sono presenti 3 anni (Year) 1970 - 1980 - 1990 (quindi primo e ultimo)

il campo years_start si trova nella tabella actor,

year nella tabella film

actor e film sono collegati da film_actor (sicuramente qui ci vorra' un inner join per la query)


Struttura

Tabella actor

years_start varchar(250)


Tabella film

year year(4)


Tabella film_actor

actor_id

film_id


GRAZIE A TUTTI
 
Ultima modifica:

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
piccolo avanzamento, con questa query mi restituisce il while del campo year nella scheda actor,

sshot-2.png


ma non e' quello che voglio ottenere

adesso bisogna passare il valore del film 1970 e quello dell'ultimo 1990 e restituirlo nel campo years_start
cosi

years_start =
1970 - 1990


PHP:
<?php

require_once("connetti.php");

$actor_id = $_GET['id'];

$query = "SELECT
film.year  as film_year,
film.film_id as film_id,
actor.actor_id as actor_id,
actor.years_start as years_start
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 ) ) : ?>




<p class="bioheading">Year Start</p><p class="biodata">
<?php echo $row->film_year; ?><?php echo $row->years_start; ?>
</p>

<? endwhile; ?>
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
query riscritta, sicuramente da migliorare qui perche nel codice della pagina da errore

PHP:
WHERE film_actor.actor_id = " . $actor_id;

adesso ottengo il primo anno e l'ultimo :)

sshot-4.png


sshot-5.png

solo che adesso non so come inserire questi dati nel campo :rolleyes:

SQL:
(SELECT
year
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 = 40
ORDER BY year ASC
LIMIT 1)

UNION ALL

(SELECT
year
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 = 40
ORDER BY year DESC
LIMIT 1)
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
un lampo di genio mi ha illuminato, ho usato gli alias, :p questa funziona ma ci sono degli aggiustamenti da fare


1)
se l'anno e' sempre uguale mi restituisce per esempio
2019
2019

dovrebbe escludere dal codice l'ultimo

2)

vorrei visualizzare il risultato invece di cosi

sshot-6.png

in questo modo allineato

1960 - 1990

3)

penso che il campo nel database aggiuntivo che ho creato non serva piu'


PHP:
<?php

require_once("connetti.php");

$actor_id = $_GET['id'];

$query = "(SELECT
year as year_asc
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
ORDER BY year ASC
LIMIT 1)

UNION ALL

(SELECT
year as year_desc
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
ORDER BY year DESC
LIMIT 1)";

$result = mysql_query( $query );
if (!$result)
 die("mySQL error: ". mysql_error()); 
while( $row = mysql_fetch_object( $result ) ) : ?> 




<p class="bioheading">Year Start</p><p class="biodata">
<?php echo $row->year_asc - $row->years_desc; ?>
</p>

<? endwhile; ?>
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
risolto :p


adesso nessun duplicato, cambiando UNION ALL con UNION

sshot-2.png


solo che visualizzo il trattino alla fine dopo 1990 :rolleyes: come eliminarlo?

sshot-1.png



codice completo

PHP:
require_once("connetti.php");

$actor_id = $_GET['id'];

$query = "(SELECT
MIN(year) as year_min
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
LIMIT 1)

UNION

(SELECT
MAX(year) as year_max
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
LIMIT 1)";

$result = mysql_query( $query );
if (!$result)
 die("mySQL error: ". mysql_error()); 
while( $row = mysql_fetch_object( $result ) ) : ?> 




<?php echo $row->year_min .'&nbsp;-'.  $row->year_max; ?>


<? endwhile; ?>
 

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
18
Vicenza
solo che visualizzo il trattino alla fine dopo 1990 :rolleyes: come eliminarlo?
se c'è il trattino anche dopo il secondo anno mi sa che significa che invece di prendere una volta year_min e year_max, dato che c'è un while prende due volte year_min...
puoi mettere una foto di cosa succede eseguendo la query che hai messo su phpmyadmin?
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
Ciao Tommy :)

questo e' il risultato della query eseguita su phpmyadmin

sshot-1.png

la lista dei film di id 40

sshot-2.png
 

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
18
Vicenza
ok allora prova a cambiare da cosi
PHP:
require_once("connetti.php");

$actor_id = $_GET['id'];

$query = "(SELECT
MIN(year) as year_min
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
LIMIT 1)

UNION

(SELECT
MAX(year) as year_max
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
LIMIT 1)";

$result = mysql_query( $query );
if (!$result)
 die("mySQL error: ". mysql_error()); 
while( $row = mysql_fetch_object( $result ) ) : ?> 




<?php echo $row->year_min .'&nbsp;-'.  $row->year_max; ?>


<? endwhile; ?>
A cosi
PHP:
require_once("connetti.php");

$actor_id = $_GET['id'];

$query = "SELECT
MIN(year) as year_min, MAX(year) as year_max
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
LIMIT 1";

$result = mysql_query( $query );
if (!$result)
 die("mySQL error: ". mysql_error()); 
while( $row = mysql_fetch_object( $result ) ) : ?> 




<?php echo $row->year_min .'&nbsp;-'.  $row->year_max; ?>


<? endwhile; ?>
 
  • Like
Reactions: Alex_70

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
funziona eliminando il trattino alla fine pero' nel caso di film con l'anno unico restituisce il duplicato

cosi

2019 -2019

e non va bene, dovrebbe essere cosi

2019 -
 

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
18
Vicenza
Questo:
PHP:
<?php echo $row->year_min .'&nbsp;-'.  $row->year_max; ?>
Prova a cambiarlo cosi
PHP:
<?php
if($row->year_min != $row->year_max){
echo $row->year_min .'&nbsp;-'.  $row->year_max;
}else{
echo $row->year_min;
}
?>
 
  • Like
Reactions: Alex_70

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
errore

Parse error: syntax error, unexpected end of file in E:\OpenServer\domains\localhost\cinema\members\year_start.php on line 50

line 50 e dopo la fine del php block
?>
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
sorry, ho sbagliato io, non ho inserito endwhile alla fine :D

cosi funziona,

ho dovuto inserire il codice in alto perche' se lo inserisco in un altro punto azzera le altre informazioni, molto strano

Grazie Tommy ;)

PHP:
require_once("connetti.php");

$actor_id = $_GET['id'];

$query = "SELECT
MIN(year) as year_min, MAX(year) as year_max
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
LIMIT 1";

$result = mysql_query( $query );
if (!$result)
die("mySQL error: ". mysql_error());
while( $row = mysql_fetch_object( $result ) ) : ?>






<?php
if($row->year_min != $row->year_max){
echo $row->year_min .'&nbsp;-'.  $row->year_max;
}else{
echo $row->year_min;
}
?>

<? endwhile; ?>
 
Ultima modifica:

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
Tommy ciao, si puo' visualizzare un warning in caso i campi sono vuoti?

PHP:
<?php
if($row->year_min != $row->year_max){
echo '<font color="red">' . $row->year_min . '</font>'.  '&nbsp;-&nbsp;'. '<font color="blue">'  . $row->year_max  . '</font>' ;
}else{
echo '<font color="red">' . $row->year_min . '</font>';
}
?>

Grazie
 

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
18
Vicenza
PHP:
<?php
if($row->year_min =="" AND $row->year_max==""){
echo "Campo vuoto";
}else{
if($row->year_min != $row->year_max){
echo '<font color="red">' . $row->year_min . '</font>'. '&nbsp;-&nbsp;'. '<font color="blue">' . $row->year_max . '</font>' ;
}else{
echo '<font color="red">' . $row->year_min . '</font>';
}
}
?>
 
  • Like
Reactions: Alex_70
Discussioni simili
Autore Titolo Forum Risposte Data
M Aggiornare stesso campo in due tabelle PHP 0
D [Javascript] aggiornare numero caratteri se campo già popolato Javascript 5
K mysql aggiornare campo Database 4
S Aggiornare campo in base a timestamp meno recente fra piu tabelle PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
M Aggiornare simultaneamente i campi di due tabelle collegate con id PHP 4
L aggiornare 2 campi di una tabella insieme PHP 6
Leshabituelles Non riesco ad aggiornare PHP PHP 0
M [Javascript] Aggiornare like totali dopo click Javascript 0
S aggiornare valore di un elemento xml con php PHP 8
P [PHP] Intercettare ed aggiornare campi di un database PHP 5
C [PHP] scrivere o aggiornare record in tabella PHP 7
T Aggiornare una tabella db richiamando da file php PHP 3
Q Problema su come far aggiornare i campi su un database Mysql PHP 17
M [Javascript] [PHP] aggiornare pagina ogni ora Javascript 2
B [Javascript] Cambiare classe ed aggiornare relativi eventi Javascript 3
S Aggiornare una tabella db richiamando da file php PHP 3
S [PHP]Aggiornare pagina in maniera trasparente... PHP 3
M [PHP] Aggiornare i dati dei record selezionati PHP 3
X come aggiornare codice php? PHP 5
ste80 [PHP] cancellare/aggiornare record DB PHP 24
WebDr [ASP] Aggiornare una pagina in un div da un altro div su pagina diversa Classic ASP 3
C Aggiornare App Html5 HTML e CSS 2
S [Javascript] Aggiornare solo un DIV una sola volta con un click di un bottone Javascript 9
Metazoo Recuperare variabile php da javascript senza aggiornare pagina PHP 5
Magenta [WordPress] Dati ftp per aggiornare in locale WordPress 10
giancadeejay Aggiornare tabella db con php PHP 10
giancadeejay [PHP] Aggiornare un valore del database tramite form PHP 26
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
L [PHP] Sommare campi e aggiornare tabella PHP 14
F Aggiornare marker su mappa google con una funzione ajax richiamata al cambio di una select Ajax 2
N eseguire pagina php senza aggiornare la pagina Ajax 3
M Aggiornare Plesk e PHP su VPS Linux OVH Server Dedicati e VPS 3
P Aggiornare Tabella con form ma senza Mysql HTML e CSS 0
P Aggiornare tabella tramite form PHP 17
garimpeiro Errore di sintassi si tenta di aggiornare file in formato dbf Programmazione 2
L Script per aggiornare pagina html Javascript 2
G Aggiornare immagine caricata nel DB Classic ASP 1
Marco_88 Aggiornare elemento DOM jQuery 9
J Aggiornare 2 tabelle PHP 3
R Aggiornare WP e riuscire poi a tornare indietro. WordPress 24
I come aggiornare il codice jQuery 1
P aggiornare div con un clic senza reload Ajax 2
M Aggiornare grafico con i dati inseriti in tabella PHP 0
A aggiornare pagina1 da link di pag2 Javascript 1
M Aggiornare valori in mysql (classifica) PHP 8
K Aggiornare solo una parte di Layout Sviluppo app per Android 0
G Aggiornare colonna tabella automaticamente in MysQl PHP 2
C Aggiornare casella di testo MS Access 0
P aggiornare div, dopo un click jQuery 1

Discussioni simili