Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908

    [C#]Pareri e domanda su codice

    Ho un modulo d'iscrizione, diviso in vari step; uno di questi contiene quattro campi:


    1. Username
    2. Password
    3. Conferma password
    4. Email


    Per quanto riguarda i campi 2 e 3 nessun problema, mentre per gli altri due, prima dell'inserimento vero e proprio dei dati nel db devo verificarne l'univocità. Al momento sto sviluppando questa soluzione:


    NewUser.aspx
    codice:
    <asp:Panel ID="pnlAccount" runat="server">
                Dati account:<br />
                <table class="auto-style1">
                    <tr>
                        <td class="auto-style11">Username:*</td>
                        <td class="auto-style3">
                            <asp:TextBox ID="txtUsername" runat="server" OnTextChanged="txtUsername_TextChanged" AutoPostBack="True"></asp:TextBox>
                            <asp:Label ID="lblUsername" runat="server"></asp:Label>
                        </td>
                    </tr>
                    <tr>
                        <td class="auto-style10">Password:*</td>
                        <td>
                            &nbsp;<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td class="auto-style10">Conferma password:</td>
                        <td>
                            <asp:TextBox ID="txtConfPassword" runat="server" TextMode="Password"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td class="auto-style10">Email:</td>
                        <td>
                            <asp:TextBox ID="txtEmail" runat="server" OnTextChanged="txtEmail_TextChanged"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td class="auto-style10" colspan="2">
                            <asp:Button ID="btnRegister" runat="server" OnClick="btnRegister_Click" Text="Registra" />
                        </td>
                    </tr>
                </table>
                &nbsp;<br />
                </asp:Panel>



    NewUser.aspx.cs


    codice:
     protected void btnRegister_Click(object sender, EventArgs e)
            {
                
                string Username = Request.Form["txtUsername"];
                string Password = Request.Form["txtPassword"];
                string AuthCode = Guid.NewGuid().ToString();
                string IdReg = Guid.NewGuid().ToString();
                string email = Request.Form["txtEmail"];
                string dataReg = DateTime.Now.Date.ToShortDateString();
                string oraReg = DateTime.Now.ToShortTimeString();
                string mailBody;
                string From = "no-reply@dominio.it";
                string oggetto = "Oggetto della mail";
                string bodyMail = "Corpo del messggio";
    
    
                MailMessage mailObj = new MailMessage(From, email, Username + ", conferma la tua iscrizione al XXXXX", "Il codice Authcode è: " + "<b>" + AuthCode + "</b>" + "<BR>");
                mailObj.IsBodyHtml = true;
                SmtpClient SMTPServer = new SmtpClient("localhost", 1214);
                
                
                    SMTPServer.Send(mailObj);
               
    
    
                
                
                
                
                
            }
    
    
            public void txtUsername_TextChanged(object sender, EventArgs e)
            {
                //Codice per il controllo dell'univocità dell'username
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource = "localhost\\SQLExpress";
                builder.InitialCatalog = "tb";
                builder.IntegratedSecurity = true;
                string MailStatus;
                string UsernameStatus;
    
    
                
    
    
                SqlParameter pUsername = new SqlParameter();
                pUsername.ParameterName = "@Username";
                pUsername.DbType = DbType.String;
                pUsername.Direction = ParameterDirection.Input;
                pUsername.Value = txtUsername.Text;
                using (SqlConnection conn = new SqlConnection(builder.ConnectionString))
                {
                    try
                    {
                        conn.Open();
                    }
    
    
                    catch(Exception excMessage)
                    {
                        Response.Write(excMessage.ToString());
                    }
    
    
                    using (SqlCommand cmqQuery = new SqlCommand("SELECT COUNT (*) FROM Tb_Account WHERE Username=@Username", conn))
                    {
                        cmqQuery.Parameters.Add(pUsername);
                        int count = (int)cmqQuery.ExecuteScalar();
                        MailStatus = count.ToString();
                        lblUsername.Text = MailStatus;
                        if(MailStatus == "0")
                        {
                            btnRegister.Enabled = false;
                        }
                    }
                }
            }
    
    
            protected void txtEmail_TextChanged(object sender, EventArgs e)
            {
                
                
                //Codice per il controllo dell'univocità dell'indirizzo email
            }
            
            
        }
    }

    Io vorrei fare in modo che SOLO se entrambe le condizioni vengono a verificarsi, ovvero che sia username che email non esistono, l'iscrizione avvenga. Singolarmente l'operazione mi riesce, perchè tramite il metodo ExecuteScalar() verifico la risposta alla query, ma volendo farlo per entrambe cosa mi consigliate di fare?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  2. #2
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    non mettere il controllo sul textchanged dei campi, mettilo all'inizio del btnregister_click mettendo in where entrambe le condizioni... se va bene procedi col resto del codice altrimenti esci dalla sub
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  3. #3
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Nell'attesa della risposta di qualcuno, ecco cosa avevo fatto, e se ben intendo, è proprio quello che mi hai suggerito te:

    codice:
    SqlParameter pUsername = new SqlParameter();
                    pUsername.ParameterName = "@Username";
                    pUsername.DbType = DbType.String;
                    pUsername.Direction = ParameterDirection.Input;
                    pUsername.Value = txtUsername.Text;
    
    
                    SqlParameter pEmail = new SqlParameter();
                    pEmail.ParameterName = "@Email";
                    pEmail.DbType = DbType.String;
                    pEmail.Direction = ParameterDirection.Input;
                    pEmail.Value = txtEmail.Text;
    
    
                    using (SqlConnection conn = new SqlConnection(builder.ConnectionString))
                    {
                        try
                        {
                            conn.Open();
                        }
    
    
                        catch (Exception excMessage)
                        {
                            Response.Write(excMessage.ToString());
                        }
    
    
                        using (SqlCommand cmqQuery = new SqlCommand("SELECT COUNT(*) FROM Tabella_Account WHERE Username=@Username OR Email=@Email", conn))
                        {
                            cmqQuery.Parameters.Add(pUsername);
                            cmqQuery.Parameters.Add(pEmail);
                            int count = (int)cmqQuery.ExecuteScalar();
                            lblUsername.Text = count.ToString();
                       //     lblUsername.Text = MailStatus;
    
    
                        }
                    }
    Cosa ne pensi adesso?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  4. #4
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    OR nella condizione WHERE ti restituisce i record che soddisfano almeno una delle due condizioni quindi potrebbe andare bene. Se invece vuoi che ti restituisca quelli che soddisfano entrambe le condizioni contemporaneamente devi usare AND
    SELECT COUNT(*) FROM Tabella_Account WHERE Username=@Username AND Email=@Email
    Ultima modifica di supermac; 21-01-2015 a 12:47
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  5. #5
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Quote Originariamente inviata da supermac Visualizza il messaggio
    OR nella condizione WHERE ti restituisce i record che soddisfano almeno una delle due condizioni quindi potrebbe andare bene. Se invece vuoi che ti restituisca quelli che soddisfano entrambe le condizioni contemporaneamente devi usare AND
    SELECT COUNT(*) FROM Tabella_Account WHERE Username=@Username AND Email=@Email
    Si... lo so! Grazie!

    P.S. Approfitto della tua disponibilità per una domanda: come potrei fare in modo che se la query mi restituisce 0, ovvero nessun valore trovato, i risultato "IsValidate" della pagina venga impostato a true o viceversa?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  6. #6
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    page.isValid è in sola lettura non puoi impostarlo da codice
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.