• User

    ASP+SQL SERVER2005: Problema con funzione COUNT

    Salve a tutti ragazzi,
    sto cercando di fare una funzione di controllo per l'area registrazione di un sito che verifica la presenza o meno dell'username nel db.
    Girivagando in rete sono riuscito a mettere su queste righe che però non funzionano: sia che l'username sia presente o non presente nel db mi appare sempre il messaggio "username già utilizzato".
    Qualcuno sa dirmi dove sta l'errore?
    Grazie a tutti anticipatamente

    
    <!--#include file="../script/connection.asp"-->
    
    user = request.Form("user")
        
    query_user = "SELECT Count(USERN) AS quanti FROM TBL_ACCESSO WHERE USERN="+user+""
    
    set rs_user("quanti") = conn.execute(query_user)
    
    if rs_user("quanti") > 0 then response.write ("username già utilizzato") else response.Write("username disponibile") end if
    
    

  • ModSenior

    E se provi a fare il rs.GetRows(2,0)?
    Tipo...
    query_user = "SELECT USERN FROM TBL_ACCESSO WHERE USERN="+user+""
    rs.Open query, conn
    righe=rs.GetRows(2,0)
    if righe>0 .....


  • User

    Grazie per la risposta innanzitutto.

    Ho provato così ma niente

    
    query_user = "SELECT USERN FROM TBL_ACCESSO WHERE USERN="+user+""
    rs.Open query_user,conn
    righe=rs.GetRows(2,0)
    response.Write righe()
    if righe > 0 then response.write "<p>Siamo spiacenti, ma l'username da te scelto è già utilizzato da un altro utente</p>" else response.Write("<p>Username disponibile</p>") end if
    
    ```Mi da in qualsiasi caso "username disponibile". Oltretutto come puoi vedere, ho provato a stampare l'array righe ma non mi scrive nulla....
    
    Dov'è che sbaglio????
    Grazie

  • ModSenior

    Ma i concatenamenti in ASP non si facevano con &?
    Se fai response.write di query_user cosa ti torna.


  • User

    Si usa spesso & ma io ho imparato a fare qualcosina scopiazzando il codice di un amico che usa + e funziona sempre tutto (non questa cosa qua ma non penso dipenda da questo....)

    se scrivo la query mi appare questo:

    SELECT USERN FROM TBL_ACCESSO WHERE USERN=luca

    il chè dovrebbe essere giusto in quanto sto testando il tutto usando come username luca......

    Alla fine non è che chi sa quale cosa complicata sia, però non riesco a venirne fuori......


  • User

    Dunque ho risolto così

    
    strSQL = "select COUNT(usern) AS totaleRecord FROM TBL_ACCESSO WHERE usern LIKE '%"&user&"%'" 
    Set Rs = Server.createObject("ADODB.Recordset") 
    Rs.Open strSQL, Conn
    Response.Write("<p>Nel database sono presenti "&Rs("totaleRecord")&" record</p>")
    if Rs("totaleRecord") > 0 then response.write "<p>Siamo spiacenti, ma l'username da te scelto è già utilizzato da un altro utente</p>" else response.Write("<p>Username disponibile</p>") end if
    
    

    Credo comunque di avere capito il problema: in pratica per fare il controllo voleva anke l'operatore LIKE nella query. Infatti con LIKE si è messo a funzionere se lo tolgo non funziona più.
    Spero di aver risolto, casomai mi rifaccio vivo.....

    Nel frattempo comunque ti ringrazio tantissimo per l'aiuto....


  • ModSenior

    Se scriveva cosi...
    SELECT USERN FROM TBL_ACCESSO WHERE USERN=luca
    Forse voleva una stringa e quindi che venisse scritto cosi...
    SELECT USERN FROM TBL_ACCESSO WHERE USERN='luca'


  • User

    Beh in effetti è giusto quanto dici, infatti dopo il LIKE sta scritto '%"&user&"%', in pratica mi chiede la stringa.

    Sai, l'occhio da NON programmatore spesso tradisce su questi piccoli ma fondamentali dettagli....:gtsad:

    L'importante comunque è capire la logica delle cose: una volta capita quella sono riuscito a tirare fuori da un controllo dell'username in una sola tabella, un controllo incorciato tra username e partita iva in 3 tabelle totali.
    Ora passo alla parte delle query di inserimento, in quanto se i controlli vanno a buon fine mi deve inserire anche dei dati in queste tre tabelle.
    Per ora ti ringrazio nuovamente dell'aiuto; se avrò problemi con il discorso delle query di inserimento (cosa probabile) ti distruberò ancora......:D


  • ModSenior

    Ok alla prossima allora... 😄


  • User Attivo

    Si l'errore stava nel fatto che mancavano gli apici.
    Devi togliere il like perchè così inneschi dei falsi positivi.
    Es. nel db esiste gia [email][email protected][/email]
    Se prova a registrarsi [email][email protected][/email] il sistema, con il like, ti dice che l'username è gia occupato perchè cerca mauro all'interno di una stringa e non una corrispondenza esatta della stessa


  • ModSenior

    Vero concordo, avevo guardato il problema ma non il contesto in cui veniva usato.
    Ottima osservazione e grazie per la mia svista.


  • User Attivo

    @marcocarrieri said:

    Ottima osservazione e grazie per la mia svista.
    Figurati 😉


  • User

    Grazie ad entrambi per lo "sviluppo" della discussione....
    In effetti appena ho due minuti provvederò a sistemare questa cosa che mi sembra di notevole importanza per il buon funzionamentro di un sito.