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

    Problema con database access

    Ho la necessità di creare un pannello di amministrazione sul mio sito in maniera da mettere alcuni amici nelle condizioni di aggiornarlo quotidianamente nonostante non siano webmaster e non abbiano accesso al mio dominio.
    Ciò che mi serve è aggiornare, soprattutto, le news.
    Ho trovato diversi codici in rete e tra questi uno che è proprio ciò che volevo. Però esso ha un solo inconveniente, al quale inizialmente non avevo pensato: non dà la possibilità di editare e cancellare.
    Per far ciò sono costretto a scaricare ogni volta il database, correggere manualmente e reinviare dal mio pc in ftp.

    Come potete ben capire questo mi comporta spesso dei problemi legati al fatto che chi inserisce le news non sa formattare il testo e spesso causa dei danni al layout della pagina.

    Ho cercato quindi un altro codice tra cui uno che fa all'uopo. Purtroppo però c'è qualcosa che non va.

    Posso effettuare il login, vedere le notizie che sono inserite di default sul database, ma quando provo ad editare, cancellare o ad inserire una nuova notizia mi restituisce il seguente errore:

    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Microsoft Access Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

    /news/config.inc, line 34


    Questo il file config.inc:

    <% Response.Buffer = True %>
    <%
    Dim Conn, Rs, Sql, DbPath, ID, Target
    Dim Data, Titolo, Testo
    Dim Action, Password, LoginForm
    ID=Request("ID")
    Target=Request.QueryString("target")
    Data=Request.Form("data")
    Titolo=Request.Form("titolo")
    Testo=Request.Form("testo")
    Testo=Replace(Testo, vbCrlf, "
    " & vbCrLf, 1, -1, 1)
    Action=Request.Form("action")
    Password=Request.Form("pwd")
    LoginForm = "<center>"
    LoginForm = LoginForm & " <form name=""Login"" method=""post"" action=""default.asp?ID=Login&Target=" & Target &""">"
    LoginForm = LoginForm & " <input type=""hidden"" name=""action"" value=""login"">"
    LoginForm = LoginForm & " Nome utente:
    "
    LoginForm = LoginForm & " <input type=""password"" name=""pwd"">
    "
    LoginForm = LoginForm & " <input type=""submit"" value="" Login "">"
    LoginForm = LoginForm & " </form>"
    LoginForm = LoginForm & "</center>"
    If Target="" Then
    Target="admin.asp"
    End If

    Function OpenDb(Location)
    DbPath=""
    If Location=1 Then
    DbPath="./mdb-database/news"
    ElseIf Location=2 Then
    DbPath="../mdb-database/news"
    End If
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(DbPath & ".mdb")
    Set Rs = Server.CreateObject("ADODB.Recordset")
    End Function
    Function CloseDb()
    On Error Resume Next
    Rs.Close
    Set Rs = Nothing
    Conn.Close
    Set Conn = Nothing
    Response.End
    End Function
    %>


    Vi prego di darmi una mano al più presto.

    Grazie.

  2. #2
    La linea 34?
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  3. #3
    Probabilmente non hai creato il file news.mdb all'interno della cartella mdb-database.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  4. #4

    Problema quasi risolto...

    Durante la notte ho riflettuto e stamattina sono venuto a capo dell'errore: praticamente il collegamento al database lo voleva così: /mdb-database/news e non ../mdb-database/news, anche se in questo modo il percorso non è esatto. Ma funziona!

    Ora funziona tutto tranne una cosa:

    quando clicco sulla notizia a piè di pagina compaiono le scritte coi collegamenti ipertestuali "<<precedente" e "successiva>>". Ebbene il "<<precedente" funziona fino a quando non arrivo alla prima pagina, del successivo nessuna traccia.
    L'errore che mi visualizza quando arrivo alla prima news cliccando su <<precedente è il seguente:

    error '80020009'
    /news/news.asp, line 49


    Questo il codice della pagina "news" (in verde la linea 49:


    <% Call OpenDb(1) %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><head>
    <title>News</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <style>
    Body {
    Background-Color: #FFFFFF;
    Font-Family: Verdana;
    Font-Size: 8pt;
    }
    a {
    Font-Family: Verdana;
    <%If ID="" Then Response.Write "Color: #000000;"%>
    <%If ID<>"" Then Response.Write "Color: #FFFFFF;"%>
    Text-Decoration: none;
    }
    a:hover {
    Font-Family: Verdana;
    <%If ID="" Then Response.Write "Color: #000000;"%>
    <%If ID<>"" Then Response.Write "Color: #FFFFFF;"%>
    Text-Decoration: underline;
    }
    </style>
    <body>
    <div align="center">
    <table width="50%" cellpadding="1" cellspacing="1" bgcolor="#000000">
    <tr>
    <td align="center"><font color="#FFFFFF">:: Ultime Novità ::</font></td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">
    <table width="100%">
    <tr>
    <td>
    <%
    If (ID="") Then
    Sql = "SELECT * FROM news ORDER BY ID ASC;"
    Rs.Open Sql, Conn
    Do While NOT Rs.EOF
    Response.Write "[*]<div align=""left"">" & Rs("Date") & " - " & Rs("Title") &"</div>"
    Rs.MoveNext
    Loop
    Else
    Set News = Conn.Execute("SELECT COUNT(ID) AS tot FROM news")
    Sql = "SELECT * FROM news WHERE ID = " & ID
    Rs.Open Sql, Conn
    Response.Write "<center>" & Rs("Date") & " - " & Rs("Title") & "</center>"
    Response.Write "
    <div align=""justify"">" & Rs("Text") & "</div>"
    End If
    %>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    <%
    If (ID<>"") Then
    %>
    <tr>
    <td bgcolor="#000000"><table width="100%" cellpadding="0" cellspacing="0" bgcolor="#000000">
    <tr>
    <td align="left"><font color="#FFFFFF">
    <%
    If (ID-1)<>0 Then
    Response.Write " &laquo; &laquo; Precedente"
    End If
    %>
    </font></td>
    <td align="right"><font color="#FFFFFF">
    <%
    If (ID+1)<=News("tot") Then
    Response.Write "Successiva &raquo; &raquo; "
    End If
    %>
    </font></td>
    </tr>
    </table>
    </td>
    </tr>
    <%
    End if
    %>
    </table>


    <font color="#000000">Pannello di amministrazione</font></div>
    </body>
    </html>
    <% Call CloseDb() %>


    Un saluto a tutti e grazie per l'aiuto.

  5. #5
    E' probabile che l'errore scaturisca dalla colonna "Date" del Db, in quanto essa potrebbe essere una parola riservata dell'SQL, prova a rinominare quella colonna e ovviamente, a riadattare la pagina.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  6. #6

    Ho capito... Ma ho un altro problema

    No, il problema è un altro. Il codice è fatto per un database con id che parte da 1, ma sballa se qualche messaggio viene cancellato e la numerazione non parte più da 1.
    Ho rinunciato perchè era un casino e ho utilizzato un altro sistema.

    Invece ho notato che non funziona la funzione edit. Quando edito una notizia dovrebbe darmi "notizia modificata con successo". E invece non solo non mi dà il messaggio di conferma ma non mi modifica nulla.

    Di seguito il codice:


    <% If Session("admin")<>"si" Then Response.Redirect "./?ID=Login&Target=./edit.asp" %>
    <% Call OpenDb(2) %>
    <head>
    <title>News - Admin</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>

    <style>
    Body {
    Background-Color: #FFFFFF;
    Font-Family: Verdana;
    Font-Size: 8pt;
    }
    Input, Textarea {
    Color: #000000;
    Font-Size: 7pt;
    Font-Family: Verdana;
    }
    a {
    Font-Family: Verdana;
    Color: #000000;
    Text-Decoration: none;
    }
    a:hover {
    Font-Family: Verdana;
    Color: #000000;
    Text-Decoration: underline;
    }
    </style>
    <body>
    <div align="center">
    <table width="50%" cellpadding="1" cellspacing="1" bgcolor="#000000">
    <tr>
    <td align="center"><font color="#FFFFFF">:: Admin - Modifica ::</font></td>
    </tr>
    <tr>
    <td height="29" bgcolor="#FFFFFF">
    <table width="100%">
    <tr>
    <td align="center">
    <%
    If ID="" AND Action="" Then
    Sql = "SELECT * FROM news ORDER BY ID ASC;"
    Rs.Open Sql, Conn
    Do While NOT Rs.EOF
    Response.Write "[*]<div align=""left"">" & Rs("Datum") & " - " & Rs("Title") &"</div>"
    Rs.MoveNext
    Loop
    ElseIf ID<>"" AND Action="" Then
    Sql = "SELECT * FROM news WHERE ID = " & ID
    Rs.Open Sql, Conn
    %>
    <form method="post" action="edit.asp">
    <input type="hidden" name="action" value="modifica">
    <input type="hidden" name="ID" value="<%=ID%>">
    Titolo:
    <input type="text" name="titolo" size="72" value="<%=Rs("Title")%>">

    Messaggio:
    <textarea name="testo" cols="70" rows="20"><%=Rs("Text")%></textarea>



    <input type="submit" value=" Modifica ">
    </form>
    <%
    ElseIf ID="" AND Action="modifica" Then
    Sql = "UPDATE news SET Title = '" & Titolo & "', "
    Sql = Sql & " Text = '" & Testo & "'"
    Sql = Sql & " WHERE ID = " & ID
    Rs.Open Sql, Conn
    Response.Write "La news è stata modifica con successo!"
    End If
    %>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>


    Torna indietro</div>
    </body>
    </html>
    <% Call CloseDb() %>

  7. #7
    Prova a modificare questa riga da così:

    codice:
    <form method="post" action="edit.asp">
    a così:

    codice:
    <form method="post" action="edit.asp?modifica=yes">
    E quest'altra riga da così:

    codice:
    ElseIf ID="" AND Action="modifica" Then
    a così:

    codice:
    ElseIf ID="" AND request.querystring("modifica") <> "" Then
    Vedi se funziona.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  8. #8

    Niente, rimane uguale

    Ho provato a cambiare le stringhe, ma il risultato è lo stesso. Mi viene il sospetto che il problema abbia a che fare coi permessi di scrittura. Purtroppo con aruba non è possibile modificarli. Spero che non c'entri nulla. Al limite cosa mi consigli? Conosci qualche altro script che fa al caso mio?

  9. #9
    Su Aruba, per i permessi, devi contattare loro.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.