Problema su come far aggiornare i campi su un database Mysql

qwertyy

Nuovo Utente
1 Lug 2018
17
0
1
Salve, il mio problema potrà essere di aiuto a molti.
Il mio codice Php serve ad aggiornare dei campi sul database mysqli

Sono 4 campi: Codice del Lavoro, Data, orario Da / A

il problema è che il form per inserire i dati lo visualizzo, ma all'invio del button mi restituisce una pagina bianca

PHP:
<?php
include '../DB.php';

// $_GET['id'] prende il risultato della sessione precedente
if (isset($_GET['id']) && is_numeric($_GET['id'])) {

  $id = $_GET['id'];


  if (!isset($_POST['aggiorna'])) {
    ?>
HTML:
    <!-- \\\\ \\\\ \\\\ \\\\ \\\\  HTML  //// //// //// //// //// -->
    <style>
    form {
      margin-left: 40%;
      margin-top: 10%;
    }

    b{
      font-family: cursive;
    }
    </style>


    <!--      - - - - - - - - - - -  INSERIRE UN APPUNTAMENTO NELL AGENDA      - - - - - - - - - - - -->
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >

      <!-- DATA (SENZA ORARIO) -->
      <b>Data:</b> <br>
      <input name="data" type="text" placeholder="aaaa/mm/gg" autocomplete="off" style="width: 230px;" maxlength="10" ><br><br>


      <!-- ORARIO DA / A -->
      <table>
        <th align='left'><b>Da:</b></th>
        <th align='left'><b>A:</b></th>
        <tr>
          <td><input name="da" type="time"  style="width: 115px;" value='00:00'></td>
          <td><input name="a"  type="time"  style="width: 115px;" value='00:00'></td>
        </tr>
      </table>




      <!-- LAVORI DA POTER SVOLGERE -->
      <br>  <b>Commesse:</b> <br>
      <select class="work" name="work" style="width: 230px;">
        <option value="null">  </option>
        <?php
        include 'DB.php';
        $query = mysqli_query($conn, "SELECT * FROM commesse");

        while ($row = mysqli_fetch_assoc($query)) {

          echo "<option>" . $row['descrizione_completa'] . "</option>";
        }

        ?>
      </select>
      <br><br><br>

      <input name="Aggiorna" type="submit" value="Salva Data">
    </form>

    <!-- \\\\ \\\\ \\\\ \\\\ \\\\  HTML  //// //// //// //// //// -->
PHP:
  <?php
  }  else{
    $data_non_stringa = $_POST['data'];
    $orario_da = $_POST['da'];
    $orario_a = $_POST['a'];
    $lavoro = $_POST['work'];

    // TOLGO GLI SPAZI E DIVIDO LA STRINGA DI $LAVORO
    list($codiceL, $descrizione) = explode("-", $lavoro);
    $codiceL = trim($codiceL, " ");
    $descrizione = trim($descrizione, " ");

    $query = "UPDATE orari SET
    codiceL = '$codiceL',
    data = '$data_non_stringa',
    da = '$orario_da',
    a = '$orario_a'
    WHERE id = '$id' ";

    // invio la query
    $result = mysqli_query($conn, $query);

    // controllo l'esito
    if (!$result) {
      die("Errore nella query $query: " . mysqli_error($conn));
    }

    echo 'Query eseguita correttamente';
}
}

?>
 

Allegati

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
la pagina bianca fa supporre ci sia un errore di sintassi nel codice php
verifica il log degli errori di php che indica la causa
se non risolvi, fatti vivo

ps, leggere il log é la prima cosa da imparare….

ho cercato di ricostruire il file facendo copia incolla dei 3 spezzoni, ma html non vuole farsi copiare
che ci siano caratteri strani all'interno ????
 
Ultima modifica:

qwertyy

Nuovo Utente
1 Lug 2018
17
0
1
la pagina bianca fa supporre ci sia un errore di sintassi nel codice php
verifica il log degli errori di php che indica la causa
se non risolvi, fatti vivo

ps, leggere il log é la prima cosa da imparare….

ho cercato di ricostruire il file facendo copia incolla dei 3 spezzoni, ma html non vuole farsi copiare
che ci siano caratteri strani all'interno ????
non è problema di HTML perchè il form lo visualizza, è sicuramente la logica php che è sbagliata e se qualcuno puo darmi una mano
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
io trovo 2 errori,

il primo é di "grammatica" e lo avresti dovuto vedere nel log di php ( qualche volta fidati dei suggerimenti )
Codice:
<input name="Aggiorna" type="submit" value="Salva Data">
if (!isset($_POST['aggiorna'])) {
il nome "Aggiorna" ed il nome "aggiorna" sono due entità diverse per php

il secondo é un errore di logica, questo é il tuo codice,
PHP:
if (isset($_GET['id']) && is_numeric($_GET['id']))
{
    ......

    if (!isset($_POST['aggiorna']))
    {
        ......
    }
    else
    {
        ......
    }
}
richiami lo script passando un "ID" ed esce il form,
ma quando clicchi il bottone l' ID non c'é più .... e l'else non viene visto perchè é interno
quindi lo script termina senza fare nulla

penso che ti convenga tenere come controllo più esterno "if (!isset($_POST['aggiorna']))"
ed il controllo sulla GET interno

ma questo é il suggerimento di chi non conosce il contesto in cui lavora lo script
 
Ultima modifica:

qwertyy

Nuovo Utente
1 Lug 2018
17
0
1
io trovo 2 errori,

il primo é di "grammatica" e lo avresti dovuto vedere nel log di php ( qualche volta fidati dei suggerimenti )
Codice:
<input name="Aggiorna" type="submit" value="Salva Data">
if (!isset($_POST['aggiorna'])) {
il nome "Aggiorna" ed il nome "aggiorna" sono due entità diverse per php

il secondo é un errore di logica, questo é il tuo codice,
PHP:
if (isset($_GET['id']) && is_numeric($_GET['id']))
{
    ......

    if (!isset($_POST['aggiorna']))
    {
        ......
    }
    else
    {
        ......
    }
}
richiami lo script passando un "ID" ed esce il form,
ma quando clicchi il bottone l' ID non c'é più .... e l'else non viene visto perchè é interno
quindi lo script termina senza fare nulla

penso che ti convenga tenere come controllo più esterno "if (!isset($_POST['aggiorna']))"
ed il controllo sulla GET interno

ma questo é il suggerimento di chi non conosce il contesto in cui lavora lo script
1) quello l ho gia corretto oggi stesso ('aggiorna')
2) non so come visualizzare il log degli errori infatti mi sto cercando di informare da dopo la tua risposta ma ancora capisco
3)* adesso provo a cambiare la logica....


* neanche cambiando la logica mi fa l' update , adesso cerco di capire riguardo il log
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
per me la logica migliore dovrebbe essere questa,
PHP:
if (!isset($_POST['aggiorna']))
{
    // non ricevo dati provenienti dal form

    if (isset($_GET['id']) && is_numeric($_GET['id']))
    {
        // ho ricevuto l'ID

        $id = $_GET['id'];

        visualizzo il form

    }
    else
    {
        // non ricevo dati provenienti dal form
        // e non ricevo l' ID
        // devo gestire un errore
    }
}
else
{
    // ho ricevuto i dati dal form

    // dovrei controllare la correttezza e gestire l'eventuale errore

    aggiorno il db
}
 

qwertyy

Nuovo Utente
1 Lug 2018
17
0
1
per me la logica migliore dovrebbe essere questa,
PHP:
if (!isset($_POST['aggiorna']))
{
    // non ricevo dati provenienti dal form

    if (isset($_GET['id']) && is_numeric($_GET['id']))
    {
        // ho ricevuto l'ID

        $id = $_GET['id'];

        visualizzo il form

    }
    else
    {
        // non ricevo dati provenienti dal form
        // e non ricevo l' ID
        // devo gestire un errore
    }
}
else
{
    // ho ricevuto i dati dal form

    // dovrei controllare la correttezza e gestire l'eventuale errore

    aggiorno il db
}
come visualizzio l'error_log ?
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
avendo lasciato le impostazioni originali in php.ini,
con windows, il log lo trovo in "C:\Windows\Temp"
upload_2018-7-3_22-21-43.png

la versione php che uso é la 5.4.9 da cui deriva il nome

se vuoi cambiare la destinazione del log, puoi inserire in testa allo script il codice che segue
PHP:
error_reporting(-1);
ini_set('display_errors', FALSE);
ini_set('log_errors', TRUE);
ini_set('error_log', '../errors/_PhpErrors.log');
avendo cura di indirizzare il file in una cartella con i diritti di scrittura ....
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
se vuoi seguire la sequenza delle operazioni di uno script,
puoi disseminarlo di istruzioni tipo
PHP:
error_log("messaggio da visualizzare : " . $variabile_da_visualizzare, 0);
che verranno registrate nel log di php .... (senza disturbare il form visualizzato)
 

qwertyy

Nuovo Utente
1 Lug 2018
17
0
1
se vuoi seguire la sequenza delle operazioni di uno script,
puoi disseminarlo di istruzioni tipo
PHP:
error_log("messaggio da visualizzare : " . $variabile_da_visualizzare, 0);
che verranno registrate nel log di php .... (senza disturbare il form visualizzato)
ok perfetto, il file di error_log l'ho trovato a caso in apache... adesso controllo se ci siano errori ma ne dubito
 

qwertyy

Nuovo Utente
1 Lug 2018
17
0
1
se vuoi seguire la sequenza delle operazioni di uno script,
puoi disseminarlo di istruzioni tipo
PHP:
error_log("messaggio da visualizzare : " . $variabile_da_visualizzare, 0);
che verranno registrate nel log di php .... (senza disturbare il form visualizzato)
controllando il log di errore, mi segnalava errore in una riga (nel mio attuale codice è la 65) nell inclusione del DB sbagliata...l 'ho subito corretta ma niente da fare....sempre la stessa cosa
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
questo è il codice con la logica cambiata,
non ho mysql per cui ho aggiustato le option ....
e l'id l'ho scritto nel codice ma andrà solo tolto,
prova a leggerlo, ci sono ancora due errori uno di sintassi e l'ID da gestire per farlo passare allo script php
Codice:
PHP Notice:  Undefined offset: 1 in C:\Web_Sites\__Test\PHP\TEST\TEST\_test.php on line 48
PHP Notice:  Undefined variable: id in C:\Web_Sites\__Test\PHP\TEST\TEST\_test.php on line 59
l'id puoi scriverlo in un campo hidden del form in modo da leggerlo da $_POST e risolvi il problema
l'errore alla linea 48 vedi tu come aggiustarlo
ti posto il codice
PHP:
<?php
// include '../DB.php';    // se messa all'inizio non occorre ripeterla nello script ....

if (!isset($_POST['aggiorna']))
{
    // non ricevo dati provenienti dal form

    $_GET['id']=15; // supponiamo lo abbia ricevuto dalla url

    if (isset($_GET['id']) && is_numeric($_GET['id']))
    {
        // ho ricevuto l'ID

        $id = $_GET['id'];

        $opt = "";
/*
        $query = mysqli_query($conn, "SELECT * FROM commesse");
        while ($row = mysqli_fetch_assoc($query))
        {
            $opt .= '<option value="'.$row['descrizione_completa'].'">'.$row['descrizione_completa'].'</option>'
        }
*/
        $opt = '<option value="c1">commessa 1</option>'
             . '<option value="c2">commessa 2</option>';

        display_form($opt);
    }
    else
    {
        // non ricevo dati provenienti dal form
        // e non ricevo l' ID
        // devo gestire un errore
    }
}
else
{
    // ho ricevuto i dati dal form

    // dovrei controllare la correttezza e gestire l'eventuale errore

    $data_non_stringa = $_POST['data'];
    $orario_da        = $_POST['da'];
    $orario_a         = $_POST['a'];
    $lavoro           = $_POST['work'];

    // TOLGO GLI SPAZI E DIVIDO LA STRINGA DI $LAVORO
    list($codiceL, $descrizione) = explode("-", $lavoro);
    $codiceL = trim($codiceL, " ");
    $descrizione = trim($descrizione, " ");

    $query = "
UPDATE orari SET
codiceL = '$codiceL',
data = '$data_non_stringa',
da = '$orario_da',
a = '$orario_a'
WHERE id = '$id'
";
    // invio la query
    $result = mysqli_query($conn, $query);

    // controllo l'esito
    if (!$result)
    {
        die("Errore nella query $query: " . mysqli_error($conn));
    }
    echo 'Query eseguita correttamente';
}

function display_form($opt)
{
?>
    <style>
    form {
      margin-left: 40%;
      margin-top: 10%;
    }
    b{
      font-family: cursive;
    }
    </style>
    <!--      - - - - - - - - - - -  INSERIRE UN APPUNTAMENTO NELL AGENDA      - - - - - - - - - - - -->
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
      <!-- DATA (SENZA ORARIO) -->
      <b>Data:</b> <br />
      <input name="data" type="text" placeholder="aaaa/mm/gg" autocomplete="off" style="width: 230px;" maxlength="10" ><br /><br />

      <!-- ORARIO DA / A -->
      <table>
        <th align='left'><b>Da:</b></th>
        <th align='left'><b>A:</b></th>
        <tr>
          <td><input name="da" type="time"  style="width: 115px;" value='00:00'></td>
          <td><input name="a"  type="time"  style="width: 115px;" value='00:00'></td>
        </tr>
      </table>

      <!-- LAVORI DA POTER SVOLGERE -->
      <br />  <b>Commesse:</b> <br />
      <select class="work" name="work" style="width: 230px;">
        <option value="null">  </option>
        <?php echo $opt; ?>
      </select>
      <br /><br /><br />
      <input type="submit" name="aggiorna" value="Salva Data" />
    </form>
<?php
}
?>
penso che dovresti cavartela a questo punto perchè anche dopo il "submit" hai id a disposizione
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
infatti ....

PHP:
      <input name="myID" type="hidden" value="<?php echo $id; ?>" />
risultato

Codice:
[03-Jul-2018 23:24:23 Europe/Rome] query :
UPDATE orari SET
codiceL = 'c1',
data = '2018/07/03',
da = '00:00',
a = '23:59'
WHERE id = '15'

[03-Jul-2018 23:24:23 Europe/Rome] PHP Fatal error:  Call to undefined function mysqli_query()
 

qwertyy

Nuovo Utente
1 Lug 2018
17
0
1
infatti ....

PHP:
      <input name="myID" type="hidden" value="<?php echo $id; ?>" />
risultato

Codice:
[03-Jul-2018 23:24:23 Europe/Rome] query :
UPDATE orari SET
codiceL = 'c1',
data = '2018/07/03',
da = '00:00',
a = '23:59'
WHERE id = '15'

[03-Jul-2018 23:24:23 Europe/Rome] PHP Fatal error:  Call to undefined function mysqli_query()
sei stato utilissimo...adesso funziona, l'una cosa che devo aggiustare domani è che l'id ancora non lo legge...ma domani lo aggiusterò....grazie mille
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
ti posto il codice con il passaggio dell'id attraverso il form,
PHP:
<?php
include '../DB.php';    // se messa all'inizio non occorre ripeterla nello script ....

if (!isset($_POST['aggiorna']))
{
    // non ricevo dati provenienti dal form

    $_GET['id']=15; // supponiamo lo abbia ricevuto dalla url

    if (isset($_GET['id']) && is_numeric($_GET['id']))
    {
        // ho ricevuto l'ID

        $id = $_GET['id'];

        $opt = "";
/*
        $query = mysqli_query($conn, "SELECT * FROM commesse");
        while ($row = mysqli_fetch_assoc($query))
        {
            $opt .= '<option value="'.$row['descrizione_completa'].'">'.$row['descrizione_completa'].'</option>'
        }
*/
        $opt = '<option value="c1">commessa 1</option>'
             . '<option value="c2">commessa 2</option>';

        display_form();
    }
    else
    {
        // non ricevo dati provenienti dal form
        // e non ricevo l' ID
        // devo gestire un errore
    }
}
else
{
    // ho ricevuto i dati dal form

    // dovrei controllare la correttezza e gestire l'eventuale errore

    $data_non_stringa = $_POST['data'];
    $orario_da        = $_POST['da'];
    $orario_a         = $_POST['a'];
    $lavoro           = $_POST['work'];
    $id               = $_POST['myID'];

    // TOLGO GLI SPAZI E DIVIDO LA STRINGA DI $LAVORO
    list($codiceL, $descrizione) = explode("-", $lavoro);
    $codiceL = trim($codiceL, " ");
    $descrizione = trim($descrizione, " ");

    $query = "
UPDATE orari SET
codiceL = '$codiceL',
data = '$data_non_stringa',
da = '$orario_da',
a = '$orario_a'
WHERE id = '$id'
";
    error_log("query : " . $query, 0);
    // invio la query
    $result = mysqli_query($conn, $query);

    // controllo l'esito
    if (!$result)
    {
        die("Errore nella query $query: " . mysqli_error($conn));
    }
    echo 'Query eseguita correttamente';
}

function display_form()
{
global $id, $opt;
?>
    <style>
    form {
      margin-left: 40%;
      margin-top: 10%;
    }
    b{
      font-family: cursive;
    }
    </style>
    <!--      - - - - - - - - - - -  INSERIRE UN APPUNTAMENTO NELL AGENDA      - - - - - - - - - - - -->
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
      <!-- DATA (SENZA ORARIO) -->
      <b>Data:</b> <br />
      <input name="data" type="text" placeholder="aaaa/mm/gg" autocomplete="off" style="width: 230px;" maxlength="10" ><br /><br />

      <!-- ORARIO DA / A -->
      <table>
        <th align='left'><b>Da:</b></th>
        <th align='left'><b>A:</b></th>
        <tr>
          <td><input name="da" type="time"  style="width: 115px;" value='00:00'></td>
          <td><input name="a"  type="time"  style="width: 115px;" value='00:00'></td>
        </tr>
      </table>

      <!-- LAVORI DA POTER SVOLGERE -->
      <br />  <b>Commesse:</b> <br />
      <select class="work" name="work" style="width: 230px;">
        <option value="null">  </option>
        <?php echo $opt; ?>
      </select>
      <br /><br /><br />
      <input name="myID" type="hidden" value="<?php echo $id; ?>" />
      <input type="submit" name="aggiorna" value="Salva Data" />
    </form>
<?php
}
?>
a me rimane solo l'errore alla riga 49 ….
 

qwertyy

Nuovo Utente
1 Lug 2018
17
0
1
ti posto il codice con il passaggio dell'id attraverso il form,
PHP:
<?php
include '../DB.php';    // se messa all'inizio non occorre ripeterla nello script ....

if (!isset($_POST['aggiorna']))
{
    // non ricevo dati provenienti dal form

    $_GET['id']=15; // supponiamo lo abbia ricevuto dalla url

    if (isset($_GET['id']) && is_numeric($_GET['id']))
    {
        // ho ricevuto l'ID

        $id = $_GET['id'];

        $opt = "";
/*
        $query = mysqli_query($conn, "SELECT * FROM commesse");
        while ($row = mysqli_fetch_assoc($query))
        {
            $opt .= '<option value="'.$row['descrizione_completa'].'">'.$row['descrizione_completa'].'</option>'
        }
*/
        $opt = '<option value="c1">commessa 1</option>'
             . '<option value="c2">commessa 2</option>';

        display_form();
    }
    else
    {
        // non ricevo dati provenienti dal form
        // e non ricevo l' ID
        // devo gestire un errore
    }
}
else
{
    // ho ricevuto i dati dal form

    // dovrei controllare la correttezza e gestire l'eventuale errore

    $data_non_stringa = $_POST['data'];
    $orario_da        = $_POST['da'];
    $orario_a         = $_POST['a'];
    $lavoro           = $_POST['work'];
    $id               = $_POST['myID'];

    // TOLGO GLI SPAZI E DIVIDO LA STRINGA DI $LAVORO
    list($codiceL, $descrizione) = explode("-", $lavoro);
    $codiceL = trim($codiceL, " ");
    $descrizione = trim($descrizione, " ");

    $query = "
UPDATE orari SET
codiceL = '$codiceL',
data = '$data_non_stringa',
da = '$orario_da',
a = '$orario_a'
WHERE id = '$id'
";
    error_log("query : " . $query, 0);
    // invio la query
    $result = mysqli_query($conn, $query);

    // controllo l'esito
    if (!$result)
    {
        die("Errore nella query $query: " . mysqli_error($conn));
    }
    echo 'Query eseguita correttamente';
}

function display_form()
{
global $id, $opt;
?>
    <style>
    form {
      margin-left: 40%;
      margin-top: 10%;
    }
    b{
      font-family: cursive;
    }
    </style>
    <!--      - - - - - - - - - - -  INSERIRE UN APPUNTAMENTO NELL AGENDA      - - - - - - - - - - - -->
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
      <!-- DATA (SENZA ORARIO) -->
      <b>Data:</b> <br />
      <input name="data" type="text" placeholder="aaaa/mm/gg" autocomplete="off" style="width: 230px;" maxlength="10" ><br /><br />

      <!-- ORARIO DA / A -->
      <table>
        <th align='left'><b>Da:</b></th>
        <th align='left'><b>A:</b></th>
        <tr>
          <td><input name="da" type="time"  style="width: 115px;" value='00:00'></td>
          <td><input name="a"  type="time"  style="width: 115px;" value='00:00'></td>
        </tr>
      </table>

      <!-- LAVORI DA POTER SVOLGERE -->
      <br />  <b>Commesse:</b> <br />
      <select class="work" name="work" style="width: 230px;">
        <option value="null">  </option>
        <?php echo $opt; ?>
      </select>
      <br /><br /><br />
      <input name="myID" type="hidden" value="<?php echo $id; ?>" />
      <input type="submit" name="aggiorna" value="Salva Data" />
    </form>
<?php
}
?>
a me rimane solo l'errore alla riga 49 ….

[/QUOTE] A te da errore alla 49 perche non legge sicuramente la lista che ho creato per separare gli spazi in Quanto hai commentato quel pezzo di codice
ti posto il codice con il passaggio dell'id attraverso il form,
PHP:
<?php
include '../DB.php';    // se messa all'inizio non occorre ripeterla nello script ....

if (!isset($_POST['aggiorna']))
{
    // non ricevo dati provenienti dal form

    $_GET['id']=15; // supponiamo lo abbia ricevuto dalla url

    if (isset($_GET['id']) && is_numeric($_GET['id']))
    {
        // ho ricevuto l'ID

        $id = $_GET['id'];

        $opt = "";
/*
        $query = mysqli_query($conn, "SELECT * FROM commesse");
        while ($row = mysqli_fetch_assoc($query))
        {
            $opt .= '<option value="'.$row['descrizione_completa'].'">'.$row['descrizione_completa'].'</option>'
        }
*/
        $opt = '<option value="c1">commessa 1</option>'
             . '<option value="c2">commessa 2</option>';

        display_form();
    }
    else
    {
        // non ricevo dati provenienti dal form
        // e non ricevo l' ID
        // devo gestire un errore
    }
}
else
{
    // ho ricevuto i dati dal form

    // dovrei controllare la correttezza e gestire l'eventuale errore

    $data_non_stringa = $_POST['data'];
    $orario_da        = $_POST['da'];
    $orario_a         = $_POST['a'];
    $lavoro           = $_POST['work'];
    $id               = $_POST['myID'];

    // TOLGO GLI SPAZI E DIVIDO LA STRINGA DI $LAVORO
    list($codiceL, $descrizione) = explode("-", $lavoro);
    $codiceL = trim($codiceL, " ");
    $descrizione = trim($descrizione, " ");

    $query = "
UPDATE orari SET
codiceL = '$codiceL',
data = '$data_non_stringa',
da = '$orario_da',
a = '$orario_a'
WHERE id = '$id'
";
    error_log("query : " . $query, 0);
    // invio la query
    $result = mysqli_query($conn, $query);

    // controllo l'esito
    if (!$result)
    {
        die("Errore nella query $query: " . mysqli_error($conn));
    }
    echo 'Query eseguita correttamente';
}

function display_form()
{
global $id, $opt;
?>
    <style>
    form {
      margin-left: 40%;
      margin-top: 10%;
    }
    b{
      font-family: cursive;
    }
    </style>
    <!--      - - - - - - - - - - -  INSERIRE UN APPUNTAMENTO NELL AGENDA      - - - - - - - - - - - -->
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
      <!-- DATA (SENZA ORARIO) -->
      <b>Data:</b> <br />
      <input name="data" type="text" placeholder="aaaa/mm/gg" autocomplete="off" style="width: 230px;" maxlength="10" ><br /><br />

      <!-- ORARIO DA / A -->
      <table>
        <th align='left'><b>Da:</b></th>
        <th align='left'><b>A:</b></th>
        <tr>
          <td><input name="da" type="time"  style="width: 115px;" value='00:00'></td>
          <td><input name="a"  type="time"  style="width: 115px;" value='00:00'></td>
        </tr>
      </table>

      <!-- LAVORI DA POTER SVOLGERE -->
      <br />  <b>Commesse:</b> <br />
      <select class="work" name="work" style="width: 230px;">
        <option value="null">  </option>
        <?php echo $opt; ?>
      </select>
      <br /><br /><br />
      <input name="myID" type="hidden" value="<?php echo $id; ?>" />
      <input type="submit" name="aggiorna" value="Salva Data" />
    </form>
<?php
}
?>
a me rimane solo l'errore alla riga 49 ….
ti da errore alla riga 49 perchè hai commentato il codice su cui la riga ci lavora, ovvero l'utente clicca su un option e con php separo la stringa

PHP:
if (isset($_GET['id']) && is_numeric($_GET['id']))
    {
        // ho ricevuto l'ID

        $id = $_GET['id'];

        $opt = "";

        $query = mysqli_query($conn, "SELECT * FROM commesse");
        while ($row = mysqli_fetch_assoc($query))
        {
            $opt .= '<option value="'.$row['descrizione_completa'].'">'.$row['descrizione_completa'].'</option>'
        }

        display_form();
    }