• Home
  • Forum
  • Fare Web
  • PHP

Inserimento dati a cascata

  • Creatore Discussione Creatore Discussione Alex_70
  • Data di inizio Data di inizio 25 Apr 2020
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • …
  • 11
Succ.
Primo Prec. 4 di 11 Succ. Ultimo

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 27 Apr 2020
  • #61
marino51 comunque grazie per il tuo grande aiuto, se non vuoi continuare ti capisco, e stato tutto molto difficile (anche se tu hai scritto all'inizio che era facile), figuriamoci farlo io.

Spero che altri utenti che ne capiscano piu' di me mi aiutano a completare lo script che al momento risulta essere incompleto e non e' quello che avevo richiesto , anzi.

Cerchero' di ragionare su come costruire il nuovo codice che ricordo dovrebbe funzionare cosi

1) Inserimento film in form 1
2) dopo l'inserimento
3 passare al codice 2 per collegare film, film_actor, actor (tutto nella stessa pagina)
4) la form 2 dovrebbe mostrarmi i dati compilati precedentemente,

film_id,
movie_title

io devo inserire solo
actor,
genre
e
credited


questa e' la struttura semplificata del database

Tabella: actor
Tabella: film_actor <------------ questa e' relezionata con actor e film
Tabella: film

 
Ultima modifica: 28 Apr 2020

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 28 Apr 2020
  • #62
per favore, il codice che segue eliminalo, memorizzandolo in un file chiamato "archivioFilm.include"
aggiorna i parametri per la connessione, il file non verrà più modificato salvo per mali estremi
ed i parametri di connessione non sono all'interno del nostro script

PHP:
    $servername = "localhost";
    $username   = "exadmin";
    $password   = "expass";
    $dbname     = "xxx";
    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_errno) { $message = "ERRORE : connessione al db fallita, " . $conn->connect_error; return; }

al suo posto metti la riga che segue, che importa nello script il codice per la connessione al db

PHP:
    require_once 'archivioFilm.include';

poi prova l'allegato, ci sono i bottoni di conferma

ps, puoi disabilitare il log, modificando in "false" (senzavirgolette)
PHP:
$set['log']        = true;
 

Allegati

  • archivioFilm.zip
    archivioFilm.zip
    3 KB · Visite: 388

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 28 Apr 2020
  • #63
buongiorno marino51

dunque o fatto cosi

scaricato archivioFilm.zip

rinominato quello vecchio (per backup) e messo questo nuovo

inserito questo in archivioFilm.php

PHP:
<?php

require_once 'archivioFilm.include';  //// questo codice NEW

$set['script']     = $_SERVER['PHP_SELF'];


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

creato un file rinominaldolo in archivioFilm.include

PHP:
<?php

    $servername = "localhost";
    $username   = "exadmin";
    $password   = "expass";
    $dbname     = "xxx";
    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_errno) { $message = "ERRORE : connessione al db fallita, " . $conn->connect_error; return; }

?>

RISULTATO se inserisco ID e clicco cerca

PHP:
Fatal error: Call to a member function query() on null in E:\OSPanel\domains\localhost\cinema\archivioFilm.php on line 181

line 181

PHP:
$result = $conn->query($sql);
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 28 Apr 2020
  • #64
caspita, mi sono accorto che

PHP:
require_once 'archivioFilm.include';


e' gia presente nel file, eliminato quello inserito ma il risultato non cambia

ps: ma require_once non viene inserito all'inizio del codice?
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 28 Apr 2020
  • #65
Alex_70 ha scritto:
e' gia presente nel file, eliminato quello inserito ma il risultato non cambia
Clicca per allargare...
non capisco cosa vuoi dire,
ti ho chiesto di mettere quel codice in un file nuovo, con il nome e l'estensione indicati

ed esattamente in sostiruzione del codice rimosso, inserire la riga singola

lo scopo é di avere un codice quasi identico tra noi, perché abbiamo db diversi ed é necessario inserire tutti i tuoi parametri e togliere i miei quando ti passo lo script modificato

tutto ciò fatto sullo script già in tuo possesso, serve solo a capire se hai fatto le modifiche giuste e quindi proseguire con lo script ultimo che ti ho inviato e che si appoggia già al file esterno

Alex_70 ha scritto:
ps: ma require_once non viene inserito all'inizio del codice?
Clicca per allargare...
assolutamente no, lo si mette dove serve in funzione del codice contenuto

ps, se fai diversamente a modo tuo, rispetto a quanto suggerito, gli errori sono possibili
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 28 Apr 2020
  • #66
I parametri di connessione li ho messi nel file archivioFilm.include

quello che avevo aggiunto in piu' in archivioFilm e' questa riga, ma poi mi sono accorto che era gia' presente (quindi lo tolta)

PHP:
require_once 'archivioFilm.include';

il codice adesso e' uguale al tuo

Risolto: avevo scambiato i file in localhost
 
Ultima modifica: 28 Apr 2020

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 28 Apr 2020
  • #67
fammi sapere, mancano solo i controlli sulla presenza e congruità dei dati inseriti, ma é già predisposto
vedi allegato
 

Allegati

  • archivioFilm.zip
    archivioFilm.zip
    3,1 KB · Visite: 306

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 28 Apr 2020
  • #68
perfetto, funziona, anche per unique key

funziona anche CKEDITOR sul campo synopsis (cosa e' cambiato? )

aggiungerei una variabile (movie_title, anno) nell'echo che visualizza questo dopo inserimento/cancellazione/modifica

esempio

Congratulazioni, The Exorcist (1973) é stato aggiornato nel database

ho provato a farlo io ma sono tutte $row

passeremo alla fase 2 adesso?

ps: cosa ti ha fatto cambiare idea nel continuare? ieri avevi abbandonato

 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 28 Apr 2020
  • #69
devi sostituire interamente la "function aggiornaDB"
cancella tutta la funzione, (ti aiutano le righe di separazione, che ti consiglio di lasciare)
ed inserisci il nuovo codice in sostituzione, le modifiche sono marginali ma meglio trattare l'intero blocco
PHP:
function aggiornaDB($azione = "")
{
    global $conn, $set, $row, $message;

    if($set['log']) error_log("aggiornaDB  : ".$azione, 0);

    switch ($azione)
    {
        case "conferma ins":
            $sql = "INSERT INTO film(movie_title, also_known, year, minutes, distributor, studio, release_data, incollection, synopsis) VALUES ("
                 . "  '" . $row['movie_title']  . "'"
                 . ", '" . $row['also_known']   . "'"
                 . ", '" . $row['year']         . "'"
                 . ", '" . $row['minutes']      . "'"
                 . ", '" . $row['distributor']  . "'"
                 . ", '" . $row['studio']       . "'"
                 . ", '" . $row['release_data'] . "'"
                 . ", '" . $row['incollection'] . "'"
                 . ", '" . $row['synopsis']     . "'"
                 . "  )";
            $x = "inserito";
            break;

        case "conferma mod":
            $sql = "UPDATE film SET"
                 . "  movie_title='"   . $row['movie_title']  . "'"
                 . ", also_known='"    . $row['also_known']   . "'"
                 . ", year='"          . $row['year']         . "'"
                 . ", minutes='"       . $row['minutes']      . "'"
                 . ", distributor='"   . $row['distributor']  . "'"
                 . ", studio='"        . $row['studio']       . "'"
                 . ", release_data='"  . $row['release_data'] . "'"
                 . ", incollection='"  . $row['incollection'] . "'"
                 . ", synopsis='"      . $row['synopsis']     . "'"
                 . "  WHERE film_id='" . $row['film_id']      . "'";
            $x = "modificato";
            break;

        case "conferma elim":
            $sql = "DELETE FROM film"
                 . " WHERE film_id='" . $row['film_id']. "'";
            $x = "eliminato";
            break;

        case "cerca":
            $sql = "SELECT film_id, movie_title, also_known, year, minutes, distributor, studio, release_data, incollection, synopsis"
                 . " FROM film WHERE film_id='" . $row['film_id'] . "'";
            break;

        case "conta_id":
            $sql = "SELECT count(*) as counter FROM film WHERE film_id='" . $row['film_id'] . "'";
            break;

        case "conta_titolo":
            $sql = "SELECT count(*) as counter FROM film WHERE movie_title='" . $row['movie_title'] . "'";
            break;

        default:
            $message = "ERRORE : aggiornaDB, azione non riconosciuta";
            return;
            break;
    }
    if($set['log']) error_log("sql         : ".$sql, 0);



    $result = $conn->query($sql);
    if ( !$result ) { $message = "ERRORE : aggiornaDB, errore nella query, " . $conn->error; return; }

    if( in_array( $azione,
                  array("cerca", "conta_id", "conta_titolo") ) )
    {
        $dati = $result->fetch_assoc();  $result->free();
    }



    switch ($azione)
    {
        case "cerca":
            $row = $dati;
            break;

        case "conta_id":
        case "conta_titolo":
            return $dati['counter'];
            break;

        default:
            $message = "Congratulazioni, ".$row['movie_title']." (".$row['year'].") é stato ".$x." nel database.";
            inizializzaVariabili();
            break;
    }
}
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 28 Apr 2020
  • #70
fase 2, potresti usare questo codice per gestire gli attori, funziona uguale,
la logica é identica, cambiano solo le informazioni da trattare
ma come dici tu é sempre $row (per fare meno fatica e non perdere mai i dati, dico io)
potresti cominciare dal form, modificando blocchetto dopo blocchetto ....

poi potremmo passare alla fase 3, compito più arduo,
1) definire una logica di funzionamento
2) disegnare il form conseguente
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 28 Apr 2020
  • #71
ok, ho cambiato la funzione function aggiornaDB, tutto a posto
adesso si capisce cosa e' stato modificato/inserito/eliminato
si puo visualizzare il message in alto? sopra il titolo
per gli attori sicuramente faro' il processo inverso, ma non adesso, quando lo script e' finito (se no )
il form che collega actor film_actor film e' gia' pronto e' funzionante (manca la ricerca), solo che si deve collegare con questo
avevo pensato cosi in caso dei film, lo script inserimento passa all'altro script l'id del film, poi io scelgo gli attori da collegare
che ne pensi?
di solito in altri siti funziona cosi: sei nella scheda attore e selezioni aggiungi film
oppure
sei nella scheda film e selezioni aggiungi attore

grazie
 
Ultima modifica: 28 Apr 2020

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.445
338
83
  • 28 Apr 2020
  • #72
@Alex_70
Che bisogno hai di scrivere i post saltando una riga ogni riga? In questo modo i post diventano lunghi e meno leggibili!!
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 28 Apr 2020
  • #73
Max 1

scrivo cosi per rendere comprensibile il concetto, se non va bene posso scrivere standard
ho aggiustato il post sopra, va bene adesso?
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 28 Apr 2020
  • #74
anche l'occhio vuole la sua parte



ho messo i messaggi sopra tramite una variabile nel blocco html, non ho capito come distanziare i bottoni, sono troppo vicini
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 28 Apr 2020
  • #75
Alex_70 ha scritto:
si puo visualizzare il message in alto? sopra il titolo
Clicca per allargare...
puoi spostare la riga del messaggio, sotto riportata, dove vuoi, con il limite che sia esterna al form
ovvero NON DEVE essere un campo compreso tra <form> e </form>
PHP:
  <div class='col-sm-10 col-sm-offset-2'><h2><?= $message; ?></h2></div>

Alex_70 ha scritto:
solo che si deve collegare con questo
avevo pensato cosi in caso dei film, lo script inserimento passa all'altro script l'id del film, poi io scelgo gli attori da collegare
che ne pensi?
Clicca per allargare...
ho realizzato una cosa simile per le formule dei mangimi,
associando ad ogni formula (film) i componenti (attori) e le caratteristiche (?)
ma ti garantisco che é decisamente oneroso, perché si aggiunge la gestione di script e form diversi che é il massimo del caos

non sarebbe male fare una ricerca per attore (come hai suggerito) e agganciare il film
ma vorrei tenere limitato il numero dei film su cui operare la scelta, altrimenti si lavora di "scroll"

esempio, immagina
gli attori (formule) in una lista x confermare il prescelto



ed una equivalente lista di film (componenti) da cui scegliere quale associare



ma vorrei tenere queste liste molto corte per evitare lo "scoll" della pagina

suggerisci .....
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 28 Apr 2020
  • #76
Alex_70 ha scritto:
sono troppo vicini
Clicca per allargare...

il metodo più semplice, metti uno <span> dopo ciascuno di loro, tipo
HTML:
    switch ($azione)
    {
        case "cerca":
            $readonly2 = "";
            $btn = "<input type='submit' name='submit' value='modifica' />"
                 . "<span style='padding-left: 30px;'></span>"
                 . "<input type='submit' name='submit' value='elimina' />";
            break;

        case "inserisci":
            $btn = "<input type='submit' name='submit' value='conferma ins' />";
            break;

        case "modifica":
            $btn = "<input type='submit' name='submit' value='conferma mod' />";
            break;

        case "elimina":
            $btn = "<input type='submit' name='submit' value='conferma elim' />";
            break;

        default:
            $readonly1 = "";
            $readonly2 = "";
            $btn = "<input type='submit' name='submit' value='inserisci' />"
                 . "<span style='padding-left: 30px;'></span>"
                 . "<input type='submit' name='submit' value='cerca' />";
            break;
    }
    $btn .= "<span style='padding-left: 30px;'></span>"
         .  "<input type='submit' name='submit' value='rinuncia' />";

SCUSA ho fatto un errore, ho corretto il blocco

sostituisci tutto il blocco
 
Ultima modifica: 28 Apr 2020

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 28 Apr 2020
  • #77
sono riuscito a distanziare solo un bottone ma l'altro no



ho dovuto usare lo slash nel codice se no dava errore

PHP:
switch ($azione)
    {
        case "cerca":
            $readonly2 = "";
            $btn = "<input type='submit' name='submit' value='modifica' />"
                 . "<span style=\"padding-left: 30px;\"></span>"
                 . "<input type='submit' name='submit' value='elimina' />";
                   "<span style=\"padding-left: 30px;\"></span>";
            break;

        case "inserisci":
            $btn = "<input type='submit' name='submit' value='conferma ins' />";
                   "<span style=\"padding-left: 30px;\"></span>";
            break;

        case "modifica":
            $btn = "<input type='submit' name='submit' value='conferma mod' />";
                   "<span style=\"padding-left: 30px;\"></span>";
            break;

        case "elimina":
            $btn = "<input type='submit' name='submit' value='conferma elim' />";
                   "<span style=\"padding-left: 30px;\"></span>";
            break;

        default:
            $readonly1 = "";
            $readonly2 = "";
            $btn = "<input type='submit' name='submit' value='inserisci' />"
                 . "<span style=\"padding-left: 30px;\"></span>"
                 . "<input type='submit' name='submit' value='cerca' />";
                   "<span style=\"padding-left: 30px;\"></span>";
            break;
    }
  
  
    $btn .= "<input type='submit' name='submit' value='rinuncia' />";
                  "<span style=\"padding-left: 30px;\"></span>";


    // valorizza la select "incollection"

questo operatore dopo $btn e' normale che deve stare li?

PHP:
$btn .= "<input type='submit' name='submit' value='rinuncia' />";

per il codice successivo ci sto pensando su come strutturarlo
 
Ultima modifica: 28 Apr 2020

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 29 Apr 2020
  • #78
Alex_70 ha scritto:
sono riuscito a distanziare solo un bottone ma l'altro n
Clicca per allargare...
hai messo il codice un po' a "casaccio",
sostituisci tutto il blocco con quello che ti ho postato qui
https://forum.mrw.it/threads/inserimento-dati-a-cascata.56194/page-4#post-215813



per quanto riguarda il legame attore film, avrei una soluzione semplice, ma,
dipende da come é preferibile lavorare,
ho il film e lego gli attori, oppure
ho l'attore e lego i film ?

é importante sapendo quali dati hai a disposizione, lavori preferibilmente sugli attori o sui film ?

detto ciò, supponendo gli attori siano il punto di partenza,

si può creare un form per la (sola) ricerca dell'attore e conferma,
a cui far seguire un secondo form per la (sola) ricerca del film e conferma
ed infine un terzo form per la conferma della "congiunzione"

in questo modo lo script diventa lineare e facile

nel frattempo se puoi posta lo script con cui aggiorni gli attori e la struttura del db che stai usando
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 29 Apr 2020
  • #79
Buongiorno a tutti

ciao marino51


per inserire i film e gli attori uso pypmyadmin, di solito aggiorno gli attori (la filmografia e' piu' complessa da gestire)
per modificare i film ho un form che abbiamo usato come base di partenza per fare questo che preleva 'id dell'attore
tramite $actor_id = $_GET["id"];
poi ho un'altro form che ho trovato inserito in un progetto film, lo modificato e funziona, questo serve per colllegare gli attori al film (ma non lo uso principalmente, per il motivo che ho scritto qui in questo topic)

struttura del database semplificata


Tabella actor
actor_id
nome
foto
eccc..

Tabella film_actor questa collega gli l'attore e il film
actor_id
film_id
credited
genre
last_update

Tabella film
film_id
movie_title
also_known
year
minutes

Importante: tutto il progetto iniziale e' partito dal database sakila, i campi principali e le tabelle sono uguali al mio,
il database con i doc e' liberamente scaricabile dal sito MySQL

sakila database sito

sakila database download

questo sono i form per modifica attore e per collegare film attore (in fase embrionale)

form inserimento

View and download from Yandex.Disk
yadi.sk

grazie
 
Ultima modifica: 29 Apr 2020

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 29 Apr 2020
  • #80
nel form addMovieActor che collega attori e film si potrebbe inserire una ricerca sia per gli attori che per i film con il preview di una cover (actor e film , se disponibile) , in questo modo si semplifica il processo
 
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • …
  • 11
Succ.
Primo Prec. 4 di 11 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

L
inserimento form dati multipli ?
  • luigithen
  • 13 Mag 2021
  • PHP
Risposte
0
Visite
1K
PHP 13 Mag 2021
luigithen
L
J
Form inserimento dati in database
  • jerweb
  • 29 Gen 2021
  • Ajax
Risposte
1
Visite
4K
Ajax 5 Feb 2021
_SAGO
A
Inserimento dati nel database tramite form + altre operazioni
  • AndreaBet
  • 5 Giu 2020
  • PHP
Risposte
18
Visite
2K
PHP 5 Giu 2020
AndreaBet
A
T
Da xsd a xml ed inserimento dati in excel
  • tappa81
  • 23 Apr 2020
  • XML
Risposte
0
Visite
2K
XML 23 Apr 2020
tappa81
T
S
[PHP] email con inserimento dati nel database
  • sal88
  • 23 Nov 2019
  • PHP
  • 2
Risposte
23
Visite
4K
PHP 27 Nov 2019
Max 1
G
[Javascript] Errore inserimento dati Backend Node.js e workbench
  • giorgio85
  • 8 Ott 2019
  • Javascript
Risposte
1
Visite
2K
Javascript 28 Ott 2019
macus_adi
B
  • Bloccata
[PHP] Creare PDF dopo inserimento dati form
  • bipolare75
  • 28 Set 2019
  • PHP
Risposte
4
Visite
4K
PHP 28 Set 2019
Max 1
E
Inserimento dati da PHP in tabella MySQL
  • etto.demu
  • 1 Giu 2019
  • PHP
Risposte
5
Visite
3K
PHP 3 Giu 2019
zorro
E
Form inserimento dati con JavaScript
  • Emidio
  • 9 Mar 2019
  • Javascript
Risposte
0
Visite
2K
Javascript 9 Mar 2019
Emidio
E
K
[PHP] Inserimento dati database con postgres
  • keyz23
  • 3 Ott 2018
  • PHP
Risposte
2
Visite
2K
PHP 3 Ott 2018
keyz23
K
K
[PHP + MYSQL ] Inserimento dati in database da form dinamico
  • keyz23
  • 13 Set 2018
  • PHP
Risposte
13
Visite
12K
PHP 11 Ott 2019
marino51
M
Inserimento dati checkbox multipli in db da ajax a php
  • migo80
  • 23 Apr 2018
  • PHP
Risposte
1
Visite
2K
PHP 23 Apr 2018
migo80
M
M
[PHP] errore in semplie form inserimento dati
  • maxdp
  • 13 Nov 2016
  • PHP
Risposte
7
Visite
2K
PHP 18 Nov 2016
maxdp
M
S
[PHP] Inserimento dati su tabelle collegate 1-m
  • solari77
  • 6 Ott 2016
  • PHP
Risposte
17
Visite
4K
PHP 17 Ott 2016
borgo italia
M
[PHP] controllo inserimento dati un un form
  • MoPa
  • 4 Ago 2016
  • PHP
Risposte
4
Visite
6K
PHP 7 Lug 2018
Max 1
[PHP] Generare file pdf con inserimento dati
  • cris8380
  • 10 Giu 2016
  • PHP
  • 2
Risposte
34
Visite
12K
PHP 18 Giu 2016
cris8380
Inserimento dei dati automatici mediante numero di tessera.
  • cris8380
  • 8 Giu 2016
  • PHP
  • 2
Risposte
21
Visite
4K
PHP 9 Giu 2016
cris8380
G
mysql - problemi inserimento dati nel database, consigli.
  • giorgio85
  • 25 Mag 2016
  • MySQL
Risposte
3
Visite
2K
MySQL 26 Mag 2016
marino51
J
Inserimento dati in db da due o più form
  • jumpy83
  • 12 Mar 2016
  • PHP
Risposte
0
Visite
1K
PHP 12 Mar 2016
jumpy83
J
P
problemi inserimento dati
  • paperinik4
  • 8 Mar 2016
  • PHP
Risposte
1
Visite
1K
PHP 8 Mar 2016
paperinik4
P
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?