+ Rispondi alla Discussione
Risultati da 1 a 38 di 38

Inserimento/delete/modifica dati da form con casella a discesa e id collegati

Ultimo Messaggio di Alex_2019 il:
  1. #1
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134

    Inserimento/delete/modifica dati da form con casella a discesa e id collegati

    Dopo il thread precedente proseguo con i miei quesiti,

    ho completato il codice all' 80%, adesso manca la cosa principale, inserire, cancellare, modifica dei dati da form.

    Ho gia' qualcosa pronto, ma quello che vorrei ottenere e' una cosa particolare
    ripropongo il mio database, semplificato, perche' ho aggiunto altri campi, ma quelli importanti sono qua

    Database struttura: 3 tabelle

    actor: <------Table
    actor_id
    foto
    nome

    film: <------Table
    film_id
    movie_title
    year

    film_actor: <------Table
    actor_id
    film_id


    faccio 1 esempio delle form che vorrei creare:

    INSERIMENTO Film o Attori

    voglio aggiungere un film e gli attori
    Dracula di Bram Stoker con Gary Oldman, Winona Ryder

    la cosa sarebbe semplice per il nome del film, ma io vorrei che i dati degli attori siano presi da una casella a discesa in cui e' visibile il nome (non l'id)
    per questo dovrei collegare la tabella fim_actor con una query per filtrare e visualizzare i datil, o stesso discorso per inserire un attore e un film,
    la domanda e', che query necessita per fare questo? (lo so, sono negato con le query, spero di imparare in futuro )



    grazie a tutti per le eventuali risposte, che mi aspetto siano tantissime

  2. #2
    User L'avatar di FedeMasiero
    Data Registrazione
    Jul 2015
    Località
    Maserà di Padova
    Messaggi
    48
    Ciao Alex, la domanda non è molto chiara. Cerco di interpretare e risponderti con varie soluzioni.

    Hai la tabella actor già completata (quindi sono già inseriti nel DB), infatti li vuoi selezionare con un <select> nell'interfaccia che andrai a creare.
    La query per selezionare l'intera lista degli attori dal DB è:
    SELECT * FROM actor;
    Poi nella select che andrai ad inserire nell'interfaccia grafica andrai ad inserire l'ID nelle value delle <option> e il nome all'interno, in questo modo:
    <select>
    <option value="ID">NOME</option>
    </select>

    Per quanto riguarda la tabella film_actor, è di congiunzione tra le due tabelle perché hanno una struttura molti a molti, quindi una volta inserito il nuovo film con una INSERT, dovrai prendere l'ID generato nella tabella actor ed inserirlo in film_actor con tutti gli ID degli attori selezionati.

    Ora, spero di aver risposto, almeno i parte alla tua domanda. Diversamente non esitare a chiedere ulteriori spiegazioni.

    P.S. Con cosa stai sviluppando? Stai usando un framework PHP?
    Ultima modifica di FedeMasiero; 12-07-19 alle 11:47
    Federico Masiero | Business Process Automation

  3. #3
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Ciao Federico ,

    ho del codice pronto preso da un ebook kindle, Sviluppo di siti Web con PHP 6, Apache, MySQL (2012),
    purtroppo ho dovuto trasciverlo tutto a mano in quanto il codice era non selezionabile, semplicemente delle foto, scansionate anche malissimo e a bassa risoluzione,
    roba da perdere la vista
    inoltre la versione italiana e' incompleta e' piena di errori, devo trovare la versione inglese, che sembra migliore e senza il problema menzionato sopra.

    Come ho scritto vorrei adattarlo al mio database, ma ci sono errori che non riesco a risolvere

    C'e' un file admin.php che visualizza i film e gli attori,se clicco su Movies- People ADD mi porta nella pagina Movie.php per i film e People.php per le persone,
    ecco gli errori
    1) i campi sono ripetuti
    2) non e' possibile lasciare i campi vuoti (magari io voglio aggiungere solo un dato)



    altra cosa, vorrei visualizzare la foto degli attori e del film

    Come editor uso Notepad++, molto potente, mi colora il codice cosi capisco dove e' sbagliato, suggerimenti e altro (tramite plugin)



    ti spedisco i file completi di database cosi magari li controlli e vedi dove sta il problema, e di cosa vorrei ottenere

    https://yadi.sk/d/vpUDFGpA4GQAuw

    Grazie
    Ultima modifica di Alex_2019; 12-07-19 alle 13:40

  4. #4
    User L'avatar di FedeMasiero
    Data Registrazione
    Jul 2015
    Località
    Maserà di Padova
    Messaggi
    48
    Allora, da quel che capisco stai imparando ora a programmare WebApplication. Hai fatto bene ad acquistare un libro per apprendere le tecniche AMP.

    Citazione Originariamente Scritto da Alex_2019 Visualizza Messaggio
    C'e' un file admin.php che visualizza i film e gli attori,se clicco su Movies- People ADD mi porta nella pagina Movie.php per i film e People.php per le persone,
    ecco gli errori
    1) i campi sono ripetuti
    2) non e' possibile lasciare i campi vuoti (magari io voglio aggiungere solo un dato)

    altra cosa, vorrei visualizzare la foto degli attori e del film
    Per quanto riguarda i file che mi stai citando, dovresti postare almeno qualche riga di codice e dirmi cosa non funziona. Altrimenti ti rifaccio l'intero progetto a mio piacimento ma non ti sarebbe utile per capire il libro!
    Per quanto riguarda le immagini, invece, se sono salvate nel DB con un link, allora quando fai la query che ti restituisce tutti gli elementi del film (immagine compresa) basta inserirla in un tag html: vedi sotto l'esempio.

    QUERY: SELECT * FROM film WHERE film_id = 1;
    Questa ti restituisce tutti i campi del film con ID 1.

    Ora, tramite PHP (a seconda della versione che stai usando e del metodo che usi) puoi accedere a questi campi e li inserisci nel tuo HTML. Per farlo puoi usare la funzione echo di PHP.
    Otterrai una cosa del genere:
    <h2>FILM TITLE</h2>
    <h4>Film Description</h4>
    <img src="LINK SALVATO NEL DB" alt="descrizione immagine" />

    Abbastanza chiaro?
    Anyway, se vuoi postare qualche riga di codice sono lieto di esaminarle però se stai studiando in un libro del 2012 sicuramente starai utilizzando la versione 5 di PHP che aveva una serie di problematiche oltre al fatto che non era OOP.

    CONSIGLIO: Studiati PHP 7 (che è la versione attuale, più evoluta ed orientata ad oggetti). Puoi trovare dei corsi molto chiari su Udemy, anche in italiano (Ad esempio quelli dell'Ing. Hidran) sul PHP 7 e lo sviluppo di WebApp con AMP!
    Poi aggiornami sugli sviluppi!

    P.S. Trovi anche un bel corso su Laravel (il framework PHP) più utilizzato in circolazione. Questo potrebbe essere lo step successivo!
    Federico Masiero | Business Process Automation

  5. #5
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Ciao Federico,
    non devi farmi il progetto, poi lo adatto io, dovresti gentilmente cercare di fixare questi errori, io non so dove' il punto esatto del problema

    1) i campi sono ripetuti
    2) non e' possibile lasciare i campi vuoti (magari io voglio aggiungere solo un dato)

    guarda lo screenshot

    https://yadi.sk/i/0orIm93v9z9BpQ

  6. #6
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    questo e' un pezzo di codice preso da movie.php

    Codice PHP:
    <td>Lead Actor</td>
         <td><select name="movie_leadactor">
    <?php
    // select actor records
    $query 'SELECT
            people_id, people_fullname
        FROM
            people
        WHERE
            people_isactor = 1
        ORDER BY
            people_fullname'
    ;
    $result mysql_query($query$db) or die(mysql_error($db));

    // populate the select options with the results
    while ($row mysql_fetch_assoc($result)) {
        foreach (
    $row as $value) {
            if (
    $row['people_id'] == $movie_leadactor) {
                echo 
    '<option value="' $row['people_id'] .
                    
    '" selected="selected">';
            } else {
                echo 
    '<option value="' $row['people_id'] . '">';
            }
            echo 
    $row['people_fullname'] . '</option>';
        }
    }
    ?>

    i campi sono ripetuti e non c'e' lo spazio null

  7. #7
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    771
    Aggiungi Ultima su Facebook
    Ciao Alex, come nei precedenti post, ti dico la mia. C'è un madornale errore di fondo.
    Le funzioni for, while, do while, foreach, servono ad ottenere informazioni contenute all'interno di array associativi o multidimensionali.
    In pratica cosa fanno? Queste funzioni mettono in circolo il raccoglitore (array) estraendo tutte le occorrenze al suo interno (una alla volta) fin tanto che ne esiste una.
    Partendo da questo presupposto, utilizzare:
    while(), con all'interno un foreach()
    non fa altro che prenderti il dato reale, per poi essere ciclato nuovamente, cosa inutile, con conseguente duplicazione di risultati.
    Ti consiglio di leggere:
    https://www.php.net/manual/en/language.types.array.php
    e le strutture di controllo: https://www.php.net/manual/en/langua...structures.php
    dove all'interno trovi i cicli menzionati, ma anche altre nozioni utili quali le condizioni, dichiarazioni etc.
    Visto che vuoi imparare, iniziamo da qui. Magari trovi l'errore da solo e lo correggi.

    Ps. l'errore te l'ho scritto!
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  8. #8
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Ciao Stefano
    il pezzo di codice che ho postato non lo scritto io, e trascritto a mano da me dal libro
    PHP 6, Apache, MySQL: Sviluppo di siti Web (Linguaggi & programmazione) di Timothy Boronczyk

    quindi da come ho capito devo togliere foreach

    esatto?
    Ultima modifica di Alex_2019; 12-07-19 alle 15:08

  9. #9
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Federico per il php 7 meglio aspettare, per adesso faccio scuola con il 5.6, poi magari in futuro ci faccio un pensiero

  10. #10
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    con il consiglio di Ultima ho fixato il codice , adesso i valori non sono duplicati,
    solo che vorrei ottenere uno spazio vuoto per avere la possibilita' di non inserire nulla

    Codice PHP:
    <?php
    // select actor records
    $query 'SELECT
            people_id, people_fullname
        FROM
            people
        WHERE
            people_isactor = 1
        ORDER BY
            people_fullname'
    ;
    $result mysql_query($query$db) or die(mysql_error($db));

    // populate the select options with the results
    while ($row mysql_fetch_assoc($result)) {
         {
            if (
    $row['people_id'] == $movie_leadactor) {
                echo 
    '<option value="' $row['people_id'] .
                    
    '" selected="selected">';
            } else {
                echo 
    '<option value="' $row['people_id'] . '">';
            }
            echo 
    $row['people_fullname'] . '</option>';
        }
    }
    ?>

  11. #11
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    771
    Aggiungi Ultima su Facebook
    Citazione Originariamente Scritto da Alex_2019 Visualizza Messaggio
    con il consiglio di Ultima ho fixato il codice , adesso i valori non sono duplicati,
    solo che vorrei ottenere uno spazio vuoto per avere la possibilita' di non inserire nulla

    Codice PHP:
    <?php
    // select actor records
    $query 'SELECT
            people_id, people_fullname
        FROM
            people
        WHERE
            people_isactor = 1
        ORDER BY
            people_fullname'
    ;
    $result mysql_query($query$db) or die(mysql_error($db));

    // populate the select options with the results
    while ($row mysql_fetch_assoc($result)) {
         {
            if (
    $row['people_id'] == $movie_leadactor) {
                echo 
    '<option value="' $row['people_id'] .
                    
    '" selected="selected">';
            } else {
                echo 
    '<option value="' $row['people_id'] . '">';
            }
            echo 
    $row['people_fullname'] . '</option>';
        }
    }
    ?>
    Ottieni uno spazio vuoto in questo modo, applicando un echo con la option della select vuota prima del ciclo while
    Codice PHP:
    <?php
    // select actor records
    $query 'SELECT
            people_id, people_fullname
        FROM
            people
        WHERE
            people_isactor = 1
        ORDER BY
            people_fullname'
    ;
    $result mysql_query($query$db) or die(mysql_error($db));
    // da qui
    echo '<option value="">Seleziona un attore..</option>';
    //
    // populate the select options with the results
    while ($row mysql_fetch_assoc($result)) {
         {
            if (
    $row['people_id'] == $movie_leadactor) {
                echo 
    '<option value="' $row['people_id'] .
                    
    '" selected="selected">';
            } else {
                echo 
    '<option value="' $row['people_id'] . '">';
            }
            echo 
    $row['people_fullname'] . '</option>';
        }
    }
    ?>
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  12. #12
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Benissimo,
    adesso adatto il codice al mio e vediamo cosa combino,
    spero che i precedenti attriti siano stati risolti e possiamo ricominciare da capo
    Grazie a Ultima e Federico per il loro prezioso aiuto

  13. #13
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    sto testando il codice nel database di prova e..ho un errore



    Codice HTML:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 8


    Codice PHP:
    <?php
    $db 
    mysql_connect('localhost''bp6am''bp6ampass') or 
        die (
    'Unable to connect. Check your connection parameters.');
    mysql_select_db('moviesite'$db) or die(mysql_error($db));

    if (
    $_GET['action'] == 'edit') {
        
    //retrieve the record's information 
        
    $query 'SELECT
                movie_name, movie_type, movie_year, movie_leadactor, movie_director
            FROM
                movie
            WHERE
                movie_id = ' 
    $_GET['id'];
        
    $result mysql_query($query$db) or die(mysql_error($db));
        
    extract(mysql_fetch_assoc($result));
    } else {
        
    //set values to blank
        
    $movie_name '';
        
    $movie_type 0;
        
    $movie_year date('Y');
        
    $movie_leadactor 0;
        
    $movie_director 0;
    }
    ?>
    line 8

    Codice HTML:
    $query = 'SELECT
    Ultima modifica di Alex_2019; 12-07-19 alle 17:04

  14. #14
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    771
    Aggiungi Ultima su Facebook
    Citazione Originariamente Scritto da Alex_2019 Visualizza Messaggio
    sto testando il codice nel database di prova e..ho un errore



    Codice HTML:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 8


    Codice PHP:
    <?php
    $db 
    mysql_connect('localhost''bp6am''bp6ampass') or 
        die (
    'Unable to connect. Check your connection parameters.');
    mysql_select_db('moviesite'$db) or die(mysql_error($db));

    if (
    $_GET['action'] == 'edit') {
        
    //retrieve the record's information 
        
    $query 'SELECT
                movie_name, movie_type, movie_year, movie_leadactor, movie_director
            FROM
                movie
            WHERE
                movie_id = ' 
    $_GET['id'];
        
    $result mysql_query($query$db) or die(mysql_error($db));
        
    extract(mysql_fetch_assoc($result));
    } else {
        
    //set values to blank
        
    $movie_name '';
        
    $movie_type 0;
        
    $movie_year date('Y');
        
    $movie_leadactor 0;
        
    $movie_director 0;
    }
    ?>
    line 8

    Codice HTML:
    $query = 'SELECT
    Sei proprio sicuro che sia questo il file e che sia esattamente questa la query? Te lo chiedo perchè in quella query non esite nessun dato indicato nell'errore ' , )'
    Anche perchè, la query è scritta correttamente e non presenta nessun errore.
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  15. #15
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    771
    Aggiungi Ultima su Facebook
    Ti do una postilla, perchè o cercato è dato una letta rapida al libro che stai utilizzando. E' completamente, scritto con i piedi.
    Sul libro si fa riferimento a PHP6, ma nella pratica si ferma a PHP 5.3.
    Ci sono enormi lacune che spero siano derivate da traduzioni, perchè altrimenti sarebbe da ritirare dagli scaffali.
    Inoltre, oltre a problemi di battitura vari, il codice è sporco e spesso ridondante
    Ma cosa ben più grave, non vengono spiegate le funzioni di alcun tipo. Cosa grave per un libro di apprendimento, perchè presuppone una conoscenza già dei rispettivi linguaggi utilizzati, ma al contempo ha delle serie lacune.
    Ti do il mio parere professionale e magari se vuoi, ti indico anche dove e come apprendere sia il codice, che le tecniche, per imparare a realizzare un sito web. Ma devi essere disposto e riniziare, cosa che ti farebbe bene, perchè apprenderesti realmente qualcosa, invece di andare per tentativi.
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  16. #16
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Si il libro fa pena, ma le versione italiana, mancano pezzi di codice e alcuni argomenti sono incompleti la versione inglese e' completa

    i dati puntano al file commit.php, li ci sono le query

    Codice PHP:
    <?php
    $db 
    mysql_connect('localhost''bp6am''bp6ampass') or 
        die (
    'Unable to connect. Check your connection parameters.');
    mysql_select_db('moviesite'$db) or die(mysql_error($db));
    ?>
    <html>
     <head>
      <title>Commit</title>
     </head>
     <body>
    <?php
    switch ($_GET['action']) {
    case 
    'add':
        switch (
    $_GET['type']) {
        case 
    'movie':
            
    $query 'INSERT INTO
                movie
                    (movie_name, movie_year, movie_type, movie_leadactor,
                    movie_director)
                VALUES
                    ("' 
    $_POST['movie_name'] . '",
                     ' 
    $_POST['movie_year'] . ',
                     ' 
    $_POST['movie_type'] . ',
                     ' 
    $_POST['movie_leadactor'] . ',
                     ' 
    $_POST['movie_director'] . ')';
            break;
        }
        break;
    case 
    'edit':
        switch (
    $_GET['type']) {
        case 
    'movie':
            
    $query 'UPDATE movie SET
                    movie_name = "' 
    $_POST['movie_name'] . '",
                    movie_year = ' 
    $_POST['movie_year'] . ',
                    movie_type = ' 
    $_POST['movie_type'] . ',
                    movie_leadactor = ' 
    $_POST['movie_leadactor'] . ',
                    movie_director = ' 
    $_POST['movie_director'] . '
                WHERE
                    movie_id = ' 
    $_POST['movie_id'];
            break;
        }
        break;
    }

    if (isset(
    $query)) {
        
    $result mysql_query($query$db) or die(mysql_error($db));
    }
    ?>
      <p>Done!</p>
     </body>
    </html>
    accetto consigli

  17. #17
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    capito il problema, se riempio tutti i campi l'errore non viene visualizzato

    questo e' strano, nel database ho impostato tutti a Null, tranne movie_name


  18. #18
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    il codice funziona solo se compilo tutti i dati nella form, se lascio un campo/i vuoti genera errore

  19. #19
    User L'avatar di FedeMasiero
    Data Registrazione
    Jul 2015
    Località
    Maserà di Padova
    Messaggi
    48
    L'errore a cui ti riferisci viene dal file commit.php nella parte in cui lanci la query di INSERT.
    Dovresti controllare cosa ricevi dal form in caso il campo non venga compilato. L'errore sta lì!
    Federico Masiero | Business Process Automation

  20. #20
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Citazione Originariamente Scritto da FedeMasiero Visualizza Messaggio
    L'errore a cui ti riferisci viene dal file commit.php nella parte in cui lanci la query di INSERT.
    Dovresti controllare cosa ricevi dal form in caso il campo non venga compilato. L'errore sta lì!
    questo


    Codice:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 8

  21. #21
    User L'avatar di FedeMasiero
    Data Registrazione
    Jul 2015
    Località
    Maserà di Padova
    Messaggi
    48
    Esattamente, proprio questo! Deriva dal pezzo di codice in commit.php dove hai la query di inserimento: INSERT INTO ecc...
    Federico Masiero | Business Process Automation

  22. #22
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    in alto c'e' il codice di commit.php
    ho controllato, sembra tutto a tosto

  23. #23
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    771
    Aggiungi Ultima su Facebook
    Ciao Alex, prova a riscrivere la query, come te la ho scritta io.

    Codice PHP:
    <?php
    $db 
    mysql_connect('localhost''bp6am''bp6ampass') or 
        die (
    'Unable to connect. Check your connection parameters.');
    mysql_select_db('moviesite'$db) or die(mysql_error($db));
    ?>
    <html>
     <head>
      <title>Commit</title>
     </head>
     <body>
    <?php
    switch ($_GET['action']) {
    case 
    'add':
        switch (
    $_GET['type']) {
        case 
    'movie':
            
    $query "INSERT INTO
                movie
                    (movie_name, movie_year, movie_type, movie_leadactor,
                    movie_director)
                VALUES
                    ('" 
    $_POST['movie_name'] . "',
                     " 
    $_POST['movie_year'] . ",
                     " 
    $_POST['movie_type'] . ",
                     " 
    $_POST['movie_leadactor'] . ",
                     " 
    $_POST['movie_director'] . ")";
            break;
        }
        break;
    case 
    'edit':
        switch (
    $_GET['type']) {
        case 
    'movie':
            
    $query "UPDATE movie SET
                    movie_name = '" 
    $_POST['movie_name'] . "',
                    movie_year = " 
    $_POST['movie_year'] . ",
                    movie_type = " 
    $_POST['movie_type'] . ",
                    movie_leadactor = " 
    $_POST['movie_leadactor'] . ",
                    movie_director = " 
    $_POST['movie_director'] . "
                WHERE
                    movie_id = " 
    $_POST['movie_id'];
            break;
        }
        break;
    }

    if (isset(
    $query)) {
        
    $result mysql_query($query$db) or die(mysql_error($db));
    }
    ?>
      <p>Done!</p>
     </body>
    </html>
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  24. #24
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Grazie Stefano
    provo

    ps: ricordo che questo e' un codice di test per testare le funzionalita', il database originale ha altri campi e altre relazioni, da riscrivere le query

  25. #25
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    non funziona se si lasciano campi vuoti, restituisce questo errore (il solito)
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 8
    line 8
    $query = 'SELECT

    se si inseriscono tutti i dati nei campi tutto procede bene senza errori



  26. #26
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    ok, lasciamo perdere il codice sopra, e' sbagliata la struttura

    sto sperimentando un'altro codice, questo e per UPDATE (poi cambio il parametro in INSERT, DELETE)

    qualcosa e' sbagliato, mi restituisce la query nella pagina, ma nel database effettua l'update correttamente

    ps: ho aggiunto un'altra query per role, ma non sono sicuro se e' strutturata giusta



    Codice PHP:
    <div>
                <label for="credited">Credited</label>
                <input type="text" class="textBox" placeholder="Text input" name="credited">
            </div><br>
            
            
            <div>
                <label for="role">Role</label>
                <input type="text" class="textBox" placeholder="Text input" name="role">
            </div><br>
            
            <div>
            
            
            <button type="submit" class="button">Add!</button></div><br>

            </form>
            <?php
                
    if (isset($_GET['movieid'])) {
                    
    $movieid $_GET['movieid'];
                    
    $actorid $_GET['actorid'];
                    
    $credited $_GET['credited'];
                    
    $role $_GET['role'];
                    
                    
    $sql "UPDATE 
                    film_actor 
                    SET credited = '" 
    $credited "' 
                    , role = '" 
    $role "' 
                    WHERE film_actor.actor_id = '" 
    $actorid ."' 
                    AND 
                    film_actor.film_id = '" 
    $movieid ."'";
                    
                    echo 
    $sql;

                    
    $connection = new mysqli("localhost""exadmin""expass""xxx");
                    
    $result $connection->query($sql);
                    
                }
            
    ?>

        </div>



    Ultima modifica di Alex_2019; 15-07-19 alle 13:44 Motivo: EDIT QUERY

  27. #27
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    771
    Aggiungi Ultima su Facebook
    C'è un "echo $sql" nel codice, quindi ti stampa la query a video.
    Ti basta rimuoverla o commentarla
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  28. #28
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    ho risolto cosi

    Codice PHP:
    // esecuzione della query
    if (!$connection->query($sql)) {
      echo 
    "Errore della query: " $connection->error ".";
    }else{
      echo 
    "Dati <b> " $credited " " $role " </b> inseriti correttamente nel database."$sql
    grazie Stefano

    mi aiuti a risolvere il mistero dell'altro thread

    http://www.giorgiotave.it/forum/php/...el-codice.html

  29. #29
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    la query precedente funziona benissimo

    adesso mi serve una per inserire il titolo e collegarlo all'attore, ho fatto molti tentativi ma non riesco a risolvere



    Database struttura: 3 tabelle

    actor: <------Table
    actor_id
    nome
    foto


    film: <------Table
    film_id
    movie_title
    year

    film_actor: <------Table
    actor_id
    film_id



    questo e' il codice completo

    Codice PHP:
    <!DOCTYPE html>
    <html> 
    <head> <title> I4 - Add Movie to Actor Relation </title> </head>
    <link rel="stylesheet" href="S1.css">
    <body> 
        
        <div align="center" style="margin-left: 18%; padding: 1px 15px;">
            <h1> Add Movie to Actor Relation</h1>
            
            <form method = 'GET' action='#'> <div class="form-group"><label for="movieid">Movie Title   </label><option value=NULL> </option>
            <div>
                <label for="movie_title">Movie Title</label>
                <input type="text" class="textBox" placeholder="Text input" name="movie_title">
            </div><br>
            
            
            <div>
                <label for="credited">Credited</label>
                <input type="text" class="textBox" placeholder="Text input" name="credited">
            </div><br>
            
            <div>
            
            
            <div>
                <label for="year">Year</label>
                <input type="text" class="textBox" placeholder="Text input" name="year">
            </div><br>
            
            <label for="actorid">Actor   </label><select class="form-control" name='actorid'><option value=NULL> </option> 

            <?php 
                $servername 
    "localhost";
                
    $username "xxx";
                
    $password "xxx";
                
    $dbname "xxx";
                
                
    $connection = new mysqli($servername$username$password$dbname);
                
                
    $dataCells array();

                
    $sql "select concat(actor_id,' ', nome, ' ', credited, ' ') , actor_id from actor;";
                
                
    $result $connection->query($sql);
                while (
    $resultProperties mysqli_fetch_field($result)) {
                    
    $name $resultProperties->name;
                    
    array_push($dataCells$name); 
                }
                
                
    $colIndex 0;
                
    $actorName;
                while (
    $row mysqli_fetch_array($result)) {
                    foreach (
    $dataCells as $cell) {
                        if (
    $colIndex == 0){
                            
    $actorName $row[$cell];

                        }
                        else if (
    $colIndex == 1) {
                            echo 
    "<option value=" $row[$cell] . ">" $actorName;
                            echo 
    "</option>";
                        }

                        
    $colIndex++;
                    }
                    
    $colIndex 0;
                }
            
    ?>
            </select><br><br>
            
            <div>
            
            
            <button type="submit" class="button">Add!</button></div><br>

            </form>

            <?php
                
    if (isset($_GET['movieid'])) {
                    
    $movieid $_GET['movieid'];
                    
    $movie_title $_GET['movie_title'];
                    
    $credited $_GET['credited'];
                    
    $year $_GET['year'];
                    
    $actorid $_GET['actorid'];
                    
                    
                    
                    
    $sql "insert into film values 
                    movie_title = '"
    $movie_title "'
                    , credited = '" 
    credited "'
                    , year = '" 
    $year ."'
                    WHERE actor.actor_id = '" 
    $actorid ."' 
                    AND 
                    film.film_id = '" 
    $movieid ."'";
                        
    //echo $sql;
                        
    $result $connection->query($sql);
                    
                    
                    
    $connection = new mysqli("localhost""exadmin""expass""xxx");
                    
    $result $connection->query($sql);
                    
                    
    // esecuzione della query
    if (!$connection->query($sql)) {
      echo 
    "Errore della query: " $connection->error ".";
    }else{
      echo 
    "Dati <b> " $movie_title " " $also_known " </b> inseriti correttamente nel database."$sql;
    }
                    
                }
                    
    ?>

        </div>
        
    </body>
    </html>
    Ultima modifica di Alex_2019; 15-07-19 alle 22:43

  30. #30
    User L'avatar di FedeMasiero
    Data Registrazione
    Jul 2015
    Località
    Maserà di Padova
    Messaggi
    48
    Ciao Alex, scusa la domanda che mi viene spontanea, hai studiato un po' di database relazionali prima di creare le tre tabelle sopra?
    Hai ben capito cos'è una "relazione molti a molti" e come viene implementata con le tabelle in un DB?
    In caso, ti consiglio i tutorial di W3C, sono molto chiari su questo aspetto e potrebbero risolverti molti problemi.

    Anyway, la tabella film_actor si chiama "tabella di congiunzione" e serve appunto a tener traccia dei collegamenti dei vari attori all'interno di un film e dei vari film recitati da un attore (per l'appunto la relazione molti a molti)!
    Quindi, per riuscire a collegare un attore ad un film devi andare ad eseguire una insert nella tabella film_actor con i due ID, in questo modo:

    INSERT INTO film_actor VALUES (id_film_ricevuto, id_attore_ricevuto);

    Ovviamente devi ricevere gli ID del film e dei vari attori da collegare.
    Potresti ricevere gli ID degli attori al momento dell'inserimento di un nuovo film, oppure anche in una pagina successiva che andrai ad implementare dopo aver fatto inserire le informazioni essenziali del film.
    In caso ricevessi tutte le informazioni in un solo momento, prima dovresti lanciare una query per inserire un nuovo film, poi, attraverso l'apposita funzione php mysql_insert_id recuperi l'ID dell'ultimo inserimento (in questo caso il film) e procedi all'inserimento dei vari ID degli attori ricevuti nella tabella di congiunzione film_actor!

    Spero di essere stato chiaro!
    Federico Masiero | Business Process Automation

  31. #31
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Ciao Federico
    il concetto sulle query realazionali lo conosco,in teoria, ma nella pratica poi quando devo andare a creare le query sono un disastro,
    ci sono cose che non riesco ancora a fare,

    chiedo lumi a chi e' piu' esperto di me in materia

    spero di migliorare in futuro

    il problema qui sta collegare il titolo, che io voglio inserire manualmente, con gli attori,
    ovviamente tutta la compilazione dei dati film deve stare nella stessa pagina, per l'ID attore che e' presente non si pone il problema,
    il titolo film pero' deve essere ancora inserito, quindi non esite ancora l'ID,
    Ultima modifica di Alex_2019; 16-07-19 alle 07:10

  32. #32
    User L'avatar di FedeMasiero
    Data Registrazione
    Jul 2015
    Località
    Maserà di Padova
    Messaggi
    48
    OK Alex, allora devi utilizzare (come ti ho scritto sopra) la funzione di php (tu usi il 5.6) che si chiama:

    mysql_insert_id($conn);

    Grazie a questa funzione riesci a recuperare l'ultimo ID che è stato inserito nel DB.

    Allora, presupponendo di avere un form dove puoi compilare tutti i campi del film ed anche di selezionare gli attori, riceverai tutti i dati nel tuo script di conferma.
    A quel punto dovrai fare più query: una per inserire il film e altre query per collegare ogni attore al film.

    Quindi i passaggi sono:
    QUERY INSERT FILM -> nella tabella film;
    Recupero l'ultimo ID inserito con la funzione mysql_insert_id($conn) -> Sarà l'ID del tuo film appena inserito;
    UNA QUERY PER OGNI ATTORE DA COLLEGARE AL FILM -> nella tabella film_actor;

    Implementalo e vedi che funzionerà!
    Federico Masiero | Business Process Automation

  33. #33
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Federico grazie per le tue spiegazioni, mah.. non potresti inserirmi il pezzo di codice che manca nel post, prima che ci arrivo passeranno giorni
    come ho specificato nei primi thread ho cominciato a interessarmi al php da circa 2 mesi, ancora ho molto da imparare

  34. #34
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Risolto

    una curiosita, quale sono gli input type corretti delle form per questi campi?
    io ho inserito questi, sono giusti?

    Tipo

    varchan = <input type="text"

    year
    (4) = <input type="year"

    date
    = <input type="date"

    text
    = <input type="text"


    enum= <input type=" " questo non capisco


    Ultima modifica di Alex_2019; 16-07-19 alle 19:11

  35. #35
    User L'avatar di FedeMasiero
    Data Registrazione
    Jul 2015
    Località
    Maserà di Padova
    Messaggi
    48
    Ciao Alex, se ti mettevo il codice avresti fatto semplicemente copia/incolla. Così invece hai analizzato la mia spiegazione e la hai implementata. Ora hai veramente imparato qualcosa di nuovo!

    Per quanto riguarda gli input sono corretti.
    Per la questione ENUM, invece, sono dei valori nel DB che sono impostati inizialmente da te. Quindi nel momento in cui li inserisci dovranno rispettare le tue specifiche di creazione.
    Puoi utilizzare il type text nel campo di input, però devi controllare quando lo ricevi che sia formattato in modo corretto. Oppure, cosa più semplice, fai una tendina di selezione con gli ENUM disponibili e l'utente seleziona quello desiderato!
    Federico Masiero | Business Process Automation

  36. #36
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Ciao Federico

    varchan
    = <input type="text" ha il limite di 255

    text = <input type="text" simile al blocco note



    varchan
    input come text e' giusto, ma text?

    sono diversi


    Ultima modifica di Alex_2019; 17-07-19 alle 07:15

  37. #37
    User L'avatar di FedeMasiero
    Data Registrazione
    Jul 2015
    Località
    Maserà di Padova
    Messaggi
    48
    Ciao Alex, io farei così:

    Se hai un campo VARCHAR:
    Codice:
    <input type="text" maxlength="255" />
    Se hai un campo TEXT ma sai che la risposta può stare in una riga:
    Codice:
    <input type="text" />
    Se hai un campo TEXT che utilizzi per registrare ad esempio la trama del film (che quindi è lunga):
    Codice:
    <textarea placeholder="Scrivi la trama del film..."></textarea>
    Se hai un campo ENUM, pensandoci bene, andrei con la tendina a selezione per evitare qualsiasi errore da parte dell'utente:
    Codice:
    <select>
        <option value="ENUM1">ENUM1</option>
        ....
        <option value="ENUM8">ENUM8</option>
    </select>
    Federico Masiero | Business Process Automation

  38. #38
    User L'avatar di Alex_2019
    Data Registrazione
    Jul 2019
    Località
    Hell
    Messaggi
    134
    Grazie Federico

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.