quando inserisco un dato da select (che non visualizzo) si resetta l'altro
il messaggio visualizza Congratulazioni, Alex é stato modificato nel database.
sto testando il tutto, sembra che il tutto FUNZIONA perfettamente (finalmente )
hai fatto un ottimo lavoro, grazie, sei veramente una brava persona, oltre che un ottimo programmatore
ci sarebbero pero' delle piccole cose d'aggiustare, vedi tu' se vale la pena
1)
quando si effettua la ricerca su attori e film lasciando tutti i campi vuoti il risultato mi restituisce tutti i record,
questo metodo va bene se ci sono pochi inserimenti ma in caso di 1000 1.000.000 di record la pagina sicuramente andra in crash
esaurendo la memoria
come si risolve?
con la paginazione
esempio su 1000 risultati
10 record (personalizzabili) per pagina
2)
l'eliminazione di un film non e' possibile se e' collegato con attori
possibile che non esiste un metodo per cancellare un film o scollegare la relazione ? mi sembra strano
l'idea sarebbe creare una query che prima cancella/scollega il record nella tabella film_actor e poi il film nella tabella film
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
quando si effettua la ricerca su attori e film lasciando tutti i campi vuoti il risultato mi restituisce tutti i record,
questo metodo va bene se ci sono pochi inserimenti ma in caso di 1000 1.000.000 di record la pagina sicuramente andra in crash
esaurendo la memoria
come si risolve?
con la paginazione
esempio su 1000 risultati
10 record (personalizzabili) per pagina
si devono usare i filtri, sono stati messi apposta per ridurre il numero degli elemeti estratti e facilitare la scelta ottenendo un set mirato
credo che un'altra soluzione non abbia senso, perché far scorrere le pagine annoia, non é corretto eseguire due ricerche in sequenza ed ogni volta rischiare di "paginare" 100 volte per non aver usato i filtri
i filtri lavorano anche con parole incomplete, puoi cercare "l' esorcista" immettendo la l seguita dall'apice ed il film viene selezionato
per me non é un problema di programmazione ma logico,
ritieni sia giusto eliminare il film con tutti i legami agli attori, pensaci ancora un attimo e lo facciamo
1) lo escludiamo, penso che in fondo non vale la pena, in fondo la ricerca serve per questo
2) eliminazione film, questo e' necessario,
per testare gli script ho inserito un film/i che non esiste nella realta' (e adesso e' inutile) nel profilo Alex (inutile anche questo)
Tabella film
Test movie per Alex
movie_id 343
Tabella actor
Alex
actor_id 40
adesso in phpmyadmin eseguo questa query nella tabella film_actor (che collega actor e film)
SQL:
SELECT * FROM `film_actor` WHERE `film_id` = 343
trovato, eseguo altra query
SQL:
DELETE FROM `film_actor` WHERE `film_actor`.`actor_id` = 40 AND `film_actor`.`film_id` = 343;
collegamento film actor delete
altra query e trovo il film da tabella film
SQL:
SELECT * FROM `film` WHERE `film_id` = 343
delete film
SQL:
DELETE FROM `film` WHERE `film`.`film_id` = 343;
fatto, film cancellato
quindi il codice sarebbe strutturato cosi
1) delete collegamento da film_actor
2) conferma delete o rinuncia
3) dopo la scelta delete
4) message collegamento cancellato
5) message se voglio cancellare anche il film
6) conferma delete o rinuncia
7) message film cancellato dal dtabase
fine
anche per gli attori penso vale la stessa logica, Alex e' inutile e' dovrebbe essere cancellato dopo aver rimosso i collegamenti
intanto con queste 4 righe di codice, puoi limitare la lista dei film selezionando solo quelli collegati
PHP:
function leggiPost()
{
global $conn, $set, $actor, $film;
$set['azione'] = trim(htmlspecialchars($_POST['myForm']));
$set['bottone'] = trim(htmlspecialchars($_POST['submit'])); // aggiungi questa riga
PHP:
if ($film['release_data']) { $sql.= " AND release_data LIKE '%" . $film['release_data']."%'"; }
if ($set['bottone'] == "collegati") { $sql = "SELECT * FROM (".$sql.") t WHERE collegato='c'"; } // aggiungi questa riga
$sql.= " ORDER BY collegato, movie_title, distributor, year";
la query commentata che ti ho postato, funziona bene,
ne faccio solo un discorso di sicurezza, esempio,
se elimino un attore che ha 50 film collegati,
perdo anche i 50 collegamenti,
va bene ?
se la risposta é positiva, puoi inserire la query commentata (eliminando quella operativa ora)
per i film, la query é la stessa modificando attori in film
la query commentata che ti ho postato, funziona bene,
ne faccio solo un discorso di sicurezza, esempio,
se elimino un attore che ha 50 film collegati,
perdo anche i 50 collegamenti,
va bene ?
se la risposta é positiva, puoi inserire la query commentata (eliminando quella operativa ora)
per i film, la query é la stessa modificando attori in film
Alex ha 2 film collegati
i 2 film collegati hanno come attori Alex e Gigi
se elimino Alex rimane Gigi con i 2 film collegati
case delete film
Film 1 e collegato con Alex e Gigi
Alex e Gigi sono collegati anche con Film 2 e Film 3
eliminando Film 3 Alex e Gigi sono collegati con Film 1 e Film 2
in pratica prima di cancellare si verificano i dati e poi si effettua il tutto
nel mio codice non ci sono query commentate, a quale script ti riferisci dei tre?
mi potresi gentilmente postare il codice delle 2 query (film e actor) per delete film e actor
con relativo warning prima di cancellare
se possibile anche i riferimenti dove inserire il codice
nella function aggiornaDB($azione = ""), facendo riferimento al case, va cambiato il blocchetto in questo modo
PHP:
case "conferma elim":
$sql = "DELETE FROM film_actor WHERE actor_id='" . $row['actor_id']. "'";
$result = $conn->query($sql);
$sql = "DELETE FROM actor WHERE actor_id='" . $row['actor_id']. "'";
$x = "eliminato";
break;
cinetecaFilm.php
nella function validaForm(), bisogna disabilitare il controllo,
facendo riferimento all' if più esterno, va cambiato il blocchetto in questo modo
nella function aggiornaDB($azione = ""), facendo riferimento al case, va cambiato il blocchetto in questo modo
PHP:
case "conferma elim":
$sql = "DELETE FROM film_actor WHERE film_id='" . $row['film_id']. "'";
$result = $conn->query($sql);
$sql = "DELETE FROM film WHERE film_id='" . $row['film_id']. "'";
$x = "eliminato";
break;
perfetto, funziona perfettamente grande lavoro marino51, grazie tante
un piccolo appunto, in cinetecaCollega.php
dopo collegati e la visualizzazione di tutti i film collegati all'attore
seleziono il film
clicco su Elimina ma non visualizzo la conferma di eliminazione, si puo' integrare questo codice?
inoltre dopo eliminazione aggiungerei anche il collegamento con cinetecaFilm.php al film eliminato in caso dopo lo scollegamento all'attore si decide di eliminare anche il film
esempio: Test movie per Alex 5 non e' piu' associato all'attore Alex nel database, vuoi eliminare anche questo film? conferma o rinuncia
in caso di conferma si passa al film e si elimina, con rinuncia si ritorna alla pagina vuota
finale, ho messo il testo colorato per evidenziare meglio le scelte, si potrebbe fare anche questo nel codice
con i warning (rosso o verde) e i bottoni (rosso verde o altro)