sostituire l'username | Altri linguaggi

Topic: Pubblico - Composto da 8 Posts di 3 Utenti.

11 Settembre, 2010 14:53 #1
gigi
Utente

gigi
Registrato: Jan, 2010
Posts: 20
Offline

Salve, io ho questo codice in asp net 2.0 e csharp, ma a voi dico solo di
guardare le query.

Non mi riesce ad cancellare l'utente appena sostituito.
Vorrei fare in modo che quando sostituisco "gigi" con "gigi_cs" e
vorrei cancellare gigi appena sostituito con gigi_cs.
Io però devo prendere il valore user , perchè uso il Forms Authentication,
che è una specie di login con ruoli etc..già completo.

Vi posto il codice:

 1protected void btnUp_Click(object sender, EventArgs e)
 2    {
 3                using (MySqlConnection conn = new MySqlConnection(connectionString))
 4                {
 5
 6
 7
 8                        string NEWS_SQL = "UPDATE news set _User=@S_USERNAME WHERE _User=@S_USERNAME_ID";
 9                        conn.Open();
10                        MySqlCommand news_cmd = new MySqlCommand(NEWS_SQL, conn);
11                        news_cmd.Parameters.AddWithValue("@S_USERNAME", DDautore.SelectedItem.Text);
12                        news_cmd.Parameters.AddWithValue("@S_USERNAME_ID", Request.QueryString["user"]);
13                        news_cmd.ExecuteNonQuery();
14                        conn.Close();
15
16                        string PAGINE_SQL = "UPDATE pagine set _User=@S_USERNAME WHERE _User=@S_USERNAME_ID";
17                        conn.Open();
18                        MySqlCommand pagine_cmd = new MySqlCommand(PAGINE_SQL, conn);
19                        pagine_cmd.Parameters.AddWithValue("@S_USERNAME", DDautore.SelectedItem.Text);
20                        pagine_cmd.Parameters.AddWithValue("@S_USERNAME_ID", Request.QueryString["user"]);
21                        pagine_cmd.ExecuteNonQuery();
22                        conn.Close();
23
24
25                        string EVENTI_SQL = "UPDATE eventi set _User=@S_USERNAME WHERE _User=@S_USERNAME_ID";
26                        conn.Open();
27                        MySqlCommand eventi_cmd = new MySqlCommand(EVENTI_SQL, conn);
28                        eventi_cmd.Parameters.AddWithValue("@S_USERNAME", DDautore.SelectedItem.Text);
29                        eventi_cmd.Parameters.AddWithValue("@S_USERNAME_ID", Request.QueryString["user"]);
30                        eventi_cmd.ExecuteNonQuery();
31                        conn.Close();
32
33                        string PHOTO_SQL = "UPDATE photo set _User=@S_USERNAME WHERE _User=@S_USERNAME_ID";
34                        conn.Open();
35                        MySqlCommand photo_cmd = new MySqlCommand(PHOTO_SQL, conn);
36                        photo_cmd.Parameters.AddWithValue("@S_USERNAME", DDautore.SelectedItem.Text);
37                        photo_cmd.Parameters.AddWithValue("@S_USERNAME_ID", Request.QueryString["user"]);
38                        photo_cmd.ExecuteNonQuery();
39                        conn.Close();
40    
41                       string _SQL = "UPDATE users set Username=@S_USERNAME WHERE Username=@S_USERNAME_ID";
42                        conn.Open();
43                        MySqlCommand _cmd = new MySqlCommand(_SQL, conn);
44                        _cmd.Parameters.AddWithValue("@S_USERNAME",DDautore.SelectedItem.Text);
45                        _cmd.Parameters.AddWithValue("@S_USERNAME_ID", Request.QueryString["user"]);
46                        _cmd.ExecuteNonQuery();
47                       conn.Close();
48                        
49                        conn.Open();
50                        string SQL = "DELETE  FROM users   WHERE Username=@D_USERNAME";
51                        MySqlCommand cmd = new MySqlCommand(SQL, conn);
52                        cmd.Parameters.AddWithValue("@D_USERNAME", "" + Request.QueryString["user"] + "");
53                        cmd.ExecuteNonQuery();
54                        conn.Close();
55
56                        Response.Redirect("../apri_utente.aspx?user=" + DDautore.SelectedItem.Text + "");
57          
58                    }
59
60                }

Mi dite perchè non mi fa cancellare l'utente vecchio o meglio,

ditemi come funziona la sostituzione dei nomi utenti.
Vi ringrazio molto se mi date delle informazioni.
Grazie mille.

11 Settembre, 2010 15:00 #2
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 957
Offline
Segui g2d su Twitter!

Bentornato gigi,

Il punto è, la sintassi di una query di UPDATE è

1UPDATE TABELLA SET CAMPO=VALORE WHERE CONDIZIONE

Nel caso tuo

1UPDATE users set Username=@S_USERNAME WHERE Username=@S_USERNAME_ID

devi quindi essere sicuo che il valore nelle variabili @S_USERNAME E @S_USERNAME_ID sia rispettivamente il valore nuovo che vuoi attribuire e poi i valore che devi cercare.

Non conosco ASP quindi ... ti posso aiutare sulle query ma non sul codice, proviamoci, altrimenti contattiamo qualche baldo utente del forum esperto di codice Microsoft, ce ne sono almeno un paio

Saluti algweb


Un tempo ero algweb ora sono g2d

11 Settembre, 2010 15:10 #3
gigi
Utente

gigi
Registrato: Jan, 2010
Posts: 20
Offline

si la query è giusta , queste "@_NOMEVALORE" è una cosa che fa asp net , per non inserire testi non indesiderati come SQL INJECTION etc,
ad esempio se te inserisci questa stringa nella text input a' or 'a' = 'a, lui lo passa come stringa e non una funzione di query. (ora non mi ricordo bene il tale funzionamento), ma so che protegge dai attacchi.

L'unico che prendo il valore "gigi" da una input=text, e lo vorrei sostituire da un menu a tendina popolato con altri nomi.

Solo che funziona la sostituzione ma non capisco come mai non mi cancella l'utente vecchio.
ed poi se modifico l'utente appena sostituito e la cancellazione funziona solo che me li cancella tutte due gli utenti.

Mi date idee come fare la sostituzione degli utenti?

grazie mille.

11 Settembre, 2010 15:23 #4
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 957
Offline
Segui g2d su Twitter!

Grazie per le dritte su ASP

Ah ho capito adesso, meglio cosa vuoi fare....

In effetti se ho capito bene tu vuoi capire quali sono i passi operativi da compiere per effettuare correttamente la sostituzione, poi in effetti per il codice da scrivere ci pensi tu.

Devi ragionare un attimo sull'applicazione, nel senso che se esistono altri punti in cui l'utente ha operato, allora il suo ID è sparso in varie tabelle, non è conveniente cancellarlo, altrimenti dovresti propagare la modifica in giro per il DB.

Per sostituire ovviamente devi effettuare la UPDATE di cui parlavamo nello scorso post, e solo quella..

Sei sicuro che l'utente vecchio viene ancora visualizzato ? ... se stai usando una selectbox peer l'utente vecchio, potrebbe essere un problema di cache del browser, perchè non dai uno sguardo direttamente alla tabella sul DB

Facci sapere


Un tempo ero algweb ora sono g2d

11 Settembre, 2010 15:37 #5
gigi
Utente

gigi
Registrato: Jan, 2010
Posts: 20
Offline

Grazie per la spiegazione, ora mi informo come prendere l'id ansi il nome utente e poi vi faccio sapere.
Saluti,
luigi.
buona giornata.

11 Settembre, 2010 18:33 #6
gigi
Utente

gigi
Registrato: Jan, 2010
Posts: 20
Offline

ciao, ho risolto con un cookie, prendento l'id dell'utente e modificandolo invece con il nome ma con l'id è ha funzionato subito.

Grazie mille.

22 Ottobre, 2010 15:21 #7
Sante Caserio
Moderatore

Sante Caserio
Registrato: Jul, 2008
Posts: 99
Offline

Apri la connessione solo all'inizio e toglila solo alla fine!

22 Ottobre, 2010 15:21 #8
Sante Caserio
Moderatore

Sante Caserio
Registrato: Jul, 2008
Posts: 99
Offline

Apri la connessione solo all'inizio e chiudila solo alla fine!

Condividi su:

Loggati o Registrati per replicare