Inserimento dati a cascata

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
attivato $set['log'] = true;

quando inserisco un dato da select (che non visualizzo) si resetta l'altro
il messaggio visualizza
Congratulazioni, Alex é stato modificato nel database.

dovrei visualizzare altro?
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
postato dove sai

prima ho inserito career_status e poi salvato, reinserito dopo la ricerca eye_color

risultato come ho scritto sopra
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ho sistemato i file, trovi un "include" in più, nel caso lo dovessi modificare intervieni solo su di lui
 

Allegati

  • cineteca.zip
    14,1 KB · Visite: 174

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
buongiorno marino51 :)

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 :p

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

tabelle
mio database con relazioni

actor
actor_id
nome


film_actor // collega film_actor
actor_id
film_id


film
film_id
movie_title


fammi sapere
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
per la paginazione ci viene in aiuto Boostrap


con Search

 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
o forse non e' necessaria la paginazione, basta solo validare i campi quando si fa' la ricerca con un warning di inserire almeno un dato :rolleyes:
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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

perché é necessaria la paginazione ?

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
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
 

Alex_70

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


query testate su phpmyadmin
 
Ultima modifica:

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
adesso che ci penso rimane un problema, nel caso il film e' collegato con molti attori?

allora si dovrebbe eseguire una ricerca e valutare se eliminare i collegamenti film actor
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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";


PHP:
    <center><span class='infoblock-pagetype'>
      <input type='submit' name='submit' value='cerca' />
      <span style='padding-left: 30px;'></span>
      <input type='submit' name='submit' value='collegati' />    <!-- aggiungi questa riga -->
      <span style='padding-left: 30px;'></span>                  <!-- aggiungi questa riga -->
      <input type='submit' name='submit' value='rinuncia' />
    </span></center>
  </form>
  <br />
  <div class='col-sm-10 col-sm-offset-2'><h2><?= $message; ?></h2></div>
</div>
</body>
</html>
<?php
}

/* ---------------------------------------------------------------- */

function displayFilmList()

ti ho lasciato i riferimenti per non sbagliare l'inserimento
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
fatto, 4 righe di codice aggiunto

test

selezionando su collegati vengono visualizzati i film dell'attore
 
Ultima modifica:

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
Ciao marino51
lo script mi sembra uguale a quello precedente :rolleyes:, cosa e' cambiato?
edit:
non e' uguale, quello era actor/film
questo e' film/actor

hai integrato per caso il delete?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
hai integrato per caso il delete?
no, il rischio é di cancellare l'intero set "film/attore" o "attore/film"
in realtà la query é pronta
SQL:
        case "conferma elim":
            $sql = "DELETE FROM actor"
                 . " WHERE actor_id='" . $row['actor_id']. "'";

//            $sql = "DELETE actor FROM actor"
//                 . " INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id"
//                 . " WHERE actor.actor_id='" . $row['actor_id']. "'";
            $x = "eliminato";
            break;
ma, dopo la prova, l'ho lasciata commentata
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
no, il rischio é di cancellare l'intero set "film/attore" o "attore/film"
in realtà la query é pronta
SQL:
        case "conferma elim":
            $sql = "DELETE FROM actor"
                 . " WHERE actor_id='" . $row['actor_id']. "'";

//            $sql = "DELETE actor FROM actor"
//                 . " INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id"
//                 . " WHERE actor.actor_id='" . $row['actor_id']. "'";
            $x = "eliminato";
            break;
ma, dopo la prova, l'ho lasciata commentata

buongiorno marino51,

quindi non si puo' eliminare il film o l'attore?
che prova hai fatto?
:rolleyes:
perche' su phpmyadmin il delete e' riuscito perfettamente
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
perche' su phpmyadmin il delete e' riuscito perfettamente
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_70

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




case delete attori

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

se la risposta é positiva, puoi inserire la query commentata (eliminando quella operativa ora)

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

Grazie marino51
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
cinetecaAttori.php

nella function validaForm(), bisogna disabilitare il controllo,

facendo riferimento all' if più esterno, va cambiato il blocchetto in questo modo

PHP:
    if( in_array( $set['azione'],
                  array("elimina") ) )
    {
        $x = aggiornaDB("conta_colleg");

        if( !empty($x) )
        {
            $message = "ATTENZIONE : esistono ".$x." film collegati all&acute; attore, valuta se proseguire";
            return;
        }
    }


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

PHP:
    if( in_array( $set['azione'],
                  array("elimina") ) )
    {
        $x = aggiornaDB("conta_colleg");

        if( !empty($x) )
        {
            $message = "ATTENZIONE : esistono ".$x." attori collegati al film, valuta se proseguire";
            return;
        }
    }


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;
 

Alex_70

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

sshot-1.png


seleziono il film


sshot-2.png


clicco su Elimina ma non visualizzo la conferma di eliminazione, si puo' integrare questo codice?

sshot-3.png

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)
 
Discussioni simili
Autore Titolo Forum Risposte Data
L inserimento form dati multipli ? PHP 0
J Form inserimento dati in database Ajax 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
T Da xsd a xml ed inserimento dati in excel XML 0
S [PHP] email con inserimento dati nel database PHP 23
G [Javascript] Errore inserimento dati Backend Node.js e workbench Javascript 1
B [PHP] Creare PDF dopo inserimento dati form PHP 4
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
E Inserimento dati da PHP in tabella MySQL PHP 5
E Form inserimento dati con JavaScript Javascript 0
K [PHP] Inserimento dati database con postgres PHP 2
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
M Inserimento dati checkbox multipli in db da ajax a php PHP 1
M [PHP] errore in semplie form inserimento dati PHP 7
S [PHP] Inserimento dati su tabelle collegate 1-m PHP 17
M [PHP] controllo inserimento dati un un form PHP 4
cris8380 [PHP] Generare file pdf con inserimento dati PHP 34
cris8380 Inserimento dei dati automatici mediante numero di tessera. PHP 21
G mysql - problemi inserimento dati nel database, consigli. MySQL 3
J Inserimento dati in db da due o più form PHP 0
P problemi inserimento dati PHP 1
S Trigger con inserimento dati preesistenti MySQL 0
G Estrazioni dati dal database e inserimento nella pagina html Database 11
A Aiuto form inserimento dati PHP 3
T Problema inserimento dati in phpmyadmin PHP 2
P scritta di avviso inserimento dati corretti che non vuole scendere verso il basso PHP 4
D Verifica inserimento dati form PHP 12
M Problema inserimento dati in sqlite Sviluppo app per Android 1
L Cerco lavoro retribuito,mi offro come articolista,inserimento dati,promozione siti,blog,forum Offerte e Richieste di Lavoro e/o Collaborazione 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
otto9due Piccolo problemino su inserimento dati db da form PHP 5
M chiusura colorbox dopo inserimento dati in un database tramite form PHP 0
S Inserimento dati in colonna mysql PHP 10
N Inserimento dati in db che avviene due volte PHP 1
K Controllo esistenza dati e inserimento in db ASP.NET 2
B Problema inserimento dati con apostrofo MySQL 1
M [RISOLTO] inserimento dati db PHP 22
L Inserimento dati nel database. PHP 3
M Inserimento dati in db mysql dopo aver confermato e-mail PHP 7
D tabelle e inserimento dati nel database PHP 2
P Inserimento in tabella da select + altri dati MySQL 2
G Arresto dello script per inserimento dati. PHP 4
P Problemi inserimento dati con checkbox multiplo PHP 17
P Problemi inserimento dati database tramite form PHP 12
P Controllo inserimento dati Javascript 6
Z Aiuto! problemi di inserimento dati da form PHP 9
lab php e html - inserimento di dati in database e aggiornamento della pagina html PHP 2
EffeElle Php problema su inserimento dati mysql PHP 47
V (cerco retribuito lavoro) - inserimento dati/data entry lavoro a cottimo Offerte e Richieste di Lavoro e/o Collaborazione 0
zerobit Velocizzare inserimento dati nel DB MySQL 2

Discussioni simili