[PHP] Errore UPDATE su tabella DB

luigi.paciolla

Utente Attivo
13 Dic 2017
36
0
6
23
Salve a tutti, io ed alcuni miei amici stiamo sviluppando un sito-web per un progetto universitario che sia in grado di gestire un Team di Formula 1. Abbiamo però vari problemi (che magari vi chiederò in seguito) ma quello che più ci affligge e l'UPDATE.
In pratica, abbiamo una tabella nel database denominata "Piloti" e all'interno vi sono gli attributi "Codice" , "Nome", "Cognome", "Codice_Fiscale", "Luogo_Nascita", "Data_Nascita", "Campionati_V", "Vittorie". Di cui Codice è l'ID identificativo del pilota ed è chiave primaria. Succede che se il campo Codice contiene solo numeri (ES. 01) la pagina UPDATE viene mostrata e la modifica funziona.
Nel caso in cui il campo Codice contiene valori come P001, mi vengono mostrati degli errori, ovvero:
Codice:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\lsbteam.it\update_piloti.php on line
e un errore di questo tipo per ogni attributo da modificare, di cui vi allego anche stamp
err.PNG
:
Codice:
Notice: Undefined variable: Nome in C:\wamp64\www\lsbteam.it\update_piloti.php on line 108 Call Stack #TimeMemoryFunctionLocation 10.0008255312{main}( )...\update_piloti.php:0 ">
Notice: Undefined variable: Cognome in C:\wamp64\www\lsbteam.it\update_piloti.php on line 109 Call Stack #TimeMemoryFunctionLocation 10.0008255312{main}( )...\update_piloti.php:0 ">
Notice: Undefined variable: Codice_Fiscale in C:\wamp64\www\lsbteam.it\update_piloti.php on line 110 Call Stack #TimeMemoryFunctionLocation 10.0008255312{main}( )...\update_piloti.php:0 ">
Il codice php che usiamo per l'update è il seguente:
PHP:
<?php
// connessione al database
include_once("config.php");

if(isset($_POST['Aggiorna']))
{   

    $Codice = mysqli_real_escape_string($mysqli, $_POST['Codice']);
    
    $Nome = mysqli_real_escape_string($mysqli, $_POST['Nome']);
    $Cognome = mysqli_real_escape_string($mysqli, $_POST['Cognome']);
    $Codice_Fiscale = mysqli_real_escape_string($mysqli, $_POST['Codice_Fiscale']);
    $Luogo_Nascita = mysqli_real_escape_string($mysqli, $_POST['Luogo_Nascita']);   
    $Data_Nascita = mysqli_real_escape_string($mysqli, $_POST['Data_Nascita']);   
    $Campionati_V = mysqli_real_escape_string($mysqli, $_POST['Campionati_V']);   
    $Vittorie = mysqli_real_escape_string($mysqli, $_POST['Vittorie']);   
    
    
    // check dei campi vuoti
    if(empty($Nome) || empty($Cognome) || empty($Codice_Fiscale) || empty($Luogo_Nascita) || empty($Data_Nascita)
        || empty($Campionati_V) || empty($Vittorie)) {   
        
        if(empty($Nome)) {
            echo "<font color='red'>Il campo Nome e' vuoto.</font><br/>";
        }
        
        if(empty($Cognome)) {
            echo "<font color='red'>Il campo Cognome e' vuoto</font><br/>";
        }
        
        if(empty($Codice_Fiscale)) {
            echo "<font color='red'>Il campo Codice Fiscale e' vuoto</font><br/>";
        }       
        
        if(empty($Luogo_Nascita)) {
            echo "<font color='red'>Inserire Luogo di Nascita.</font><br/>";
        }
        
        if(empty($Data_Nascita)) {
            echo "<font color='red'>Inserire Data di Nascita</font><br/>";
        }
        
        if(empty($Campionati_V)) {
            echo "<font color='red'>Inserire numero di Campionati Vinti</font><br/>";
        }   
        
        if(empty($Vittorie)) {
        echo "<font color='red'>Inserire numero di Vittorie</font><br/>";
        }
    } else {   
        //update tabelle
        $result = mysqli_query($mysqli, "UPDATE piloti SET Nome='$Nome',Cognome='$Cognome',Codice_Fiscale='$Codice_Fiscale',
        Luogo_Nascita='$Luogo_Nascita', Data_Nascita='$Data_Nascita', Campionati_V='$Campionati_V', Vittorie='$Vittorie' WHERE Codice=$Codice");
        
        //torna a index.php
        header("Location: index.php");
    }
}
?>
<?php
//prendo ID da url
$Codice = $_GET['Codice'];

//seleziona
$result = mysqli_query($mysqli, "SELECT * FROM piloti WHERE Codice=$Codice");

while($res = mysqli_fetch_array($result))
{
    $Nome = $res['Nome'];
    $Cognome = $res['Cognome'];
    $Codice_Fiscale = $res['Codice_Fiscale'];
    $Luogo_Nascita = $res['Luogo_Nascita'];   
    $Data_Nascita = $res['Data_Nascita'];   
    $Campionati_V = $res['Campionati_V'];   
    $Vittorie = $res['Vittorie'];   
}
?>
Per prelevare l'ID il codice è questo:
HTML:
<a href=\"update_piloti.php?Codice=$res[Codice]\">Modifica</a> | <a href=\"delete.php?Codice=$res[Codice]\" onClick=\"return confirm('Sei sicuro di voler eliminare?')\">Elimina</a>
Mentre il codice HTML del form che usiamo è il seguente :
HTML:
<form name="form1" method="post" action="update_piloti.php">
                                    <input type="text" name="Nome" value="<?php echo $Nome;?>"><br>
                                    <input type="text" name="Cognome" value="<?php echo $Cognome;?>"><br>
                                    <input type="text" name="Codice_Fiscale" value="<?php echo $Codice_Fiscale;?>"><br>
                                    <input type="text" name="Luogo_Nascita" value="<?php echo $Luogo_Nascita;?>"><br>
                                    <input type="text" name="Data_Nascita" value="<?php echo $Data_Nascita;?>"><br>
                                    <input type="text" name="Campionati_V" value="<?php echo $Campionati_V;?>"><br>
                                    <input type="text" name="Vittorie" value="<?php echo $Vittorie;?>"><br>
                                    <input type="hidden" name="Codice" value=<?php echo $_GET['Codice'];?>><br>
                                    <input type="submit" name="Aggiorna" value="Aggiorna">
                        </form>
Secondo voi dov'è che sbagliamo ? Spero di essere stato più completo possibile, così da permettervi di capire meglio dov'è il problema. Grazie mille a tutti in anticipo!
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
se il codice è alfanumerico, va indicato con gli apici nella clausola where (lettura e update)
WHERE Codice='$Codice'"
vedi se è sufficiente a risolvere
 

luigi.paciolla

Utente Attivo
13 Dic 2017
36
0
6
23
Ciao Marino51 e grazie per la risposta. Ho fatto come hai detto è in parte il problema sembra risolto. C'è ancora un ultimo problema, ovvero che se lascio vuoto un campo della tabella update perché voglio che sia NULL, mi restituisce due errori:
sulla linea 62:
Codice:
 Notice: Undefined index: Codice in C:\wamp64\www\lsbteam.it\update_piloti.php on line 62
che corrisponde al codice php:
PHP:
$Codice = $_GET['Codice'];
e sulla linea 115:
Codice:
 Notice: Undefined index: Codice in C:\wamp64\www\lsbteam.it\update_piloti.php on line 115
che corrisponde al codice html:
HTML:
<input type="hidden" name="Codice" value=<?php echo $_GET['Codice'];?>><br>
Come posso risolvere ? :(
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
conviene sempre controllare i GET, tra l'altro sempre potenzialmente pericolosi
PHP:
//....
if(isset($_GET['Codice'])){$Codice = $_GET['Codice'];}else{$Codice ="";}//o l'operatore ternario
//...
poi
PHP:
<input type="hidden" name="Codice" value=<?php echo $Codice;?>><br>
ci starebbe bene anche il controllo con un preg_match con l'adeguato pattern per verificare la correttezza di 'codice'
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
se lascio vuoto un campo della tabella update perché voglio che sia NULL, mi restituisce due errori:
ad integrazione di quanto suggerisce @borgo italia ,

index.php genera
<a href=\"update_piloti.php?Codice=$res[Codice]\">Modifica</a> | <a......

viene attivato lo script "update_piloti.php" che non trovando $_POST['Aggiorna']
legge il codice dalla GET e visualizza i dati per la modifica

lo stesso script viene attivato dal form aggiornando il db e ritornando ad index.php

se non ho interpretato male la sequenza,

il "codice" non può mai essere null perchè è usato per la ricerca nel db (WHERE)
e perchè lo script prevede di gestire (form e modifica) un solo pilota alla volta

metterei quindi un controllo nella sequenza per segnalare la mancanza

PHP:
if(isset($_POST['Aggiorna']))
{  
....
        header("Location: index.php");
    }
}
else
{
    if(isset($_GET['Codice']))
    {  
        $Codice = $_GET['Codice'];

        //seleziona
        $result = mysqli_query($mysqli, "SELECT * FROM piloti WHERE Codice='$Codice'");

        while($res = mysqli_fetch_array($result))
        {
        .........
        }
?>
        <form name="form1" method="post" action="update_piloti.php">
            <input type="text" name="Nome" value="<?php echo $Nome;?>"><br>
            .....
            <input type="hidden" name="Codice" value=<?php echo $Codice;?>><br>
            <input type="submit" name="Aggiorna" value="Aggiorna">
        </form>
<?php
    }
    else
    {
        echo "non hai indicato il codice del pilota";
    }
}
in più nello script è previsto che i campi non possano essere null per questa condizione
PHP:
    if(empty($Nome) || empty($Cognome) || empty($Codice_Fiscale) || empty($Luogo_Nascita) || empty($Data_Nascita)
        || empty($Campionati_V) || empty($Vittorie)) {
che non esegue l'update
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
@macus_adi
mi sembra di capire una cosa estremamente importante,

PHP:
self::$list=self::$CI->db->list_fields( $table);
recuperando i campi della tabella direttamente dal db,
si crea un disallineamento tra la struttura del database e l'applicazione
ovvero le applicazioni vengono messe fuori uso alla prima modifica di una tabella

continuo a sostenere che il codice andrebbe specificato
PHP:
  $sql  = "insert into tabella "
 . "(campo1,campo3,campo2)"
 . " values "
 . "(?"  // $tab['campo1']
 . ",?"  // $tab['campo3']
 . ",?)"; // $tab['campo2']

  $dbresult = $db->query($sql, array($tab['campo1'], $tab['campo3'], $tab['campo2']));
variando una tabella nel database e consentendo il valore null, le applicazioni esistenti continuano a funzionare,

con cio che hai proposto, SI SCHIANTANO ! (se non rincorri le applicazioni con le modifiche)

ps, esempio con una insert ma identico ragionamento per select e update ed altri comandi che prevedano elenchi di nomi
 
Ultima modifica:

luigi.paciolla

Utente Attivo
13 Dic 2017
36
0
6
23
Grazie mille, il problema è stato risolto! Ultima cosa, vorrei che ad ogni aggiornamento effettuato con successo compare a video un messaggio del tipo "Aggiornamento effettuato con successo!". Rispetto al codice che vi ho già passato, che codice dovrei integrare ? e dove ? Grazie ancora!!
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
Ciò da te postato è inflessibile, la query è quella basta, se necessiti di un campo aggiuntivo rincorri i codici dell'applicazione modificando di qua e di la
certo che è inflessibile ma mi assicura sempre la coerenza tra l'applicazione e la struttura del database
e se devo aggiungere un campo a una tabella, le applicazioni che lo gestiscono, sono sicuramente da modificare, non foss'altro per i controlli da applicare ...

massima bellezza del codice verso massima sicurezza (teorie)
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
Scusa il fastidio, potresti scrivermi queste righe di codice ? Te ne sarei grato!
nallo script update_piloti.php puoi variare,
PHP:
<?php
        //torna a index.php con ok
        header('Location: index.php?ris=ok');


        //echo "non hai indicato il codice del pilota";
        //torna a index.php con errore
        //header('Location: index.php?ris=no');
?>
in index.php inserisci e visualizzi il messaggio dove è meglio,
PHP:
<?php

if ( empty($_GET['ris']) )      $update = "";
elseif ( $_GET['ris'] == "ok" ) $update = "aggiornamento riuscito";
elseif ( $_GET['ris'] == "no" ) $update = "aggiornamento NON riuscito";
else                            $update = "";

echo $update;

?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
eliminate voi i post o devo eliminarli io?
un'altra cosa, il forum serve a risolvere (o almeno di cercare a) i problemi degli utenti non per far sfoggio della propria esperienza
 

luigi.paciolla

Utente Attivo
13 Dic 2017
36
0
6
23
Grazie @marino51 . Volevo chiedervi ancora, per l'Update di una tabella che presenta 2 chiavi esterne, ho messo delle condizioni if ed else nel codice php prima dell'inizio del tag <html>. Vi riporto il codice
PHP:
<?php
// including the database connection file
include_once("config.php");

if(isset($_POST['Aggiorna']))
{   

    $Codice = mysqli_real_escape_string($mysqli, $_POST['Codice']);
    
    $Nome = mysqli_real_escape_string($mysqli, $_POST['Nome']);
    $Cognome = mysqli_real_escape_string($mysqli, $_POST['Cognome']);
    $Codice_Fiscale = mysqli_real_escape_string($mysqli, $_POST['Codice_Fiscale']);
    $Data_Nascita = mysqli_real_escape_string($mysqli, $_POST['Data_Nascita']);   
    $Luogo_Nascita = mysqli_real_escape_string($mysqli, $_POST['Luogo_Nascita']);
    $Tipo = mysqli_real_escape_string($mysqli, $_POST['Tipo']);
    $Nome_T = mysqli_real_escape_string($mysqli, $_POST['Nome_T']);
    $ID_Auto = mysqli_real_escape_string($mysqli, $_POST['ID_Auto']);

    
    
    // checking empty fields
    if(empty($Nome) || empty($Cognome) || empty($Codice_Fiscale)){
        {   
        
        if(empty($Nome)) {
            echo "<font color='red'>Inserire il Nome.</font><br/>";
        }
        
        if(empty($Cognome)) {
            echo "<font color='red'>Inserire il Cognome.</font><br/>";
        }
        
        if(empty($Codice_Fiscale)) {
            echo "<font color='red'>Inserire Codice Fiscale.</font><br/>";
        }       

    }
        if(($Nome_T == "null")and($ID_Auto == "null")){
                $result = mysqli_query ($mysqli, "UPDATE specialisti set Codice='.$Codice.', Nome='.$Nome.', Cognome='.$Cognome.', Codice_Fiscale='.$CF.', Data_Nascita='.$Data_Nascita.', Luogo_Nascita='.$Luogo_Nascita.', Tipo='.$Tipo.', Nome_T='', ID_Auto=''");                     
                        if ($Nome_T == "null")
                        $result = mysqli_query ($mysqli, "UPDATE specialisti set Codice='.$Codice.', Nome='.$Nome.', Cognome='.$Cognome.', Codice_Fiscale='.$CF.', Data_Nascita='.$Data_Nascita.', Luogo_Nascita='.$Luogo_Nascita.', Tipo='.$Tipo.', Nome_T='', ID_Auto='.$ID_Auto.'");
                            if($ID_Auto == "null")
                            $result = mysqli_query ($mysqli, "UPDATE specialisti set Codice='.$Codice.', Nome='.$Nome.', Cognome='.$Cognome.', Codice_Fiscale='.$CF.', Data_Nascita='.$Data_Nascita.', Luogo_Nascita='.$Luogo_Nascita.', Tipo='.$Tipo.', Nome_T='.$Nome_T.', ID_Auto=''");                             
                            else
                            $result = mysqli_query ($mysqli, "UPDATE specialisti set Codice='.$Codice.', Nome='.$Nome.', Cognome='.$Cognome.', Codice_Fiscale='.$CF.', Data_Nascita='.$Data_Nascita.', Luogo_Nascita='.$Luogo_Nascita.', Tipo='.$Tipo.', Nome_T='.$Nome_T.', ID_Auto='.$ID_Auto.'");
                            
            else
                header("Location: index.php");
        
    }

else {
if(isset($_GET['Codice']))
$Codice = $_GET['Codice'];

//selecting data associated with this particular id
$result = mysqli_query($mysqli, "SELECT * FROM specialisti WHERE Codice='$Codice'");

while($res = mysqli_fetch_array($result))
{
    $Nome = $res['Nome'];
    $Cognome = $res['Cognome'];
    $Codice_Fiscale = $res['Codice_Fiscale'];
    $Data_Nascita = $res['Data_Nascita'];   
    $Luogo_Nascita= $res['Luogo_Nascita'];
    $Tipo = $res['Tipo'];
    $Nome_T = $res['Nome_T'];
    $ID_Auto= $res['ID_Auto'];
}
}
?>
Questo il form html:
HTML:
<form name="form1" method="post" action="update_specialisti.php">
                                    <input type="text" name="Nome" value="<?php echo $Nome;?>" required >
                                    <input type="text" name="Cognome" value="<?php echo $Cognome;?>"required>
                                    <input type="text" name="Codice_Fiscale" value="<?php echo $Codice_Fiscale;?>"required>
                                    <input type="text" name="Data_Nascita" value="<?php echo $Data_Nascita;?>">
                                    <input type="text" name="Luogo_Nascita" value="<?php echo $Luogo_Nascita;?>"required>
                                    <label>Tipo:</label>
                                            <div class="select-wrapper">
                                                <select name="Tipo" required>
                                                    <option value=null>- Tipo -</option>
                                                    <option value="Meccanico">Meccanico</option>
                                                    <option value="Ingegnere">Ingegnere</option>
                                                </select>
                                            </div>
                                    <label>Nome Tipo:</label>
                                            <div class="select-wrapper">
                                                <select name="Nome_T">
                                                    <option value=null>- Nome Tipo -</option>
                                                    <?php
                                                    
                                                        $query = mysqli_query($mysqli,"select Nome FROM tipologie");
                                                        while($res = mysqli_fetch_array($query))
                                                        {
 
                                                          echo "<option value=".$res['Nome'].">".$res['Nome']."</option>";
                                                            
                                                        }

                                                    ?>
                                                </select>
                                            </div>   
                                            <label>ID Auto:</label>
                                            <div class="select-wrapper">
                                                <select name="ID_Auto">
                                                    <option value=null>- ID Auto -</option>
                                                    <?php
                                                    
                                                        $query = mysqli_query($mysqli,"select ID_Auto FROM monoposto");
                                                        while($res = mysqli_fetch_array($query))
                                                        {
 
                                                          echo "<option value=".$res['ID_Auto'].">".$res['ID_Auto']."</option>";
                                                            
                                                        }

                                                    ?>
                                                </select>
                                            </div>                                               
                                    <input type="hidden" name="Codice" value=<?php echo $Codice;?>>
                                    <input type="submit" name="Aggiorna" value="Aggiorna">
                            
                            </form>
Però quando clicco su Modifica questo è l'errore che mi compare:
Codice:
 Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp64\www\lsbteam.it\update_specialisti.php on line 47
La riga 47 è quella dove inizia l'else, cioè:
PHP:
else
                header("Location: index.php");
C'è un soluzione anche per questo ? :(
 

luigi.paciolla

Utente Attivo
13 Dic 2017
36
0
6
23
@borgo italia ho riscritto il codice così:
PHP:
<?php
// including the database connection file
include_once("config.php");

if(isset($_POST['Aggiorna']))
{  

    $Codice = mysqli_real_escape_string($mysqli, $_POST['Codice']);
   
    $Nome = mysqli_real_escape_string($mysqli, $_POST['Nome']);
    $Cognome = mysqli_real_escape_string($mysqli, $_POST['Cognome']);
    $Codice_Fiscale = mysqli_real_escape_string($mysqli, $_POST['Codice_Fiscale']);
    $Data_Nascita = mysqli_real_escape_string($mysqli, $_POST['Data_Nascita']);  
    $Luogo_Nascita = mysqli_real_escape_string($mysqli, $_POST['Luogo_Nascita']);
    $Tipo = mysqli_real_escape_string($mysqli, $_POST['Tipo']);
    $Nome_T = mysqli_real_escape_string($mysqli, $_POST['Nome_T']);
    $ID_Auto = mysqli_real_escape_string($mysqli, $_POST['ID_Auto']);

   
   
    // checking empty fields
    if(empty($Nome) || empty($Cognome) || empty($Codice_Fiscale)){
        {  
       
        if(empty($Nome)) {
            echo "<font color='red'>Inserire il Nome.</font><br/>";
        }
       
        if(empty($Cognome)) {
            echo "<font color='red'>Inserire il Cognome.</font><br/>";
        }
       
        if(empty($Codice_Fiscale)) {
            echo "<font color='red'>Inserire Codice Fiscale.</font><br/>";
        }      

    }
        if(($Nome_T == "null")and($ID_Auto == "null")){
                $result = mysqli_query ($mysqli, "UPDATE specialisti set Codice='.$Codice.', Nome='.$Nome.', Cognome='.$Cognome.', Codice_Fiscale='.$CF.', Data_Nascita='.$Data_Nascita.', Luogo_Nascita='.$Luogo_Nascita.', Tipo='.$Tipo.', Nome_T='', ID_Auto=''");                    
                        if ($Nome_T == "null")
                        $result = mysqli_query ($mysqli, "UPDATE specialisti set Codice='.$Codice.', Nome='.$Nome.', Cognome='.$Cognome.', Codice_Fiscale='.$CF.', Data_Nascita='.$Data_Nascita.', Luogo_Nascita='.$Luogo_Nascita.', Tipo='.$Tipo.', Nome_T='', ID_Auto='.$ID_Auto.'");
                            if($ID_Auto == "null")
                            $result = mysqli_query ($mysqli, "UPDATE specialisti set Codice='.$Codice.', Nome='.$Nome.', Cognome='.$Cognome.', Codice_Fiscale='.$CF.', Data_Nascita='.$Data_Nascita.', Luogo_Nascita='.$Luogo_Nascita.', Tipo='.$Tipo.', Nome_T='.$Nome_T.', ID_Auto=''");                            
                            else
                            $result = mysqli_query ($mysqli, "UPDATE specialisti set Codice='.$Codice.', Nome='.$Nome.', Cognome='.$Cognome.', Codice_Fiscale='.$CF.', Data_Nascita='.$Data_Nascita.', Luogo_Nascita='.$Luogo_Nascita.', Tipo='.$Tipo.', Nome_T='.$Nome_T.', ID_Auto='.$ID_Auto.'");
                           
        }else {
                header("Location: index.php");
            }
    }
else {
if(isset($_GET['Codice']))
$Codice = $_GET['Codice'];

//selecting data associated with this particular id
$result = mysqli_query($mysqli, "SELECT * FROM specialisti WHERE Codice='$Codice'");

while($res = mysqli_fetch_array($result))
{
    $Nome = $res['Nome'];
    $Cognome = $res['Cognome'];
    $Codice_Fiscale = $res['Codice_Fiscale'];
    $Data_Nascita = $res['Data_Nascita'];  
    $Luogo_Nascita= $res['Luogo_Nascita'];
    $Tipo = $res['Tipo'];
    $Nome_T = $res['Nome_T'];
    $ID_Auto= $res['ID_Auto'];
}
}
?>


Ora mi da questo errore:
Codice:
( ! ) Parse error: syntax error, unexpected end of file in C:\wamp64\www\lsbteam.it\update_specialisti.php on line 173
Secondo voi è un problema di parentesi ?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
si, hai una parentesi aperta da qualche parte e non chiusa quindi php cerca la chiusura e non trovandola arriva all'ultimo ?>
ma a te lo spulciare
p.s.
quando lo script è molto lungo delle volte io conto le aperte e il numero deve essere uguale alle chiuse
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
ho rivisto lo script, di graffe fuori posto ce n'erano diverse, credo di averle sistemate
qualche problema con gli apici sull'update
poi ho semplificato la parte "NULL"
PHP:
<?php
// including the database connection file
include_once("config.php");

if(isset($_POST['Aggiorna']))
{  
    $Codice = mysqli_real_escape_string($mysqli, $_POST['Codice']);

    $Nome = mysqli_real_escape_string($mysqli, $_POST['Nome']);
    $Cognome = mysqli_real_escape_string($mysqli, $_POST['Cognome']);
    $Codice_Fiscale = mysqli_real_escape_string($mysqli, $_POST['Codice_Fiscale']);
    $Data_Nascita = mysqli_real_escape_string($mysqli, $_POST['Data_Nascita']);  
    $Luogo_Nascita = mysqli_real_escape_string($mysqli, $_POST['Luogo_Nascita']);
    $Tipo = mysqli_real_escape_string($mysqli, $_POST['Tipo']);
    $Nome_T = mysqli_real_escape_string($mysqli, $_POST['Nome_T']);
    $ID_Auto = mysqli_real_escape_string($mysqli, $_POST['ID_Auto']);

    // checking empty fields
    if(empty($Nome) || empty($Cognome) || empty($Codice_Fiscale))
    {
        if(empty($Nome)) {
            echo "<font color='red'>Inserire il Nome.</font><br/>";
        }
        if(empty($Cognome)) {
            echo "<font color='red'>Inserire il Cognome.</font><br/>";
        }
       
        if(empty($Codice_Fiscale)) {
            echo "<font color='red'>Inserire Codice Fiscale.</font><br/>";
        }      
    }
    $sql1 = ", Nome_T=''";
    if ( $Nome_T  != NULL ) $sql1 = ", Nome_T='".$Nome_T ."'";

    $sql2 = ", ID_Auto=''";
    if ( $ID_Auto != NULL ) $sql2 = ", ID_Auto='".$ID_Auto."'" );

    $sql = "UPDATE specialisti set Codice='".$Codice."', Nome='".$Nome."', Cognome='".$Cognome."', Codice_Fiscale='".$CF."', Data_Nascita='".$Data_Nascita."', Luogo_Nascita='".$Luogo_Nascita."', Tipo='".$Tipo."'";

    $result = mysqli_query ($mysqli, $sql.$sql1.$sql2);

    header("Location: index.php");
}
else
{
    if(isset($_GET['Codice']))
    {
        $Codice = $_GET['Codice'];

        //selecting data associated with this particular id
        $result = mysqli_query($mysqli, "SELECT * FROM specialisti WHERE Codice='$Codice'");

        while($res = mysqli_fetch_array($result))
        {
            $Nome = $res['Nome'];
            $Cognome = $res['Cognome'];
            $Codice_Fiscale = $res['Codice_Fiscale'];
            $Data_Nascita = $res['Data_Nascita'];  
            $Luogo_Nascita= $res['Luogo_Nascita'];
            $Tipo = $res['Tipo'];
            $Nome_T = $res['Nome_T'];
            $ID_Auto= $res['ID_Auto'];
        }
    }
    else
    {
        echo "<font color='red'>Inserire il Codice.</font><br/>";
    }
}
?>
non l'ho provato, spero non ci siano errori (sono di fretta)
 
Ultima modifica:

luigi.paciolla

Utente Attivo
13 Dic 2017
36
0
6
23
Ciao, @borgo italia ho seguito il tuo consiglio ma è servito a poco :D. @marino51 il tuo codice è stato perfetto! C'era solo una parentesi ) in più. Ora riposto il codice. Ancora grazie!!!
PHP:
<?php
// including the database connection file
include_once("config.php");

if(isset($_POST['Aggiorna']))
{ 
    $Codice = mysqli_real_escape_string($mysqli, $_POST['Codice']);

    $Nome = mysqli_real_escape_string($mysqli, $_POST['Nome']);
    $Cognome = mysqli_real_escape_string($mysqli, $_POST['Cognome']);
    $Codice_Fiscale = mysqli_real_escape_string($mysqli, $_POST['Codice_Fiscale']);
    $Data_Nascita = mysqli_real_escape_string($mysqli, $_POST['Data_Nascita']); 
    $Luogo_Nascita = mysqli_real_escape_string($mysqli, $_POST['Luogo_Nascita']);
    $Tipo = mysqli_real_escape_string($mysqli, $_POST['Tipo']);
    $Nome_T = mysqli_real_escape_string($mysqli, $_POST['Nome_T']);
    $ID_Auto = mysqli_real_escape_string($mysqli, $_POST['ID_Auto']);

    // checking empty fields
    if(empty($Nome) || empty($Cognome) || empty($Codice_Fiscale))
    {
        if(empty($Nome)) {
            echo "<font color='red'>Inserire il Nome.</font><br/>";
        }
        if(empty($Cognome)) {
            echo "<font color='red'>Inserire il Cognome.</font><br/>";
        }
      
        if(empty($Codice_Fiscale)) {
            echo "<font color='red'>Inserire Codice Fiscale.</font><br/>";
        }     
    }
    $sql1 = ", Nome_T=''";
    if ( $Nome_T  != NULL ) $sql1 = ", Nome_T='".$Nome_T ."'";

    $sql2 = ", ID_Auto=''";
    if ( $ID_Auto != NULL ) $sql2 = ", ID_Auto='".$ID_Auto."'" ;

    $sql = "UPDATE specialisti set Codice='".$Codice."', Nome='".$Nome."', Cognome='".$Cognome."', Codice_Fiscale='".$CF."', Data_Nascita='".$Data_Nascita."', Luogo_Nascita='".$Luogo_Nascita."', Tipo='".$Tipo."'";

    $result = mysqli_query ($mysqli, $sql.$sql1.$sql2);

    header("Location: index.php");
}
else
{
    if(isset($_GET['Codice']))
    {
        $Codice = $_GET['Codice'];

        //selecting data associated with this particular id
        $result = mysqli_query($mysqli, "SELECT * FROM specialisti WHERE Codice='$Codice'");

        while($res = mysqli_fetch_array($result))
        {
            $Nome = $res['Nome'];
            $Cognome = $res['Cognome'];
            $Codice_Fiscale = $res['Codice_Fiscale'];
            $Data_Nascita = $res['Data_Nascita']; 
            $Luogo_Nascita= $res['Luogo_Nascita'];
            $Tipo = $res['Tipo'];
            $Nome_T = $res['Nome_T'];
            $ID_Auto= $res['ID_Auto'];
        }
    }
    else
    {
        echo "<font color='red'>Inserire il Codice.</font><br/>";
    }
}
?>