Visualizzazione risultati 1 fino 20 di 20
Like Tree1Likes
  • 1 Post By alemoppo

Discussione: Form update dati per php

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Question Form update dati per php

    Buongiorno,

    sono un nuovo utente del forum, anche se sono registrato su Altervista da molto.

    Premetto che non sono un programmatore, il mio lavoro e' diverso, solo passione e basta.

    Il php lo conosco da poco, qualcosa ho imparato (auodidatta), ma sono all'inizio, sto costruendo un sito con argomento cinema.

    Dunque, mi servirebbe un aiuto per una form per aggiornare i dati.

    Ho la pagina cinema.php in cui sono inseriti i dati dell'attore

    questo e' il codice

    cinema.php (da qui preleva l'id della scheda e lo trasferisce a modifica.php)

    Codice PHP:
    <a href="javascript:apri('modifica.php?id=<?php echo $actor_id; ?>')">Modifica</a>
    modifica.php (per questo codice ho preso spunto da una ricerca in rete)

    Codice PHP:
    <?php

    require_once("connetti.php");

    $actor_id = $_GET["id"];

    $query = mysql_query ("SELECT * FROM actor WHERE actor_id=". $actor_id, $db);
    $row = mysql_fetch_array ($query);


    $nome=$row['nome'];
    $aka=$row['aka'];
    ?>


    <form action="#" method="post">
    Nome
    <input name="nome" type="text" id="nome" value="<?php echo $nome;?>"><br />
    Performer Aka
    <textarea name="aka" id="aka"><?php echo $aka;?></textarea><br />
    <input name="modifica" type="submit" id="modifica" value="modifica">
    </form>
    <?php

    if (isset($_POST['modifica']))
    {
    include
    "connetti.php";
    $query = mysql_select_db("xxx", $db);
    if (
    $query)
    {

    $nome=$_POST['nome'];
    $aka=$_POST['aka'];

    $query=mysql_query("UPDATE actor SET nome='".$_POST['nome']."', aka='".$_POST['aka']."' WHERE id=$actor_id");

    $query=mysql_query($query);

    if(
    $query) echo "<h2>Dati inseriti.</h2>";
    else echo
    "<h2>Dati non inseriti!</h2>";

    } else echo
    "<h2>Errore! Database non selezionato.</h2>";
    }
    ?>
    non capisco dove sta l'errore, non inserisce niente, ma mi visualizza i dati
    Ultima modifica di blackskyisback : 18-09-2019 alle ore 18.34.33

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,167

    Predefinito

    Non ho approfondito il funzionamento ma, alcuni consigli:

    • NON utilizzare le vecchie funzioni "mysql_". Utilizza le versioni mysqli, quindi "mysqli_".
    • Per capire dove sono i problemi, aggiungi controlli su tutto: controlla se la "mysql(i)_query()" ritorna FALSE; controlla se i dati arrivano a PHP dal form (a questo scopo puoi semplicemente stamparle con "echo $variabile".
    • Codice PHP:
      $query=mysql_query("UPDATE actor SET nome='".$_POST['nome']."', aka='".$_POST['aka']."' WHERE id=$actor_id");

      $query=mysql_query($query);
      La seconda chiamata a mysql_query non ha senso: $query in questo caso non è una stringa contenente una query.
    • Invece di:
      Codice PHP:
      <form action="#" method="post">
      Usa:
      Codice PHP:
      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    • Preparando le query nel modo che stai facendo, sei a rischio di attacchi sql injection. Ti consiglio a questo scopo di utilizzare i preparement statement.


    Ciao!
    Ultima modifica di alemoppo : 18-09-2019 alle ore 19.01.34
    mzanella likes this.

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao alemoppo,

    grazie per il tuo aiuto

    questo che sto costruendo non ho intenzione di metterlo online, gira solo su localhost, quindi niente attachi,

    solo un database personale per consultazione e studio.

    Ricevo questo errore

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in W:\domains\localhost\Cinema\modifica_cinema.php on line 8

    line 8

    Codice PHP:
    $row = mysql_fetch_array ($query);

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,167

    Predefinito

    L'errore evidenzia appunto che la query non è stata eseguita correttamente, quindi il dato restituito dalla mysql_query ipotizzo sia un "FALSE", o "0" (vedi il secondo punto scritto nel mio precedente messaggio). Puoi controllarlo? (puoi usare anche var_dump()).

    Il discorso sulle vecchie funzioni mysql_ è comunque valido: nelle recenti versioni PHP quelle funzioni non sono più supportate.

    Ciao!
    Ultima modifica di alemoppo : 18-09-2019 alle ore 19.43.56

  5. #5
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Sono un po limitato con il php

    speravo in un vostro aiuto piu' concreto.

    Pazienza

  6. #6
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    riposto il codice, modificato un po

    i valori vengono letti dalla query ma non riesco ad inviarli

    ricevo questo tramite eco e print , id e' corretto, uguale all'id attore

    Attenzione! Dati non inseriti!
    SELECT * FROM actor WHERE actor_id=40
    Array ( [id] => 40 )
    ]

    qualcuno mi aiuta a risolvere questo mistero?


    cinema.php (pagina principale attore)

    Codice PHP:
    <a href="javascript:apri('modifica_cinema.php?id=<?php echo $actor_id; ?>')">Modifica</a>
    modifica_cinema.php

    Codice PHP:
    <?php

    require_once("connetti.php");

    $actor_id = $_GET["id"];
    //......immagino che l'id tu lo trasmetta tramite get: $id=_GET['id'];
    $query = mysql_query("SELECT * FROM actor WHERE actor_id=" . (int)$actor_id) or die ("Error in query: " . mysql_error());
    $row = mysql_fetch_array ($query);

    $nome=$row['nome'];
    $aka=$row['aka'];
    ?>


    <form action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . $actor_id; ?>" method="post">
    Nome
    <input name="nome" type="text" id="nome" value="<?php echo $nome;?>"><br />
    Aka
    <textarea name="aka" id="aka"><?php echo $aka;?></textarea><br />
    <input name="modifica" type="submit" id="modifica" value="modifica">
    </form>
    <?php

    if (isset($_POST['modifica']))
    {
    //include "connetti.php";
    //$query = mysql_select_db("xxx", $db);
    if ($query)
    {

    $nome=$_POST['nome'];
    $aka=$_POST['aka'];

    $query=mysql_query("UPDATE actor SET nome='".$_POST['nome']."', aka='".$_POST['aka']." WHERE actor_id=". $actor_id);

    $risultato=mysql_query($query);

    if(
    $risultato) echo "<h2>Congratulazioni! Dati inseriti.</h2>";
    else echo
    "<h2>Attenzione! Dati non inseriti!</h2>";

    } else echo
    "<h2>Errore! Database non selezionato.</h2>";


    }

    echo
    "SELECT * FROM actor WHERE actor_id=". $actor_id . "<br>";
    print_r($_GET)

    ?>
    <br>
    Ultima modifica di blackskyisback : 19-09-2019 alle ore 05.50.53

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,167

    Predefinito

    Non puoi fare così:
    Codice PHP:
    $query=mysql_query("<query>");
    $risultato=mysql_query($query);
    Elimina la seconda mysql_query, fai direttamente:
    Codice PHP:
    $risultato=mysql_query("<query>");

    if(
    $risultato ..)
    Ciao!

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,167

    Predefinito

    Non puoi fare così:
    Codice PHP:
    $query=mysql_query("<query>");
    $risultato=mysql_query($query);
    Elimina la seconda mysql_query, fai direttamente:
    Codice PHP:
    $risultato=mysql_query("<query>");

    if(
    $risultato ..)
    Prova anche a fare la echo di:
    Codice PHP:
    "UPDATE actor SET nome='".$_POST['nome']."', aka='".$_POST['aka']." WHERE actor_id=". $actor_id
    Ciao!

  9. #9
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao alemoppo,

    purtroppo non funziona

    ho provato a cancellare la parola TEST da "performer_aka" (rinominato il campo)

    mi restituisce questo

    come si vede i campi nome e performer_aka sono vuoti

    SELECT * FROM actor WHERE actor_id=40
    Array ( [id] => 40 )
    UPDATE actor SET nome='', performer_aka=' WHERE actor_id=40


    questa e' la modifica (codice completo)

    modifica_cinema.php

    Codice PHP:
    <?php

    require_once("connetti.php");

    $actor_id = $_GET["id"];

    $query = mysql_query("SELECT * FROM actor WHERE actor_id=" . (int)$actor_id) or die ("Error in query: " . mysql_error());
    $row = mysql_fetch_array ($query);

    $nome=$row['nome'];
    $performer_aka=$row['performer_aka'];
    ?>


    <form action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . $actor_id; ?>" method="post">
    Nome
    <input name="nome" type="text" id="nome" value="<?php echo $nome;?>"><br />
    Performer Aka
    <textarea name="performer_aka" id="performer_aka"><?php echo $performer_aka;?></textarea><br />
    <input name="modifica" type="submit" id="modifica" value="modifica">
    </form>
    <?php

    if (isset($_POST['modifica']))
    {
    //include "connetti.php";
    //$query = mysql_select_db("xxx", $db);
    if ($query)
    {

    $nome=$_POST['nome'];
    $performer_aka=$_POST['performer_aka'];

    $query=mysql_query("UPDATE actor SET nome='".$_POST['nome']."', performer_aka='".$_POST['performer_aka']." WHERE actor_id=". $actor_id);



    if(
    $query) echo "<h2>Congratulazioni! Dati inseriti.</h2>";
    else echo
    "<h2>Attenzione! Dati non inseriti!</h2>";

    } else echo
    "<h2>Errore! Database non selezionato.</h2>";


    }

    echo
    "SELECT * FROM actor WHERE actor_id=". $actor_id . "<br>";


    print_r($_GET)

    ?>

    <br>

    <?php echo "UPDATE actor SET nome='".$_POST['nome']."', performer_aka='".$_POST['performer_aka']." WHERE actor_id=". $actor_id ?>
    Ultima modifica di blackskyisback : 19-09-2019 alle ore 10.28.35

  10. #10
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Arrow

    risolto

    un banale errore, spezzettando la query ho capito dove sta il problema



    Codice PHP:
    $query=mysql_query("UPDATE actor SET
    nome='"
    .$_POST['nome']."',
    performer_aka='"
    .$_POST['performer_aka']."
    WHERE actor_id="
    . $actor_id);
    il fix


    Codice PHP:
    performer_aka='".$_POST['performer_aka']."'
    mancava questo '


    posto il codice completo, forse serve a qualcuno

    Codice PHP:
    <?php

    require_once("connetti.php");

    $actor_id = $_GET["id"];
    //......immagino che l'id tu lo trasmetta tramite get: $id=_GET['id'];
    $query = mysql_query("SELECT * FROM actor WHERE actor_id=" . (int)$actor_id) or die ("Error in query: " . mysql_error());
    $row = mysql_fetch_array ($query);

    $nome=$row['nome'];
    $performer_aka=$row['performer_aka'];
    ?>


    <form action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . $actor_id; ?>" method="post">
    Nome: <input name="nome" type="text" id="nome" value="<?php echo $nome;?>"><br />
    <br>
    Performer Aka: <textarea name="performer_aka" id="performer_aka"><?php echo $performer_aka;?></textarea><br />
    <br>
    <center><input name="modifica" type="submit" id="modifica" value="modifica"></center>
    </form>
    <?php

    if (isset($_POST['modifica']))
    {
    //include "connetti.php";
    //$query = mysql_select_db("xxx", $db);
    if ($query)
    {

    $nome=$_POST['nome'];
    $performer_aka=$_POST['performer_aka'];

    $query=mysql_query("UPDATE actor SET
    nome='"
    .$_POST['nome']."',
    performer_aka='"
    .$_POST['performer_aka']."'
    WHERE actor_id="
    . $actor_id);



    if(
    $query) echo "<h2>Congratulazioni! Dati inseriti.</h2>";
    else echo
    "<h2>Attenzione! Dati non inseriti!</h2>";

    } else echo
    "<h2>Errore! Database non selezionato.</h2>";


    }


    ?>
    questo e' aggiuntivo per i controlli

    Codice PHP:
    echo "SELECT * FROM actor WHERE actor_id=". $actor_id . "<br>";


    print_r($_GET)

    <?php echo "UPDATE actor SET nome='".$_POST['nome']."', performer_aka='".$_POST['performer_aka']."' WHERE actor_id=". $actor_id ?>


    grazie a alemoppo per i suoi preziosi suggerimenti
    Ultima modifica di blackskyisback : 19-09-2019 alle ore 12.20.18

  11. #11
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    ho un campo di tipo ENUM con nome status dove sono memorizzati dei valori,

    come devo impostarlo nella form e nella query? (codice sopra)

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,167

    Predefinito

    Mi è impossibile risponderti perché non conosco né il campo dell'enum, né i valori possibili dell'enum.

    In una tabella di questo tipo:
    Codice:
    CREATE TABLE IF NOT EXISTS `numeri_enum` (
      `lista` enum('uno','due','tre') DEFAULT NULL
    );
    Puoi inserire:
    Codice:
    INSERT INTO `test_enum` (`lista`) VALUES ('uno');
    Ciao!

  13. #13
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    veramente mi serviva per update
    forse ho trovato

    un'altra cosa

    ho questo campo, come faccio a settarlo a NULL se e' vuoto?

    Codice PHP:
    <input name="died" type="date" size="10" maxlength="10" id="died" value="<?php echo $died;?>">
    ps: nella form, nel database e' gia NULL di default
    Ultima modifica di blackskyisback : 19-09-2019 alle ore 19.46.16

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,167

    Predefinito

    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    veramente mi serviva per update
    Beh è equivalente.

    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    ho questo campo, come faccio a settarlo a NULL se e' vuoto?
    ps: nella form, nel database e' gia NULL di default
    Puoi o settarlo a NULL tu, oppure non lo specifichi come campo nella query. Per settarlo a NULL potresti fare una cosa del tipo:

    Codice PHP:
    "...nome='".(empty($_POST['died'])?NULL:$_POST['died'])."'..."
    Ciao!

  15. #15
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    questo codice non posso inserirlo, mi da errore

    Codice PHP:
    died='".(empty($_POST['died'])?NULL:$_POST['died'])."'..."

    Codice PHP:
    <?php


    if (isset($_POST['modifica']))
    {
    //include "connetti.php";
    //$query = mysql_select_db("xxx", $db);
    if ($query)
    {

    $nome=$_POST['nome'];
    $performer_aka=$_POST['performer_aka'];
    $website=$_POST['website'];
    $career_status=$_POST['career_status'];
    $birthday=$_POST['birthday'];
    $died=$_POST['died'];

    $query=mysql_query("UPDATE actor SET
    nome='"
    .$_POST['nome']."',
    performer_aka='"
    .$_POST['performer_aka']."',
    website='"
    .$_POST['website']."',
    career_status='"
    .$_POST['career_status']."',
    birthday='"
    .$_POST['birthday']."',
    died='"
    .(empty($_POST['died'])?NULL:$_POST['died'])."'..."
    WHERE actor_id=". $actor_id);



    if(
    $query) echo "<h2>Congratulazioni! Dati inseriti.</h2>";
    else echo "
    <h2>Attenzione! Dati non inseriti!</h2>";

    } else echo "
    <h2>Errore! Database non selezionato.</h2>";


    }

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,167

    Predefinito

    I tre puntini indicano il resto della query, non incollare codice ma cerca di capirlo (se non capisci chiedi). Poi non vedi che tutti i colori del codice sono sfasati perché gli apici sono sono tutti chiusi?

    Se l'errore persiste, qual è l'errore?

    Ciao!

  17. #17
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    incollo per farti capire

    ho modificato con questo

    Codice PHP:
    died='".(empty($_POST['died'])?NULL:$_POST['died'])."'
    risultato, non succede niente,

    il dato iniziale (campo date) era 0000-00-00 ed e' rimasto invariato, anche se lo cancello

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,167

    Predefinito

    Questi problemi di query li risolvi così: stampali (ad esempio con la echo), poi li incolli su SQL in phpMyAdmin e modifichi la query fin quando funziona, quindi torni su PHP e cerchi di renderla uguale.

    Ciao!

  19. #19
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    ho capito, pensavo in un aiuto concreto, mi devo arrangiare da solo

  20. #20
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    ho trovato questo, ma ricevo errore se lo inserisco

    forse qualche tag e' sbagliato o devo togliere qualcosa dal mio

    Codice PHP:

    if (isset($_POST['modifica']))
    {
    if (
    $query)
    {
    $fields = [];
    foreach([
    'nome', 'performer_aka', 'website', 'career_status', 'birthday', 'died'] as $field)
    if (isset(
    $_POST[$field]))
    $fields[] = $field . ' = "' . mysql_escape_string($_POST[$field]) . '"';
    if (!empty(
    $fields))
    $query = mysql_query("UPDATE actor SET " . join(',', $fields) . " WHERE actor_id=" . (int)$actor_id);
    }
    }
    questo e il mio codice

    Codice PHP:
    <?php


    if (isset($_POST['modifica']))
    {
    //include "connetti.php";
    //$query = mysql_select_db("xxx", $db);
    if ($query)
    {

    $nome=$_POST['nome'];
    $performer_aka=$_POST['performer_aka'];
    $website=$_POST['website'];
    $career_status=$_POST['career_status'];
    $birthday=$_POST['birthday'];
    $died=$_POST['died'];

    $query=mysql_query("UPDATE actor SET
    nome='"
    .$_POST['nome']."',
    performer_aka='"
    .$_POST['performer_aka']."',
    website='"
    .$_POST['website']."',
    career_status='"
    .$_POST['career_status']."',
    birthday='"
    .$_POST['birthday']."',
    died='"
    .$_POST['died']."'
    WHERE actor_id="
    . $actor_id);



    if(
    $query) echo "<h2>Congratulazioni! Dati inseriti.</h2>";
    else echo
    "<h2>Attenzione! Dati non inseriti!</h2>";

    } else echo
    "<h2>Errore! Database non selezionato.</h2>";


    }

    echo
    "SELECT * FROM actor WHERE actor_id=". $actor_id . "<br>";


    print_r($_GET)

    ?>

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •