Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581

    strano errore select dopo insert!!!

    Ciao a tutti
    ho una pagina successiva ad un submit da form che, nel caso di errori mi fa un historyback, mentre in caso di nessun errore fa quanto segue:

    inserisce i dati a db e, subito dopo, prende l'ultimo rs inserito come iscritto facendo una select sulla mail, ne prende l'id e manda la mail con i dati di accesso dove l'id e' l'idiscritto che servirà poi per attivare l'iscrizione alla conferma del link in mail

    Il problema è che lo fa troppo in fretta .. in pratica fa alla perfezione l'inserimento a db, ma quando va a richiamare l'ultimo rs si vede che ci mette un attimino ad aggionare e non trova l'ultimo utente iscritto .. quindi non manda la mail

    come posso fare per ritardare il tempo che passa tra l'inserimento a db e la select del rs dell'ultimo iscritto?

    non so più come fare

  2. #2
    ma scusa per fare l'inserimento nel database quei valori li avrai già in giro da qualche parte(variabili, session,.....)...perchè non usi quelli?
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  3. #3
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    i valori vengono dalla form ... posto per farvi capire meglio il codice:
    codice:
    
    <%
    if IsValidString2(request.form("username")) then
    if IsValidString2(request.form("password")) then
    userpwok = "S"
    else
    userpwok = "N"
    errore2 = "
    • Hai utilizzato dei caratteri non consentiti !#$%^&amp;*=+{}[]()|\;:/?&gt;,&lt;'.
    o uno spazio &quot&quot; nel campo password"
    end if
    else
    if IsValidString2(request.form("password")) then
    userpwok = "N"
    errore2 = "
    • Hai utilizzato dei caratteri non consentiti !#$%^&amp;*=+{}[]()|\;:/?&gt;,&lt;'.
    o uno spazio &quot&quot; nel campo username"
    else
    userpwok = "N"
    errore2 = "
    • Hai utilizzato dei caratteri non consentiti !#$%^&amp;*=+{}[]()|\;:/?&gt;,&lt;'.
    o uno spazio &quot&quot; nei campi username e password"
    end if
    end if
    %>
    
    <%
    if IsValidString(request.form("nome") & request.form("email") & request.form("citta") & request.form("statocivile") & request.form("prefcell") & request.form("numcell") & request.form("icq") & request.form("msn")) then
    campivalidi = "S"
    else
    campivalidi = "N"
    errore1 = "
    • Hai utilizzato dei caratteri non consentiti !#$%^&amp;*=+{}[]|\;:/?&gt;,&lt;
    oppure hai inserito un doppio spazio &quot;&quot; o doppia virgola &quot;,,&quot;
    in uno dei seguenti campi: nome, email, citt&agrave;, stato civile, cellulare, icq, msn"
    end if
    %>
    
    <%
    ' controllo se user e mail inserite non siano già presenti
    if userpwok = "S" and campivalidi = "S" then
    
    Dim rsCheck
    
    Set rsCheck = Server.CreateObject("ADODB.Recordset")
    rsCheck.ActiveConnection = MM_conn_STRING
    rsCheck.Source = "SELECT User, Mail FROM TblIscritto WHERE User = '" & request.Form("username") & "' OR Mail = '" & request.Form("email") & "'"
    rsCheck.CursorType = 0
    rsCheck.CursorLocation = 2
    rsCheck.LockType = 1
    rsCheck.Open()
    
    if not rsCheck.EOF and not rsCheck.BOF then
    if Ucase(rsCheck("User")) = Ucase(request.Form("username")) then
    if Ucase(rsCheck("Mail")) = Ucase(request.Form("email")) then
    esiste = "S"
    errore3 = "
    • Username ed e-mail gi&agrave; presenti nel database"
    else
    esiste = "S"
    errore3 = "
    • Username gi&agrave; presente nel database"
    end if
    else
    if Ucase(rsCheck("Mail")) = Ucase(request.Form("email")) then
    esiste = "S"
    errore3 = "
    • E-mail gi&agrave; presente nel database"
    end if
    end if
    else
    esiste = "N"
    end if
    
    rsCheck.Close()
    Set rsCheck = Nothing
    
    end if
    %>
    
    <%
    if request.form("giorno") <> "nd" AND request.form("mese") <> "nd" AND request.form("anno") <> "nd" then
    
    	giorno = request.form("giorno")
    	if giorno < 10 then
    	giornoN = 0 & giorno
    	else
    	giornoN = giorno
    	end if
    	
    	mese = request.form("mese")
    	if mese < 10 then
    	meseN = 0 & mese
    	else
    	meseN = mese
    	end if
    	
    	annoN = request.form("anno")
    	
    	nascitacheck = giornoN & "/" & meseN & "/" & annoN
    	nascita = annoN & meseN & giornoN
    
    else
    
    	nascitacheck = Date()
    
    end if
    
    if IsDate(nascitacheck) then
    okdata = "S"
    else
    okdata = "N"
    errore4 = "
    • Hai inserito una data di nascita non valida, ad esempio 30 febbraio"
    end if
    %>
    <%
    if Len(request.Form("username")) < 4 then
    	if Len(request.Form("password")) < 5 then
    	oklunghezza = "N"
    	errore5 = "
    • Username inferiore a 4 caratteri e password inferiore a 5"
    	else
    	oklunghezza = "N"
    	errore5 = "
    • Username inferiore a 4 caratteri"
    	end if
    else
    	if Len(request.Form("password")) < 5 then
    	oklunghezza = "N"
    	errore5 = "
    • Password inferiore a 5 caratteri"
    	else
    	oklunghezza = "S"
    	end if
    end if
    
    if Ucase(request.Form("username")) = Ucase(request.Form("password")) then
    uguali = "S"
    errore6 = "
    • Non è consentito inserire username e password uguali"
    else
    uguali = "N"
    end if
    %>
    <%
    if request.Form("prefcell") <> "" and request.Form("numcell") <> "" then
    	okcell = "S"
    end if
    %>
    <%
    function iscrizione()
    	 if campivalidi="S" and userpwok = "S" and esiste = "N" and okdata = "S" and oklunghezza = "S" and uguali = "N" then
    		returnValue = true
    	else	
    		returnValue = false
    	end if
    	iscrizione= returnValue
    end function
    %>
    <%
    if iscrizione() then
    %>
    
    <%
    Dim MM_editCmd
    Dim MM_editConnection
    Dim MM_editQuery
    
    MM_editConnection = MM_conn_STRING
    
    if nascitacheck <> Date() then
    	if request.Form("segno") <> "nd" then
    		if okcell = "S" then
    			MM_editQuery = "insert into TblIscritto (User,Pass,Nome,Cognome,Mail,ICQ,MSN,AnnoNascita,SegnoZodiacale,Citta,Sesso,StatoCivile,CellPrefisso,CellNumero,MostraCell,RegIP,DataIscrizione) values ('" & request.form("username") & "','" & request.form("password") &  "','" & request.form("nome") & "','" &  request.form("cognome") & "','" &  request.form("email") & "','" &  request.form("icq") & "','" &  request.form("msn") & "','" &  nascita & "','" &  request.form("segno") & "','" &  request.form("citta") & "','" &  request.form("sesso") & "','" &  request.form("statocivile") & "','" &  request.form("prefcell") & "','" &  request.form("numcell") & "','" &  request.form("mostracell") & "','" &  request.form("ip") & "','" &  request.form("data") & "')" 
    		else
    			MM_editQuery = "insert into TblIscritto (User,Pass,Nome,Cognome,Mail,ICQ,MSN,AnnoNascita,SegnoZodiacale,Citta,Sesso,StatoCivile,RegIP,DataIscrizione) values ('" & request.form("username") & "','" & request.form("password") &  "','" & request.form("nome") & "','" &  request.form("cognome") & "','" &  request.form("email") & "','" &  request.form("icq") & "','" &  request.form("msn") & "','" &  nascita & "','" &  request.form("segno") & "','" &  request.form("citta") & "','" &  request.form("sesso") & "','" &  request.form("statocivile") & "','" &  request.form("ip") & "','" &  request.form("data") & "')" 
    		end if
    	else
    		if okcell = "S" then
    			MM_editQuery = "insert into TblIscritto (User,Pass,Nome,Cognome,Mail,ICQ,MSN,AnnoNascita,Citta,Sesso,StatoCivile,CellPrefisso,CellNumero,MostraCell,RegIP,DataIscrizione) values ('" & request.form("username") & "','" & request.form("password") &  "','" & request.form("nome") & "','" &  request.form("cognome") & "','" &  request.form("email") & "','" &  request.form("icq") & "','" &  request.form("msn") & "','" &  nascita & "','" &  request.form("citta") & "','" &  request.form("sesso") & "','" &  request.form("statocivile") & "','" &  request.form("prefcell") & "','" &  request.form("numcell") & "','" &  request.form("mostracell") & "','" &  request.form("ip") & "','" &  request.form("data") & "')" 
    		else
    			MM_editQuery = "insert into TblIscritto (User,Pass,Nome,Cognome,Mail,ICQ,MSN,AnnoNascita,Citta,Sesso,StatoCivile,RegIP,DataIscrizione) values ('" & request.form("username") & "','" & request.form("password") &  "','" & request.form("nome") & "','" &  request.form("cognome") & "','" &  request.form("email") & "','" &  request.form("icq") & "','" &  request.form("msn") & "','" &  nascita & "','" &  request.form("citta") & "','" &  request.form("sesso") & "','" &  request.form("statocivile") & "','" &  request.form("ip") & "','" &  request.form("data") & "')" 
    		end if	
    	end if
    else
    	if request.Form("segno") <> "nd" then
    		if okcell = "S" then
    			MM_editQuery = "insert into TblIscritto (User,Pass,Nome,Cognome,Mail,ICQ,MSN,SegnoZodiacale,Citta,Sesso,StatoCivile,CellPrefisso,CellNumero,MostraCell,RegIP,DataIscrizione) values ('" & request.form("username") & "','" & request.form("password") &  "','" & request.form("nome") & "','" &  request.form("cognome") & "','" &  request.form("email") & "','" &  request.form("icq") & "','" &  request.form("msn") & "','" &  request.form("segno") & "','" &  request.form("citta") & "','" &  request.form("sesso") & "','" &  request.form("statocivile") & "','" &  request.form("prefcell") & "','" &  request.form("numcell") & "','" &  request.form("mostracell") & "','" &  request.form("ip") & "','" &  request.form("data") & "')" 
    		else
    			MM_editQuery = "insert into TblIscritto (User,Pass,Nome,Cognome,Mail,ICQ,MSN,SegnoZodiacale,Citta,Sesso,StatoCivile,RegIP,DataIscrizione) values ('" & request.form("username") & "','" & request.form("password") &  "','" & request.form("nome") & "','" &  request.form("cognome") & "','" &  request.form("email") & "','" &  request.form("icq") & "','" &  request.form("msn") & "','" &  request.form("segno") & "','" &  request.form("citta") & "','" &  request.form("sesso") & "','" &  request.form("statocivile") & "','" &  request.form("ip") & "','" &  request.form("data") & "')" 
    		end if
    	else
    		if okcell = "S" then
    			MM_editQuery = "insert into TblIscritto (User,Pass,Nome,Cognome,Mail,ICQ,MSN,Citta,Sesso,StatoCivile,CellPrefisso,CellNumero,MostraCell,RegIP,DataIscrizione) values ('" & request.form("username") & "','" & request.form("password") &  "','" & request.form("nome") & "','" &  request.form("cognome") & "','" &  request.form("email") & "','" &  request.form("icq") & "','" &  request.form("msn") & "','" &  request.form("citta") & "','" &  request.form("sesso") & "','" &  request.form("statocivile") & "','" &  request.form("prefcell") & "','" &  request.form("numcell") & "','" &  request.form("mostracell") & "','" &  request.form("ip") & "','" &  request.form("data") & "')" 
    		else
    			MM_editQuery = "insert into TblIscritto (User,Pass,Nome,Cognome,Mail,ICQ,MSN,Citta,Sesso,StatoCivile,RegIP,DataIscrizione) values ('" & request.form("username") & "','" & request.form("password") &  "','" & request.form("nome") & "','" &  request.form("cognome") & "','" &  request.form("email") & "','" &  request.form("icq") & "','" &  request.form("msn") & "','" &  request.form("citta") & "','" &  request.form("sesso") & "','" &  request.form("statocivile") & "','" &  request.form("ip") & "','" &  request.form("data") & "')" 
    		end if
    	end if
    end if
    
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
        MM_editCmd.ActiveConnection = MM_editConnection
        MM_editCmd.CommandText = MM_editQuery
        MM_editCmd.Execute
        MM_editCmd.ActiveConnection.Close
    %>
    
    <%
    Dim rsIscritto
    Set rsIscritto = Server.CreateObject("ADODB.Recordset")
    rsIscritto.ActiveConnection = MM_conn_STRING
    rsIscritto.Source = "SELECT IDIscritto, Sesso FROM TblIscritto WHERE Mail = '" & request.Form("email") & "'"
    rsIscritto.CursorType = 0
    rsIscritto.CursorLocation = 2
    rsIscritto.LockType = 1
    rsIscritto.Open()
    
    link = rsIscritto("IDIScritto")
    if rsIscritto("Sesso") = "F" then
    sex = "a"
    else
    sex = "o"
    end if
    
    
    rsIscritto.Close()
    Set rsIscritto = Nothing
    
    ' mando la mail coi dati prendendo user e pw dalla form appena inviata
    Dim miaMail
    Set miaMail = CreateObject("CDONTS.NewMail") 
    
    		miaMail.From = "info@menesbatto.com"
    		miaMail.To = request.Form("email")
    		miaMail.Subject = "menesbatto.com - Iscrizione al sito"
    		miaMail.BodyFormat = 0 
    		miaMail.MailFormat = 0 
    		miaMail.Body = "testo della mail (omesso per evitar inutile spazio"
    		miaMail.Send 
    
    Set miaMail = Nothing
    
    end if
    %>
    riassumendo:
    controlla se i dati inseriti sono validi, in caso negativo la pagina ha un refresh con un historyback, in caso positivo fa un check se esiste già un rs con quella user o mail e se esiste va indietro nuovamente, altirmenti procede facendo l'insert, facendo una select con la mail appena inserita da form e mandando al relativo iscritto la mail di conferma col link poi da confermare per attivare la mail

  4. #4
    ho capito bene quello che faceva anche prima...ma la mia risposta non cambia, i dati che inserisci nel db sono gli stessi che vuoi inviare via mail...usa i request.form anche per la mail...mica vanno a male dopo che li usi una volta.

    al massimo per leggibilità mettili in una varibile
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  5. #5
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    il punto cruciale è che nella mail di conferma iscrizione c'e' un link con l'IDIscritto che mi serve .. sul quale dovranno clikkare per confermare e attivare l'iscrizione!!!

    se non recupero questo dato dal db .. quindi tramite la mail che e' univoca ... come gli dico l'id? :P

  6. #6
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    in particolare l'errore che da è:

    ADODB.Field error '800a0bcd'

    Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

    /iscr_check.asp, line 202
    che si riferisce alla select appunto dell'ultimo rs inserito
    considerando che dopo che ho controllato, i dati a db li ha inseriti, l'unica e' che il db prima di aggiornarsi ci mette un piccolo lasso di tempo .. ma in quel lasso fa la select e ovviemtne non trovo i dati a db inseriti

  7. #7
    boh vabbeh...

    per ritardare la pagina potresti mettere un ciclo vuoto da 0 a 1000000 dovrebbe bastare...

    codice:
    for i = 0 to 1000000
    next
    se no aumenta il limite massimo
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

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.