Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Ciclo controllo e-mail

  1. #1
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187

    Ciclo controllo e-mail

    Ciao a tutti di nuovo!

    Devo controllare se la mail inserita nel campo mail è già presente o meno nel DB per cui ho fatto così:

    codice:
    Do While not rsControlla.EOF
       If rsControlla("EMAIL") = iscri_mail Then
          Response.write("Email presente nel DB")
       End if
    rsControlla.movenext
    Loop
    Così non scorrere tutti i record fino alla fine? e invece mi confronta la mail inserita solo con la prima mail presente nel DB... per andare avanti uso il movenext giusto? :master:

  2. #2
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Sposta quell' end if prima del loop.

  3. #3
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Ossia?
    o devo mettere fuori dal Loop eppoi come controllo le mail?
    :master:

  4. #4
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    codice:
    strSql = "SELECT * FROM tuaTabella WHERE EMAIL = '"&iscri_mail&"'"
    Set rsControlla = Server.CreateObject("ADODB.Recordset")
    rsControlla.Open strSql, conn, 3, 3
    		
    'Controllo il recordset
    		if rsControlla.eof then
    		   rsControlla.addnew
    		   rsControlla("EMAIL") = iscri_mail
    		rsControlla.update
    
    else
    
    response.write "Email già utilizzata."
    		end if
    
    		'chiudo il database
    		rsControlla.Close
    		set rsControlla = Nothing
    		conn.Close 
    		set conn = Nothing

  5. #5
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Ti posto il codice della pagina, forse è + chiaro, io ho utilizzato un modo completamente diverso :master:

    codice:
    <%
    Dim iscri_mail
    
    iscri_mail = Replace(request.form("newsletter"),"'", "''")
    
    Dim rsControlla
    Dim SQL
    Set rsControlla = Server.CreateObject("ADODB.recordset")
    SQL = "SELECT * FROM NEWSLETTER"
    rsControlla.Open SQL, conn
    
    Do While not rsControlla.EOF
    If rsControlla("EMAIL") = iscri_mail Then %>
    <tr><td>
    L'e-mail inserita è già presente nel database!!!
    [Chiudi questa finestra]
    </td></tr>
    <%
    Exit do ''''''''''''''' Esco dal ciclo
    
    ElseIf rsControlla("EMAIL") <> iscri_mail Then
    sql = "INSERT INTO NEWSLETTER (EMAIL) "
    sql = sql & "VALUES ('" & iscri_mail & "')"
    set rsinserisci=conn.execute(sql)
    %>
    <tr><td>
    La registrazione è avvenuta con successo!!!
    [Chiudi questa finestra]
    </td></tr>	
    <% 
    Exit do ''''''''''''''' Esco dal ciclo
    rsControlla.movenext
    End if
    Loop
    %>

  6. #6
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Scusa tanto Nadia, ma dove stai studiando ASP?

    Tu dici di utilizzare un "modo completamente diverso" (quello che ti ho suggerito è valido), ma il tuo "modo completamente diverso" è un "modo completamente sbagliato" !!!!

    Sbagliato non solo nel codice ma anche nell'approccio al problema.

    Ti posto il "tuo" codice funzionante poi faremo insieme alcune considerazioni:
    codice:
    <%
    
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("newsletter.mdb")
      
    Dim iscri_mail
    
    iscri_mail = Replace(request.form("newsletter"),"'", "''")
    
    Dim rsControlla
    Dim SQL
    
    Set rsControlla = Server.CreateObject("ADODB.recordset")
    
    SQL = "SELECT EMAIL FROM NEWSLETTER WHERE EMAIL = '"&iscri_mail&"'"
    rsControlla.Open SQL, conn, 3, 3
    
    if not rsControlla.bof and not rsControlla.eof then 
    
    %>
    <tr><td>
    L'e-mail inserita è già presente nel database!!!
    [Chiudi questa finestra]
    </td></tr>
    <%
    Else
    
    sql = "INSERT INTO NEWSLETTER (EMAIL) VALUES ('"&Iscri_mail&"')"
    conn.execute(sql)
    
    %>
    <tr><td>
    La registrazione è avvenuta con successo!!!
    [Chiudi questa finestra]
    </td></tr>	
    <% 
      End if
      
      rsControlla.Close
      Set rsControlla = Nothing
      
      Conn.Close
      Set Conn = Nothing
       
    %>
    Considerazioni:

    1) A cosa ti serve questo replace ???:
    codice:
    iscri_mail = Replace(request.form("newsletter"),"'", "''")
    Se l'utente inserisce un indirizzo email non mi risulta che possa inserire caratteri come l'apostrofo; piuttosto ti consiglio di utilizzare un controllo lato client per verificare l'email inserita (non l'esistenza) ma solo la sintassi (nome@dominio.it);

    2) Utilizzavi un ciclo (e ti sei accanita su questo a tal punto di dare il titolo alla discussione) quando invece per la verifica della email è sufficiente una query where email=emailinserita.

    3) Qui trovi il tuo script pubblicato per provare il funzionamento.

    Mi preoccuperebbe non poco che stai utilizzando un testo o una guida per imparare ASP e questi sono i risultati... quello che hai postato è un pasticciatissimo ASP...

    In bocca al lupo.

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.