• User

    Estrarre record Db Access con Asp Classico

    Buonasera forum, poco esperto sono alle prese con una pagina asp che è un motore di ricerca del sito.
    Nel tentativo di migliorarla, sono diversi le cose che ho in mente, ho aggiunto una colonna per creare un filtro e messo il codice corrispondente <%=rsSearch("categoria_notizia")%> che mi estrae solo un valore, il primo.
    Certo di poter contare sul vostro supporto posto il codice della pagina risultati.asp, l'altra cerca.asp contiene solo il form.
    Chissà se sono stato chiaro, grazie.

    <%Dim srch,currentpage,total,RecordsPerPage,pages,rs1,rs2,u
    currentpage = Request.QueryString("currentpage")
    IF currentpage ="" OR currentpage < 1 Then
    currentpage = 1
    END IF
    srch = Request.QueryString("srch")
    RecordsPerPage = 10
    %>

    <%
    Dim Connect, dbconn
    Connect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/mdb-database/news.mdb")
    Set dbconn=Server.CreateObject("ADODB.Connection")
    dbconn.open Connect
    %>

    <%
    Dim sqlcerca,rsSearch
    sqlcerca = "SELECT * FROM prodotti WHERE notizia_breve Like '%" & srch & "%' ORDER BY ID DESC"
    Set rsSearch = Server.CreateObject("ADODB.Recordset")
    rsSearch.Open sqlcerca, dbconn, 3, 3
    IF srch = "" Then
    total = "0"
    ELSE
    total = rsSearch.RecordCount
    END IF
    %>

    <table>
    <tr>
    <td>filtra i risultati<%=rsSearch("categoria_notizia")%><br></td>
    <td>
    <table>
    <tr>
    <td colspan="7">Hai cercato :<b> <i>"<%=srch%>" </i> </b>. La ricerca ha prodotto<b> <%=total%>
    </b>risultati<br> </font></td>
    </tr>
    </table>
    </div>
    <%
    pages = int(total/RecordsPerPage)
    IF (total MOD RecordsPerPage) <> "0" Then
    pages = pages + 1
    END IF
    rs2 = int(currentpage*RecordsPerPage)
    rs1 = int(rs2-RecordsPerPage+1)
    %>

    <table width="800">
    <tr>
    <td>Risultati <%=rs1%> di <%IF int(currentpage) = int(pages) Then%><%=total%><%ELSE%><%=rs2%> <%END IF%></td>
    <td>
    <%IF currentpage = "1" Then%>INDIETRO<%ELSE%><a href="?srch=<%=srch%>&currentpage=<%=currentpage-1%>">INDIETRO</a><%END IF%> | Pagina <%=currentpage%> di <%=pages%> | <%IF int(currentpage) < int(pages) Then%><a href="?srch=<%=srch%>&currentpage=<%=currentpage+1%>">AVANTI</a><%ELSE%>AVANTI<%END IF%>
    </td>
    </tr>
    </table>
    <form name="config" action="cerca_prodotto_risultati.asp" method="get">
    <table>
    <tr>
    <td>Cerca nel Sito<input type="text" name="srch" value="<%=srch%>" size="40"> <input type="submit" value="Inizia la ricerca"></td>
    </tr>
    </table>
    </form>
    <table>
    <tr>
    <td>Hai cercato : <i>"<%=srch%>" </i></td>
    <td><b>Totale dei risultati trovati: <%=total%> </b>
    </td>
    </tr>
    </table>
    <br><%IF srch = "" Then%>
    <table>
    <tr>
    <td><center><b>Non hai inserito alcuna parola chiave.</b></center></td>
    </tr>
    <%ELSE%>

    <%
    rsSearch.PageSize = RecordsPerPage
    If NOT rsSearch.EOF Then rsSearch.AbsolutePage = currentpage

    If rsSearch.EOF Then
    %>
    <tr>
    <td><center><b>Siamo spiacenti, non siamo in grado di trovare i risultati di ricerca per qualsiasi <i>"<%=srch%>"</i>.</b></center></td>
    </tr>
    </table>

    <%Else
    For u=1 to RecordsPerPage
    IF rsSearch.EOF Then Exit For%>
    <table>
    <tr>
    <td><br><%=rsSearch("titolo_news")%><br><%=Left(descrizione,255)%></td>
    </tr>

    <% rsSearch.movenext
    Next%>

    </table>
    </table>
    </td>
    </tr>
    </table>

    </div>

    <%END IF%>
    <%END IF%>


  • User

    forse sono sulla buona strada:
    <%

    Do While Not rsSearch.Eof
    Response.Write rsSearch("categoria_notizia")&"<br>"
    rsSearch.MoveNext
    Loop

    %>

    però scorrendo il codice: La ricerca ha prodotto<b> <%=total%> risultati

    la successiva risposta è : Siamo spiacenti, non siamo in grado di trovare i risultati di ricerca per qualsiasi "accordo".

    come posso risolvere?


  • Moderatore

    Ciao brontolone, nel DB news.mdb, nella tabella prodotti, esistono record che nella colonna notizia_breve hanno la parola "accordo"?


  • User

    Ciao artcava, grazie per la risposta.
    Si, ci sono 46 record


  • User

    Buonasera in assenza di risposte, ahimé, forse è il caso di pensare che non ho saputo spiegare cosa vorrei ottenere dalla pagina. Ci riprovo!
    La pagina con il codice postato estrae nel ciclo i risultati richiesti.:

    <%Else
    For u=1 to RecordsPerPage
    IF rsSearch.EOF Then Exit For%>

    <%=rsSearch("titolo_news")%><br><%=Left(de scrizione,255)%>

    <% rsSearch.movenext
    Next%>

    Se all?interno dello stesso chiedo di estrarre la categoria delle notizie con : <%=rsSearch("categoria_notizia")%> la pagina risponde e ottengo il risultato richiesto.
    Se la stessa porzione la metto fuori dal ciclo in unaltra colonna, mi estrae solo il primo risultato. Io, invece, vorrei ottenere al di fuori del ciclo i risultati univoci delle categorie del tipo:

    accordi (3)
    comunicati stampa (5)
    verbali (10)
    rinnovi (7)

    in modo da ottenere un filtro sulla ricerca dei risultati che spesso sono troppi e simili.
    Spero, questa volta, di aver chiarito bene il concetto.


  • User

    me la suono e me la canto da solo, posto come ottengo i risultato:
    <%
    dim ctgnotiziaRS
    Set ctgnotiziaRS = Server.CreateObject("ADODB.Recordset")
    ctgnotiziaRS.Open sqlcerca, cn, 3, 3
    Do While Not ctgnotiziaRS.EOF
    %>
    <%=ctgnotiziaRS("categoria_notizia")%><br>
    <%
    ctgnotiziaRS.movenext
    loop
    ctgnotiziaRS.close
    set ctgnotiziaRS=Nothing
    %>

    manca soltanto il modot di trovare il numero dei record che mi restituisce:
    <%=ctgnotiziaRS("categoria_notizia")%> (????) <br>

    qualcuno può aiutarmi?