allora:
Ho costruito una finestra web che mi dovrebbe permettere ci aggiornare un record di un database.
diciamo che i campi del database sono questi:
|ID| nome_prodotto | descrizione | prezzo |
La finestra viene richiamata come pop-up assieme all'id del record da aggiornare.
E' mia intenzione rendere i campi della finestra già pre-compilati con i vecchi valori pescati dal database, in modo da permettere all'utente dell'applicazione di modificare i campi in maniera mirata, senza costringerlo a digitare di nuovo tutto.
Ho quindi una form così concepita:
<form method=post runat="server">
<input type="text" id="id_code" runat="server"/>
<input type="text" id="nome_prodotto" runat="server"/>
<input type="text" id="descrizione" runat="server"/>
<input type="text" id="prezzo" runat="server"/>
</form>
I campi vengono inizializzati mediante uno script lato server che esegue una select (select * from miatabella where id = miovalore)_
protected void Page_Load(Object sender, EventArgs e)
{
id_code.Value=[id letto dal database];
nome_prodotto.Value = [nome_prodotto letto dal database];
ecc. ecc.
}
Fino a qui tutto bene.
Il problema arriva quando l'utente, dopo aver modificato i campi come più gli aggrada, schiaccia il pulsante "submit".
Associata al submit c'è la mia funzioncina lato server
void SubmitBtn_Click(object Source, EventArgs e) {
....
}
la quale costruisce l'istruzione sql di update e la da in pasto al database.
ora, l'istruzione sql è costruita leggendo il contenuto dei valori dei campi di input, quindi, più o meno, come segue:
string sqlCommand = "update mia tabella set";
sqlCommand += "nome_prodotto='"+nome_prodotto.Value+"'";
sqlCommand += "descrizione='"+descrizione.Value+"'";
sqlCommand += "prezzo='"+prezzo.Value+"'";
sqlCommand += " where id="+mioId
lancio il mio comando sql e... non succede nulla, almeno apparentemente, perchè in realtà vengono sovrascritti i vecchi valori con gli stessi identici valori.
Cioè:
Se l'utente trova la finestra così pre-compilata:
nome_prodotto ---> pippo
descrizione ---> pluto
prezzo ---> 999999
modifica i campi come segue:
nome_prodotto ---> gambadilegno
descrizione ---> paperone
prezzo ---> 000000
e schiaccia submit, il comando sql che costruisco e che do in pasto al db non è, come mi aspetterei, questo:
Update miatabella set
nome_prodotto='gambadilegno'
descrizione='paperone'
prezzo='000000'
where id=miovalore
ma bensi questa:
Update miatabella set
nome_prodotto='pippo'
descrizione='pluto'
prezzo='999999'
where id=miovalore
ma perchè diavolo se l'utente, prima di schiacciare il submit, i valori dei campi di input li ha modificati?
Mille grazie a chiunque mi aiuterà.