Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150

    Database : Query, apertura e chiusura

    Ho scritto la seguente parte di codice:

    Codice PHP:
    ecc... ecc... 
    <%
          
               ELSE
               
                  
    Set objConn Server.CreateObject("ADODB.Connection")
                  
    objConn.Open db_path
                  
                  
    ' Verifico che l' username digitato non esista già
                  Set objRs 
    Server.CreateObject("ADODB.Recordset")
                  
    SQL "SELECT * FROM members WHERE username = '" Request.Form("user") & "'"
                  
    objRs.Open SQLdb_path
             
                  
    IF objRs.eof THEN  ' Se non esiste controllo che non esista l'indirizzo email

                     Set objRs 
    Server.CreateObject("ADODB.Recordset")
                     
    SQL "SELECT * FROM members WHERE email = '" Request.Form("email") & "'"
                     
    objRs.Open SQLdb_path

                     
    IF objRs.eof THEN ' Se non esiste neanche l' indirizzo emailaggiungo l' utente 
                      
                        ' 
    Controllo che nel form non sia stato inserito codice html
                        strurl 
    replace(replace(Request.Form("url"),"<","%3C"),"'","''")
                        
    strtitolo replace(replace(Request.Form("titolo"),"<","%3C"),"'","''")
                        
    strdescrizione replace(replace(Request.Form("descrizione"),"<","%3C"),"'","''")
                        
    strurlbanner replace(replace(Request.Form("urlbanner"),"<","%3C"),"'","''")
                        
    stremail replace(replace(Request.Form("email"),"<","%3C"),"'","''")
                        
    struser replace(replace(Request.Form("user"),"<","%3C"),"'","''")
                        
    strpass replace(replace(Request.Form("pass"),"<","%3C"),"'","''")
                
                        
    ' Inserisco i dati nel database
                        Set objRs = Server.CreateObject("ADODB.Recordset")
                        SQL = "INSERT INTO members (username, password, email, url, urlbanner, titolosito, descrizionesito) VALUES ('" & struser & "','" & strpass & "','" & stremail & "','" & strurl & "','" & strurlbanner & "','" & strtitolo & "','" & strdescrizione & "')"
                        objRs.Open SQL, db_path
                
                        ' 
    Recuperi i dati dell' utente che si è appena iscritto
                        Set objRs = Server.CreateObject("ADODB.Recordset")
                        SQL = "SELECT * FROM members WHERE username = '" & Request.Form("
    user") & "' AND password = '" & Request.Form("pass") & "'"
                        objRs.Open SQL, db_path
           
                        ' 
    Crea sessione
                        Session
    ("granted") = "true"

                        ' Scrivi i cookie
                        response.cookies("top")("username") = Request.Form("user")
                        response.cookies("top")("password") = Request.Form("pass")
                        response.cookies("top").Expires = DateAdd("y", 1, Now)
                        response.cookies("top").Path = "/"
        
                        Response.Redirect("code.asp?idsito=" & objRs("id") & "")
                        
                     ELSE
                     %>   
                         <center><span class="msg">Indirizzo Email già presente nel database
    [url="javascript:history.back(1)"]Torna Indietro e sceglilo un altro[/url]</span></center>
                     <%
                     END IF
                     
                  ELSE
               %>
                    <center><span class="msg">Username già in uso
    [url="javascript:history.back(1)"]Torna Indietro e sceglilo un altro[/url]</span></center>

    ecc.. ecc.. 

    Nell' header della pagina è poi presente:

    <%@ LANGUAGE="VBSCRIPT" %>
    <% db_path = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/top.mdb") %>


    Quello che chiedo è il seguente:

    1) Nella parte di codice sopra, ad esempio, ci sono due if nidificati con le seguenti query:

    Set objRs = Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT * FROM members WHERE username = '" & Request.Form("user") & "'"
    objRs.Open SQL, db_path


    Set objRs = Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT * FROM members WHERE email = '" & Request.Form("email") & "'"
    objRs.Open SQL, db_path

    Quando le faccio, ogni volta devo iniziare con
    Set objRs = Server.CreateObject("ADODB.Recordset") ?

    Non basta una sola volta e poi posso fare tutte le

    SQL = "bla bla bla"
    objRs.Open SQL, db_path

    che voglio? Giusto per saperlo, in questo caso funziona ma potrebbe essere un caso.


    2) Il ObjRs lo posso chiamare come mi pare? Non si dovrebbe cambiare ad ogni query successiva per non perdere l'informazione precedente ???

    3) In questo caso ho aperto ObjRs e objConn.Open db_path, a fondo pagina li dovrei chiudere così :

    Set objRs = Nothing
    objConn.Close
    set objConn = nothing

    ??

    C'è qualcosa in più o qualcosa in meno?? Perchè mi da il seguente errore:

    Microsoft VBScript runtime error '800a01a8'
    Object required: 'objConn'

    sulla riga objConn.Close ??? Non ci va il close ???????

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    1) Con Set rs.... istanzi l'oggetto, con Open apri il recordset e con Close lo chiudi, con Set rs = nothing distruggi l'oggetto.
    Fino a quando non distruggi l'oggetto puoi fare diverse Open seguite dalle rispettive Close!

    2) No, all'oggetto devi necessariamente cambiare nome solo se annidati uno dentro l'altro altrimenti possono chiamarsi allo stesso modo.

    3) La chiusura degli oggetti deve avvenire appena non siano più necessari e comunque SEMPRE prima di effettuare redirect ad altre pagine.
    Quindi nel tuo esempio prima dei redirect devi chiudere tutti gli oggetti aperti.

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150
    Grazie per il chiarimento

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.