Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    problema INSERT INTO fckeditor asp

    Buongiorno, sto realizzando un'area riservata attraverso cui poter modificare dei contenuti in una pagina .asp.
    Riscontro un problema nella pagina che dovrebbe fare l'inserimento dei dati su db access.

    Questo è il codice della pagina di inserimento:

    codice:
    <form id="form1" name="form1" method="post" action="invia_evento_it.asp">
    <input name="tempo" type="text" id="tempo" />
    <%
    Dim conn
    Set conn =  Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbcamm.mdb")
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open "SELECT * FROM eventi_it", conn
    
    Dim oFCKeditor
    Set oFCKeditor = New FCKeditor
    oFCKeditor.BasePath = "../FCKeditor/FCKeditor/"
    oFCKeditor.Width = "540"
    oFCKeditor.Value = ""
    oFCKeditor.Create "FCKeditor1"
    %>
    <input type="submit" name="Submit" value="Inserisci evento" />  
    </form>
    <%RS.Close 
    Set RS = Nothing 
    conn.Close 
    Set conn=Nothing 
    %>
    Questo invece il codice che dovrebbe processare l'inserimento dei dati in una tab su db access:
    codice:
    <%
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbcamm.mdb")
    sql = "INSERT INTO eventi_it (tempo,desc) VALUES ('"&request.Form("tempo")&"','"&request.Form("FCKeditor1")&"')"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    
    Conn.Close 
    
    response.redirect("i_evento_it.asp")
    %>
    Questo invece è l'errore che genera la pagina che processa i dati:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi nell'istruzione INSERT INTO.

    So che l'errore potrebbe essere nel nome del campo che nella tabella su access è "desc" ma da form il campo di testo generato con fckeditor si chiama FCKeditor1.
    Forse dovrei utilizzare un "replace" prima di fare la INSERT in cui dichiaro che il campo desc da form è stato rimpiazzato da FCKeditor1 ma sinceramente non saprei come inserirlo nel codice o se è corretto fare in questo modo.

    Una cosa del tipo:
    codice:
     
    desc = replace((request.Form("FCKeditor1"))
    Ringrazio chiunque abbia tempo e voglia di darmi una mano.

  2. #2
    Il nome "desc" è anche una parola riservata del linguaggio SQL (vedi qui), se non puoi cambiare il nome del campo nella tabella usa le parentesi quadrate per identificare il campo nella query:
    codice:
    INSERT INTO eventi_it (tempo,[desc]) VALUES
    Chi non cerca trova.

  3. #3
    Ciao,

    (noi dovremmo già conoscerci...)

    cmq, il replace fatto in quel modo non va bene, e come diceva tas, desc è una parola riservata che in genere si usa per ordinare i record (asc e desc per ordini ascendenti e descrescenti).

    La funzione replace invece va usata mettendo nella parentesi tre elementi replace(stringadacontrollare, testodatrovare, testodasostituire), e serve per fare una sostituzione nel contenuto della variabile.

    Cmq se hai bisogno di una mano con ASP, sai dove trovarmi (dovresti avere i miei contatti diretti)

    Ciao
    Ale

  4. #4
    ciao ragazzi, Alessio, e grazie per i suggerimenti....

    Ho cambiato il nome del campo con "descrizione".

    Riscontro però ora un altro problema relativo all'FCKeditor nel senso che se nell'inserimento del testo non dò alcuna formattazione va tutto liscio. Se invece dò formattazione tipo corsivo e colore mi da il seguente errore:

    codice:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    
    [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query ''<span class="txt">C</span>ollettiva finalisti del <font color="#950101"><span class="style2">5&deg; Concorso Internazionale di Arti Visive Em'Arte 2008</span></font>'.
    
    /admin/invia_evento_it.asp, line 11
    La pagina che processa i dati è:
    codice:
    <%
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbcamm.mdb")
    sql = "INSERT INTO eventi_it (tempo,descrizione) VALUES ('"&request.Form("tempo")&"','"&request.Form("FCKeditor1")&"')"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    
    Conn.Close 
    
    response.redirect("i_evento_it.asp")
    %>
    La riga 11 è: rs.Open sql, conn, 3, 3 ma non credo sia lì il problema...

    Quale potrebbe essere il problema?

    grazie ancora

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La INSERT non produce un recordset, la devi eseguire...
    Ad ogni modo fatti stampare quello che cerchi di eseguire...
    codice:
    <%
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbcamm.mdb")
    sql = "INSERT INTO eventi_it (tempo,descrizione) VALUES ('"&request.Form("tempo")&"','"&request.Form("FCKeditor1")&"')"
    response.write sql: response.end
    conn.Execute(sql)
    response.redirect("i_evento_it.asp")
    %>
    Roby

  6. #6
    Roby, grazie per l'interessamento....

    Questo è quello che mi stampa:
    codice:
    INSERT INTO eventi_it (tempo,descrizione) VALUES ('01/08/2010','Collettiva finalisti del 5° Concorso Internazionale di Arti Visive Em'Arte 2008, Museo dell'Alabastro, Castellina Marittima (Pisa)')
    ed è giusto ma il codice che ho indicato prima mi dà errore...

  7. #7
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi fare la REPLACE()
    codice:
    <%
    descrizione = trim(request.Form("FCKeditor1"))
    descrizione = replace(descrizione ,"'","''")
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbcamm.mdb")
    sql = "INSERT INTO eventi_it (tempo,descrizione) VALUES ('"&request.Form("tempo")&"','"& descrizione &"')"
    conn.Execute(sql)
    response.redirect("i_evento_it.asp")
    %>
    Roby

  8. #8
    ecco, era proprio quello che avevo indicato nella mia prima domanda, non conoscendo però la sintassi corretta ci ero arrivato solo logicamente...

    ovviamente ora funziona!

    grazie mille roby!!!

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.